Merge pie-platform-release to aosp-master - DO NOT MERGE

Change-Id: Id299704cd235ff8d89bcbfe6e599bb23ede9ff56
diff --git a/.gitignore b/.gitignore
index b5db9d8..a47f568 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 config.mk
 objs/vc2010/
+build
diff --git a/Android.bp b/Android.bp
index 4b6a34e..c78ecb5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,5 +1,6 @@
 cc_library_shared {
     name: "libft2",
+    host_supported: true,
 
     // compile in ARM mode, since the glyph loader/renderer is a hotspot
     // when loading complex pages in the browser
@@ -11,31 +12,30 @@
     },
 
     srcs: [
+        "src/autofit/autofit.c",
+        "src/base/ftbase.c",
         "src/base/ftbbox.c",
         "src/base/ftbitmap.c",
-        "src/base/ftfntfmt.c",
+        "src/base/ftdebug.c",
         "src/base/ftfstype.c",
+        "src/base/ftgasp.c",
         "src/base/ftglyph.c",
-        "src/base/ftlcdfil.c",
+        "src/base/ftinit.c",
+        "src/base/ftmm.c",
         "src/base/ftstroke.c",
         "src/base/fttype1.c",
-        "src/base/ftbase.c",
         "src/base/ftsystem.c",
-        "src/base/ftinit.c",
-        "src/base/ftgasp.c",
-        "src/base/ftmm.c",
+        "src/cid/type1cid.c",
+        "src/cff/cff.c",
         "src/gzip/ftgzip.c",
+        "src/psaux/psaux.c",
+        "src/pshinter/pshinter.c",
+        "src/psnames/psnames.c",
         "src/raster/raster.c",
         "src/sfnt/sfnt.c",
         "src/smooth/smooth.c",
-        "src/autofit/autofit.c",
         "src/truetype/truetype.c",
-        "src/cff/cff.c",
-        "src/psnames/psnames.c",
-        "src/pshinter/pshinter.c",
-        "src/psaux/psaux.c",
         "src/type1/type1.c",
-        "src/cid/type1cid.c",
     ],
 
     export_include_dirs: ["include"],
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 83f26b9..3f58337 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,35 +12,44 @@
 # fully.
 #
 #
-# As a preliminary, create a compilation directory and change into it, for
-# example
+# The following will 1. create a build directory and 2. change into it and
+# call cmake to configure the build with default parameters as a static
+# library.
 #
-#   mkdir ~/freetype2.compiled
-#   cd ~/freetype2.compiled
-#
-# Now you can say
-#
-#   cmake <path-to-freetype2-src-dir>
-#
-# to create a Makefile that builds a static version of the library.
+#   cmake -E make_directory build
+#   cmake -E chdir build cmake ..
 #
 # For a dynamic library, use
 #
-#   cmake <path-to-freetype2-src-dir> -D BUILD_SHARED_LIBS:BOOL=true
+#   cmake -E chdir build cmake -D BUILD_SHARED_LIBS:BOOL=true ..
 #
 # For a framework on OS X, use
 #
-#   cmake <path-to-freetype2-src-dir> -D BUILD_FRAMEWORK:BOOL=true -G Xcode
-#
-# instead.
+#   cmake -E chdir build cmake -G Xcode -D BUILD_FRAMEWORK:BOOL=true ..
 #
 # For an iOS static library, use
 #
-#   cmake -D IOS_PLATFORM=OS -G Xcode <path-to-freetype2-src-dir>
+#   cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=OS ..
 #
 # or
 #
-#   cmake -D IOS_PLATFORM=SIMULATOR -G Xcode <path-to-freetype2-src-dir>
+#   cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR ..
+#
+# or
+#
+#   cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR64 ..
+#
+# Finally, build the project with:
+#
+#   cmake --build build
+#
+# Install it with
+#
+#   (sudo) cmake --build build --target install
+#
+# A binary distribution can be made with
+#
+#   cmake --build build --config Release --target package
 #
 # Please refer to the cmake manual for further options, in particular, how
 # to modify compilation and linking parameters.
@@ -59,36 +68,42 @@
 # . `CMakeLists.txt' is provided as-is since it is normally not used by the
 #   developer team.
 #
-# . If you want to disable the automatic generation of the distribution
-#   targets, add the `-D FREETYPE_NO_DIST=true' command line argument.
-#
-# . Set the `WITH_ZLIB', `WITH_BZip2', `WITH_PNG', and `WITH_HarfBuzz'
-#   CMake variables to `ON' or `OFF' to force or skip using a dependency.
+# . Set the `FT_WITH_ZLIB', `FT_WITH_BZIP2', `FT_WITH_PNG', and
+#   `FT_WITH_HARFBUZZ' CMake variables to `ON' to force using a dependency.
 #   Leave a variable undefined (which is the default) to use the dependency
-#   only if it is available.  Example:
+#   only if it is available.  Set `CMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE' to
+#   disable a dependency completely (CMake package name, so `BZip2' instead of
+#   `BZIP2'). Example:
 #
-#     cmake ... -DWITH_ZLIB=ON -DWITH_HarfBuzz=OFF ...
+#     cmake -DFT_WITH_ZLIB=ON -DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE [...]
 #
 # . Installation of FreeType can be controlled with the CMake variables
 #   `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL'
 #   (this is compatible with the same CMake variables in zlib's CMake
 #   support).
 
+# FreeType explicitly marks the API to be exported and relies on the compiler
+# to hide all other symbols. CMake supports a C_VISBILITY_PRESET property
+# starting with 2.8.12.
+cmake_minimum_required(VERSION 2.8.12)
 
-cmake_minimum_required(VERSION 2.6)
-
+if (NOT CMAKE_VERSION VERSION_LESS 3.3)
+  # Allow symbol visibility settings also on static libraries. CMake < 3.3
+  # only sets the propery on a shared library build.
+  cmake_policy(SET CMP0063 NEW)
+endif ()
 
 include(CheckIncludeFile)
 
-
 # CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which
 # configures the base build environment and references the toolchain file
 if (APPLE)
   if (DEFINED IOS_PLATFORM)
     if (NOT "${IOS_PLATFORM}" STREQUAL "OS"
-        AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR")
+        AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR"
+        AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR64")
       message(FATAL_ERROR
-        "IOS_PLATFORM must be set to either OS or SIMULATOR")
+        "IOS_PLATFORM must be set to either OS, SIMULATOR, or SIMULATOR64")
     endif ()
     if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode")
       message(AUTHOR_WARNING
@@ -116,30 +131,47 @@
 endif ()
 
 
-project(freetype)
+project(freetype C)
 
+set(VERSION_MAJOR "2")
+set(VERSION_MINOR "9")
+set(VERSION_PATCH "1")
 
-if (WIN32 AND NOT MINGW AND BUILD_SHARED_LIBS)
-  message(FATAL_ERROR "Building shared libraries on Windows needs MinGW")
-endif ()
+# SOVERSION scheme: CURRENT.AGE.REVISION
+#   If there was an incompatible interface change:
+#     Increment CURRENT. Set AGE and REVISION to 0
+#   If there was a compatible interface change:
+#     Increment AGE. Set REVISION to 0
+#   If the source code was changed, but there were no interface changes:
+#     Increment REVISION.
+set(LIBRARY_VERSION "6.16.0")
+set(LIBRARY_SOVERSION "6")
+
+# These options mean "require x and complain if not found". They'll get
+# optionally found anyway. Use `-DCMAKE_DISABLE_FIND_PACKAGE_x=TRUE` to disable
+# searching for a packge entirely (x is the CMake package name, so "BZip2"
+# instead of "BZIP2").
+option(FT_WITH_ZLIB "Use system zlib instead of internal library." OFF)
+option(FT_WITH_BZIP2 "Support bzip2 compressed fonts." OFF)
+option(FT_WITH_PNG "Support PNG compressed OpenType embedded bitmaps." OFF)
+option(FT_WITH_HARFBUZZ "Improve auto-hinting of OpenType fonts." OFF)
+
 
 # Disallow in-source builds
-if ("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
+if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
   message(FATAL_ERROR
-    "
-In-source builds are not permitted!  Make a separate folder for"
-    " building, e.g.,"
-    "
-  mkdir build; cd build; cmake .."
-    "
-Before that, remove the files created by this failed run with"
-    "
-  rm -rf CMakeCache.txt CMakeFiles")
+    "In-source builds are not permitted!  Make a separate folder for"
+    " building, e.g.,\n"
+    "  cmake -E make_directory build\n"
+    "  cmake -E chdir build cmake ..\n"
+    "Before that, remove the files created by this failed run with\n"
+    "  cmake -E remove CMakeCache.txt\n"
+    "  cmake -E remove_directory CMakeFiles")
 endif ()
 
 
 # Add local cmake modules
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/builds/cmake)
+list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/builds/cmake)
 
 
 if (BUILD_FRAMEWORK)
@@ -152,48 +184,32 @@
 endif ()
 
 
-set(VERSION_MAJOR "2")
-set(VERSION_MINOR "9")
-set(VERSION_PATCH "0")
-
-set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
-set(SHARED_LIBRARY_VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
-
-
-# Compiler definitions for building the library
-add_definitions(-DFT2_BUILD_LIBRARY)
-if (WIN32)
-  add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+# Find dependencies
+if (FT_WITH_HARFBUZZ)
+  find_package(HarfBuzz 1.3.0 REQUIRED)
+else ()
+  find_package(HarfBuzz 1.3.0)
 endif ()
 
+if (FT_WITH_PNG)
+  find_package(PNG REQUIRED)
+else ()
+  find_package(PNG)
+endif ()
 
-# Find dependencies
-foreach (d ZLIB BZip2 PNG HarfBuzz)
-  string(TOUPPER "${d}" D)
+if (FT_WITH_ZLIB)
+  find_package(ZLIB REQUIRED)
+else ()
+  find_package(ZLIB)
+endif ()
 
-  if (DEFINED WITH_${d} OR DEFINED WITH_${D})
-    if (WITH_${d} OR WITH_${D})
-      find_package(${d} QUIET REQUIRED)
-    endif ()
-  else ()
-    find_package(${d} QUIET)
-  endif ()
-
-  if (${d}_FOUND OR ${D}_FOUND)
-    message(STATUS "Building with ${d}")
-  endif ()
-endforeach ()
-
-
-message(STATUS
-  "Creating directory ${PROJECT_BINARY_DIR}/include/freetype/config")
-file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/include/freetype/config")
-
+if (FT_WITH_BZIP2)
+  find_package(BZip2 REQUIRED)
+else ()
+  find_package(BZip2)
+endif ()
 
 # Create the configuration file
-message(STATUS
-  "Creating file ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h")
-
 if (UNIX)
   check_include_file("unistd.h" HAVE_UNISTD_H)
   check_include_file("fcntl.h" HAVE_FCNTL_H)
@@ -203,38 +219,30 @@
     FTCONFIG_H)
   if (HAVE_UNISTD_H)
     string(REGEX REPLACE
-      "#undef +(HAVE_UNISTD_H)" "#define \\1"
+      "#undef +(HAVE_UNISTD_H)" "#define \\1 1"
       FTCONFIG_H "${FTCONFIG_H}")
   endif ()
   if (HAVE_FCNTL_H)
     string(REGEX REPLACE
-      "#undef +(HAVE_FCNTL_H)" "#define \\1"
+      "#undef +(HAVE_FCNTL_H)" "#define \\1 1"
       FTCONFIG_H "${FTCONFIG_H}")
   endif ()
   if (HAVE_STDINT_H)
     string(REGEX REPLACE
-      "#undef +(HAVE_STDINT_H)" "#define \\1"
+      "#undef +(HAVE_STDINT_H)" "#define \\1 1"
       FTCONFIG_H "${FTCONFIG_H}")
   endif ()
   string(REPLACE "/undef " "#undef "
     FTCONFIG_H "${FTCONFIG_H}")
-  file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new"
-    "${FTCONFIG_H}")
-else ()
+else()
   file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h"
     FTCONFIG_H)
-  file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new"
-    "${FTCONFIG_H}")
 endif ()
-execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
-  "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new"
-  "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h")
+file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h"
+  "${FTCONFIG_H}")
 
 
 # Create the options file
-message(STATUS
-  "Creating file ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h")
-
 file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h"
   FTOPTION_H)
 if (ZLIB_FOUND)
@@ -257,16 +265,8 @@
     "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1"
     FTOPTION_H "${FTOPTION_H}")
 endif ()
-file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h-new"
+file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h"
   "${FTOPTION_H}")
-execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
-  "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h-new"
-  "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h")
-
-
-# Specify library include directories
-include_directories("${PROJECT_SOURCE_DIR}/include")
-include_directories(BEFORE "${PROJECT_BINARY_DIR}/include")
 
 
 file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h")
@@ -281,13 +281,11 @@
   src/base/ftbdf.c
   src/base/ftbitmap.c
   src/base/ftcid.c
-  src/base/ftfntfmt.c
   src/base/ftfstype.c
   src/base/ftgasp.c
   src/base/ftglyph.c
   src/base/ftgxval.c
   src/base/ftinit.c
-  src/base/ftlcdfil.c
   src/base/ftmm.c
   src/base/ftotval.c
   src/base/ftpatent.c
@@ -319,25 +317,25 @@
 )
 
 if (WIN32)
-  set(BASE_SRCS ${BASE_SRCS} builds/windows/ftdebug.c)
+  enable_language(RC)
+  list(APPEND BASE_SRCS builds/windows/ftdebug.c
+                        src/base/ftver.rc)
 elseif (WINCE)
-  set(BASE_SRCS ${BASE_SRCS} builds/wince/ftdebug.c)
+  list(APPEND BASE_SRCS builds/wince/ftdebug.c)
 else ()
-  set(BASE_SRCS ${BASE_SRCS} src/base/ftdebug.c)
+  list(APPEND BASE_SRCS src/base/ftdebug.c)
 endif ()
 
-
 if (BUILD_FRAMEWORK)
-  set(BASE_SRCS
-    ${BASE_SRCS}
-    builds/mac/freetype-Info.plist
-  )
+  list(APPEND BASE_SRCS builds/mac/freetype-Info.plist)
 endif ()
 
+
 if (NOT DISABLE_FORCE_DEBUG_POSTFIX)
   set(CMAKE_DEBUG_POSTFIX d)
 endif()
 
+
 add_library(freetype
   ${PUBLIC_HEADERS}
   ${PUBLIC_CONFIG_HEADERS}
@@ -345,15 +343,39 @@
   ${BASE_SRCS}
 )
 
+set_target_properties(
+  freetype PROPERTIES
+    C_VISIBILITY_PRESET hidden)
+
+target_compile_definitions(
+  freetype PRIVATE FT2_BUILD_LIBRARY)
+
+if (WIN32)
+  target_compile_definitions(
+    freetype PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS)
+  if (BUILD_SHARED_LIBS)
+    target_compile_definitions(
+      freetype PRIVATE DLL_EXPORT)
+  endif ()
+endif ()
 
 if (BUILD_SHARED_LIBS)
   set_target_properties(freetype PROPERTIES
-    VERSION ${PROJECT_VERSION}
-    SOVERSION ${SHARED_LIBRARY_VERSION}
-    COMPILE_DEFINITIONS freetype_EXPORTS
-  )
+    VERSION ${LIBRARY_VERSION}
+    SOVERSION ${LIBRARY_SOVERSION})
 endif ()
 
+# Pick up ftconfig.h and ftoption.h generated above, first.
+target_include_directories(
+  freetype
+    PUBLIC
+      $<INSTALL_INTERFACE:include/freetype2>
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    PRIVATE 
+      ${CMAKE_CURRENT_BINARY_DIR}/include
+      ${CMAKE_CURRENT_SOURCE_DIR}/include)
+
 
 if (BUILD_FRAMEWORK)
   set_property(SOURCE ${PUBLIC_CONFIG_HEADERS}
@@ -367,91 +389,121 @@
   )
 endif ()
 
-if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
-  target_include_directories(freetype
-    PUBLIC $<INSTALL_INTERFACE:include/freetype2>)
-endif ()
 
-if (CMAKE_VERSION VERSION_LESS 2.8.12)
-  set(MAYBE_PRIVATE "")
-else ()
-  set(MAYBE_PRIVATE "PRIVATE")
-endif ()
+set(PKG_CONFIG_REQUIRED_PRIVATE "")
 
 if (ZLIB_FOUND)
-  target_link_libraries(freetype ${MAYBE_PRIVATE} ${ZLIB_LIBRARIES})
-  include_directories(${ZLIB_INCLUDE_DIRS})
+  target_link_libraries(freetype PRIVATE ${ZLIB_LIBRARIES})
+  target_include_directories(freetype PRIVATE ${ZLIB_INCLUDE_DIRS})
+  list(APPEND PKG_CONFIG_REQUIRED_PRIVATE zlib)
 endif ()
 if (BZIP2_FOUND)
-  target_link_libraries(freetype ${MAYBE_PRIVATE} ${BZIP2_LIBRARIES})
-  include_directories(${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS
+  target_link_libraries(freetype PRIVATE ${BZIP2_LIBRARIES})
+  target_include_directories(freetype PRIVATE ${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS
+  list(APPEND PKG_CONFIG_REQUIRED_PRIVATE bzip2)
 endif ()
 if (PNG_FOUND)
-  add_definitions(${PNG_DEFINITIONS})
-  target_link_libraries(freetype ${MAYBE_PRIVATE} ${PNG_LIBRARIES})
-  include_directories(${PNG_INCLUDE_DIRS})
+  target_link_libraries(freetype PRIVATE ${PNG_LIBRARIES})
+  target_compile_definitions(freetype PRIVATE ${PNG_DEFINITIONS})
+  target_include_directories(freetype PRIVATE ${PNG_INCLUDE_DIRS})
+  list(APPEND PKG_CONFIG_REQUIRED_PRIVATE libpng)
 endif ()
 if (HARFBUZZ_FOUND)
-  target_link_libraries(freetype ${MAYBE_PRIVATE} ${HARFBUZZ_LIBRARIES})
-  include_directories(${HARFBUZZ_INCLUDE_DIRS})
+  target_link_libraries(freetype PRIVATE ${HARFBUZZ_LIBRARIES})
+  target_include_directories(freetype PRIVATE ${HARFBUZZ_INCLUDE_DIRS})
+  list(APPEND PKG_CONFIG_REQUIRED_PRIVATE harfbuzz)
 endif ()
 
 
-# Installations
-# Note the trailing slash in the argument to the `DIRECTORY' directive
+# Installation
+include(GNUInstallDirs)
+
 if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
-  install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/
-    DESTINATION include/freetype2
-    PATTERN "internal" EXCLUDE
-    PATTERN "ftconfig.h" EXCLUDE
-    PATTERN "ftoption.h" EXCLUDE
-    )
-  install(FILES
-    ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h
-    ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
-    DESTINATION include/freetype2/freetype/config
-    )
+  install(
+    # Note the trailing slash in the argument to `DIRECTORY'!
+    DIRECTORY ${PROJECT_SOURCE_DIR}/include/
+      DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2
+      COMPONENT headers
+      PATTERN "internal" EXCLUDE
+      PATTERN "ftconfig.h" EXCLUDE
+      PATTERN "ftoption.h" EXCLUDE)
+  install(
+    FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h
+          ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
+      DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config
+      COMPONENT headers)
 endif ()
 
 if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
-  install(TARGETS freetype
+  # Generate the pkg-config file
+  if (UNIX)
+    file(READ ${PROJECT_SOURCE_DIR}/builds/unix/freetype2.in FREETYPE2_PC_IN)
+
+    string(REPLACE ";" ", " PKG_CONFIG_REQUIRED_PRIVATE "${PKG_CONFIG_REQUIRED_PRIVATE}")
+
+    string(REPLACE "%prefix%" ${CMAKE_INSTALL_PREFIX}
+           FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
+    string(REPLACE "%exec_prefix%" "\${prefix}"
+           FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
+    string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}"
+           FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
+    string(REPLACE "%includedir%" "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}"
+           FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
+    string(REPLACE "%ft_version%" "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
+           FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
+    string(REPLACE "%REQUIRES_PRIVATE%" "${PKG_CONFIG_REQUIRED_PRIVATE}"
+           FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
+    string(REPLACE "%LIBS_PRIVATE%" ""  # All libs support pkg-config
+           FREETYPE2_PC_IN ${FREETYPE2_PC_IN})
+
+    file(WRITE ${PROJECT_BINARY_DIR}/freetype2.pc ${FREETYPE2_PC_IN})
+
+    install(
+      FILES ${PROJECT_BINARY_DIR}/freetype2.pc
+      DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
+      COMPONENT pkgconfig)
+  endif ()
+
+  install(
+    TARGETS freetype
+      EXPORT freetype-targets
+      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+      FRAMEWORK DESTINATION Library/Frameworks
+      COMPONENT libraries)
+  install(
     EXPORT freetype-targets
-    RUNTIME DESTINATION bin
-    LIBRARY DESTINATION lib
-    ARCHIVE DESTINATION lib
-    FRAMEWORK DESTINATION Library/Frameworks
-    )
-  install(EXPORT freetype-targets
-    DESTINATION lib/cmake/freetype
-    FILE freetype-config.cmake
-    )
+      DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype
+      FILE freetype-config.cmake
+      COMPONENT headers)
 endif ()
 
 
 # Packaging
-# CPack version numbers for release tarball name.
+set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The FreeType font rendering library.")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/docs/LICENSE.TXT")
+
 set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
 set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
-set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}})
-if (NOT DEFINED CPACK_PACKAGE_DESCRIPTION_SUMMARY)
-  set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${CMAKE_PROJECT_NAME}")
-endif ()
-if (NOT DEFINED CPACK_SOURCE_PACKAGE_FILE_NAME)
-  set(CPACK_SOURCE_PACKAGE_FILE_NAME
-    "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-r${PROJECT_REV}"
-    CACHE INTERNAL "tarball basename"
-  )
-endif ()
-set(CPACK_SOURCE_GENERATOR TGZ)
-set(CPACK_SOURCE_IGNORE_FILES
-  "/CVS/;/.svn/;.swp$;.#;/#;/build/;/serial/;/ser/;/parallel/;/par/;~;/preconfig.out;/autom4te.cache/;/.config")
-set(CPACK_GENERATOR TGZ)
+set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
+set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
+
+if (WIN32)
+  set(CPACK_GENERATOR ZIP)
+else()
+  set(CPACK_GENERATOR TGZ)
+endif()
+
+set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries")
+set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers")
+set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION
+  "Library used to build programs which use FreeType")
+set(CPACK_COMPONENT_HEADERS_DESCRIPTION
+  "C/C++ header files for use with FreeType")
+set(CPACK_COMPONENT_HEADERS_DEPENDS libraries)
+set(CPACK_COMPONENT_LIBRARIES_GROUP "Development")
+set(CPACK_COMPONENT_HEADERS_GROUP "Development")
+
 include(CPack)
-
-
-# Add `make dist' target if FREETYPE_DIST is set (which is the default)
-if (NOT DEFINED FREETYPE_NO_DIST)
-  add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
-endif ()
-
-# eof
diff --git a/ChangeLog b/ChangeLog
index 0708e5e..b6cb46b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1769 @@
+2018-08-10  Ben Wagner  <bungeman@google.com>
+
+	* src/sfnt/sfobjs.c (sfnt_done_face): Fix memory leak (#54435).
+
+2018-08-10  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Improve tracing.
+
+2018-08-10  Werner Lemberg  <wl@gnu.org>
+
+	Fix clang warnings.
+
+	* src/base/ftdebug.c (ft_trace_level_enabled,
+	ft_trace_level_disabled): Add `static' keyword.
+
+2018-08-09  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[raster, smooth] Reinstate bitmap size limits.
+
+	This again moves outline and bitmap size checks one level up.
+
+	* src/base/ftoutln.c (FT_Outline_Render): Explicitly reject enormous
+	outlines.
+	* src/raster/ftrend1.c (ft_raster1_render): Reject enormous bitmaps
+	and, therefore, outlines that require them.
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
+
+	* src/raster/ftraster.c (ft_black_render): Remove outline size checks.
+	* src/smooth/ftgrays.c (gray_raster_render): Ditto.
+	[STANDALONE]: Remove `FT_Outline_Get_CBox' copy.
+
+2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[pcf] Revert massive unsigning.
+
+2018-08-08  Werner Lemberg  <wl@gnu.org>
+
+	[smooth] Improve tracing.
+
+	* src/smooth/ftgrays.c (gray_convert_glyph_inner): Only use tracing
+	if called the first time.
+	(gray_convert_glyph): Updated.
+
+2018-08-08  Werner Lemberg  <wl@gnu.org>
+
+	Add internal functions `FT_Trace_Disable' and `FT_Trace_Enable'.
+
+	It sometimes makes sense to suppress tracing informations, for
+	example, if it outputs identical messages again and again.
+
+	* include/freetype/internal/ftdebug.h: Make `ft_trace_levels' a
+	pointer.
+	(FT_Trace_Disable, FT_Trace_Enable): New declarations.
+
+	* src/base/ftdebug.c (ft_trace_levels): Rename to...
+	(ft_trace_levels_enabled): ... this.
+	(ft_trace_levels_disabled): New array.
+	(ft_trace_levels): New pointer.
+	(FT_Trace_Disable, FT_Trace_Enable): Implement.
+	(ft_debug_init): Updated.
+
+2018-08-08  Werner Lemberg  <wl@gnu.org>
+
+	Debugging improvements.
+
+	* src/base/ftobjs.c (pixel_modes): Move this array to top level
+	from ...
+	(FT_Load_Glyph): ... here.
+	(FT_Render_Glyph_Internal): Use `width' x `height' in trace message.
+	Use `pixel_modes'.
+
+2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[pcf] Massive unsigning (part 2).
+
+	Treat all size related properties as unsigned values.
+
+	* src/pcf/pcf.h (PCF_ParsePropertyRec): Use unsigned `name' and
+	`value'.
+	* src/pcf/pcfread.c (pcf_get_propeerties, pcf_load_font): Updated
+	parsing code and handling of AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
+	RESOLUTION_X and RESOLUTION_Y.
+
+2018-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[pcf] Massive unsigning (part 1).
+
+	Unofficial specifications hesitate to use unsigned 32-bit integers.
+	Negative values caused a lot of trouble in the past and it is safer
+	and easier to treat some properties as unsigned.
+
+	* src/pcf/pcf.h (PCF_AccelRec): Use unsigned values for `fontAscent',
+	`fontDescent', and `maxOverlap'.
+	* src/pcf/pcfread.c (pcf_load_font, pcf_get_accel): Updated.
+	* src/pcf/pcfdrivr.c (PCF_Glyph_Load, PCF_Size_Select,
+	PCF_Size_Request): Updated.
+
+2018-08-07  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/pcf/pcfread.c (pcf_get_bitmaps): Unsign `offsets' and
+	`bitmapSizes'.
+
+2018-08-06  Werner Lemberg  <wl@gnu.org>
+
+	* devel/ftoption.h: Synchronize with main `ftoption.h'.
+
+2018-08-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[pcf] Use unsigned types.
+
+	* src/pcf/pcf.h (PCF_Encoding): Use unsigned `enc'.
+	* src/pcf/pcfdrivr.c (pcf_cmap_char_{index,next}): Ditto.
+	* src/pcf/pcfread.c (pcf_get_encodings): Use unsigned types.
+
+2018-08-05  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgload.c (compute_glyph_metrics): Fix overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/chromium/issues/detail?id=777151
+
+2018-08-04  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttinterp.c (opcode_name): Fix typos.
+
+2018-08-04  Werner Lemberg  <wl@gnu.org>
+
+	Fix clang warnings.
+
+	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Fix type of
+	`orientation'.
+
+	* src/gxvalid/gxvcommn.c (gx_lookup_value_read): Fix signature.
+
+	* src/pcf/pcfread.c (pcf_get_encodings): Fix type of some variables.
+	Add cast.
+
+	* src/type1/t1load.c (parse_weight_vector): Fix cast.
+
+2018-07-31  Werner Lemberg  <wl@gnu.org>
+
+	* src/cid/cidtoken.h: Handle `XUID' keyword.
+
+2018-07-31  Werner Lemberg  <wl@gnu.org>
+
+	[cid] Trace PostScript dictionaries.
+
+	* src/cid/cidload.c: Include FT_INTERNAL_POSTSCRIPT_AUX_H
+	(cid_load_keyword, cid_parse_font_matrix, parse_fd_array,
+	parse_expansion_factor, cid_parse_dict): Add tracing calls.
+	(parse_font_name): New function to trace `/FontName' keywords in
+	/FDArray dict.
+	(cid_field_records): Register `parse_font_name'.
+
+2018-07-30  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Fix typo.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9409
+
+	* src/cff/cffdrivr.c (cff_get_cid_from_glyph_index): Fix boundary
+	check.
+
+2018-07-29  Werner Lemberg  <wl@gnu.org>
+
+	* src/pcf/pcfread.c (pcf_get_encodings): Another thinko.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9608
+
+2018-07-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[smooth] Fix Harmony memory management.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9501
+
+	* src/smooth/ftgrays.c (ft_smooth_render_generic): Restore buffer
+	after each rendering in case of failure. 
+
+2018-07-28  Werner Lemberg  <wl@gnu.org>
+
+	[type1] Avoid segfaults with `FT_Get_PS_Font_Value'.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9610
+
+	* src/type1/t1driver.c (t1_ps_get_font_value): Protect against NULL.
+
+2018-07-27  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Make `TT_Set_MM_Blend' idempotent (#54388).
+
+	* src/truetype/ttgxvar.c (tt_set_mm_blend): Correctly set
+	`face->doblend' if the current call to the function yields the same
+	blend coordinates as the previous call.
+
+2018-07-27  Werner Lemberg  <wl@gnu.org>
+
+	[psaux, type1]: More tracing improvements.
+
+	* src/psaux/psintrp.c (cf2_interpT2CharString): Trace skipped
+	outline commands.
+
+	* src/psaux/t1decode.c (t1_decoder_parse_charstring): Fix
+	missing case.
+	(t1_decoder_parse_metrics): Make tracing output more compact.
+
+	* src/type1/t1gload.c (T1_Compute_Max_Advance): Be less verbose.
+	(T1_Get_Advances): Add tracing.
+
+2018-07-25  Werner Lemberg  <wl@gnu.org>
+
+	[psaux, type1] Trace PostScript dictionaries and other things.
+
+	The tracing of /Encoding, /Subrs, and /Charstrings is rudimentary
+	right now.
+
+	* src/psaux/psobjs.c (ps_parser_load_field,
+	ps_parser_load_field_table): Add tracing calls.
+
+	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Make tracing
+	output more compact.
+
+	* src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances): Add
+	tracing messages.
+
+	* src/type1/t1load.c (parse_blend_axis_types,
+	parse_blend_design_positions, parse_blend_design_map,
+	parse_weight_vector, t1_load_keyword, t1_parse_font_matrix,
+	parse_encoding, parse_subrs, parse_charstrings, T1_Open_Face): Add
+	tracing calls.
+
+	* src/type1/t1objs.c (T1_Face_Init): Add tracing call.
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): Make tracing message more
+	verbose.
+
+2018-07-25  Werner Lemberg  <wl@gnu.org>
+
+	Fix minor ASAN run-time warnings.
+
+	* src/base/ftutil.c (ft_mem_alloc, ft_mem_realloc): Only call
+	`FT_MEM_ZERO' if we actually have a buffer.
+	(ft_mem_dup): Only call `ft_memcpy' if we actually have a buffer.
+
+2018-07-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[build] Fortify dllexport/dllimport attributes (#53969,#54330).
+
+	We no longer use predefined _DLL, which can be defined for static
+	builds too with /MD. We use DLL_EXPORT and DLL_IMPORT instead,
+	following libtool convention.
+
+	* CMakeLists.txt [WIN32], builds/windows/vc2010/freetype.vcxproj:
+	Define DLL_EXPORT manually.
+
+	* include/freetype/config/ftconfig.h, builds/unix/ftconfig.in,
+	builds/vms/ftconfig.h, builds/windows/vc2010/index.html,
+	src/base/ftver.rc: /_DLL/d, s/FT2_DLLIMPORT/DLL_IMPORT/.
+
+2018-07-24  Werner Lemberg  <wl@gnu.org>
+
+	[type1] Check relationship between number of axes and designs.
+
+	For Multiple Masters fonts We don't support intermediate designs;
+	this implies that
+
+	  number_of_designs == 2 ^^ number_of_axes
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9557
+
+	* src/type1/t1load.c (T1_Open_Face): Ensure above constraint.
+	(T1_Get_MM_Var): Remove now redundant test.
+
+2018-07-24  Hin-Tak Leung  <htl10@users.sourceforge.net>
+
+	[truetype] Match ttdebug's naming of instruction mnemonics.
+
+	* src/truetype/ttinterp.c: The form used in ttdebug,
+	"MDRP[G,B,W,?]", etc., is slightly more readable than
+	"MDRP[00,01,02,03]".
+
+2018-07-24  Werner Lemberg  <wl@gnu.org>
+
+	* src/pcf/pcfread.c (pcf_get_encodings): Thinko.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9561
+
+2018-07-22  Werner Lemberg  <wl@gnu.org>
+
+	* src/pcf/pcfread.c (pcf_get_encodings): Check index of defaultChar.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9527
+
+2018-07-22  Werner Lemberg  <wl@gnu.org>
+
+	* src/pcf/pcfread.c (pcf_load_font): Fix number of glyphs.
+
+	This is an oversight of the module change 2018-07-21.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9524
+
+2018-07-22  Werner Lemberg  <wl@gnu.org>
+
+	[cid] Sanitize `BlueShift' and `BlueFuzz'.
+
+	This code is taken from the type1 module.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9510
+
+	* src/cid/cidload.c (parse_fd_array): Set some private dict default
+	values.
+	(cid_face_open): Do the sanitizing.
+	Fix some tracing messages.
+
+2018-07-21  Werner Lemberg  <wl@gnu.org>
+
+	[pcf] Fix handling of the undefined glyph.
+
+	This change makes the driver use the `defaultChar' property of PCF
+	files.
+
+	* src/pcf/pcf.h (PCF_FaceRec): Change type of `defaultChar' to
+	unsigned.
+
+	* src/pcf/pcfread.c (pcf_get_encodings): Read `defaultChar' as
+	unsigned.
+	Validate `defaultChar'.
+	If `defaultChar' doesn't point to glyph index zero, swap glyphs with
+	index zero and index `defaultChar' and adjust the encodings
+	accordingly.
+
+	* src/pcf/pcfdrivr.c (pcf_cmap_char_index, pcf_cmap_char_next,
+	PCF_Glyph_Load): Undo change from 2002-06-16 which always enforced
+	the first character in the font to be the default character.
+
+2018-07-20  Armin Hasitzka  <prince.cherusker@gmail.com>
+
+	Move the legacy fuzz target to the `freetype-testing' repository.
+
+	It can now be found at
+
+	  https://github.com/freetype/freetype2-testing/tree/master/fuzzing/src/legacy
+
+	* src/tools/ftfuzzer: Remove this folder and its contents from the
+	repository.
+
+2018-07-20  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Avoid left-shift of negative numbers (#54322).
+
+	* src/cff/cffgload.c (cff_slot_load): Use multiplication.
+
+2018-07-17  Werner Lemberg  <wl@gnu.org>
+
+	Allow FT_ENCODING_NONE for `FT_Select_Charmap'.
+
+	This is a valid encoding tag for BDF, PCF, and Windows FNT, and
+	there is no reason to disallow it for these formats.
+
+	* src/base/ftobjs.c (FT_Select_Charmap): Implement it.
+
+2018-07-17  Werner Lemberg  <wl@gnu.org>
+
+	* src/pcf/pcfread.c (pcf_get_encodings): Trace `defaultChar'.
+
+2018-07-16  Armin Hasitzka  <prince.cherusker@gmail.com>
+
+	* include/freetype/internal/ftcalc.h: Add macros for handling
+	harmless over-/underflowing `FT_Int' values.
+
+	* src/sfnt/sfdriver.c (fixed2float): Fix negation of
+	`(int)(-2147483648)'.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9423
+
+2018-07-16  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgxvar.c (tt_set_mm_blend): Fix off-by-one error.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9412
+
+2018-07-12  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Init `cbox'.
+
+	Taken from patch #9667, written by Steve Langasek
+	<vorlon@debian.org>.
+
+	This fixes a build failure (most probably a bug in gcc) on ppc64el
+	when building with -O3.
+
+2018-07-05  Werner Lemberg  <wl@gnu.org>
+
+	Fix typo (#54238).
+
+	* src/base/ftcolor.c (FT_Palette_Set_Foreground_Color)
+	[!TT_CONFIG_OPTION_COLOR_LAYERS]: Add return value.
+
+2018-07-05  Werner Lemberg  <wl@gnu.org>
+
+	Adjust table size comparisons (#54242).
+
+	* src/sfnt/ttcpal.c (tt_face_load_cpal): Implement it.
+
+2018-07-05  Werner Lemberg  <wl@gnu.org>
+
+	Fix more 32bit issues (#54208).
+
+	* src/cff/cffload.c (cff_blend_build_vector): Convert assertion into
+	run-time error.
+
+	* src/truetype/ttgxvar.c (ft_var_to_normalized): Protect against
+	numeric overflow.
+
+2018-07-04  Werner Lemberg  <wl@gnu.org>
+
+	Fix 32bit build warnings (#54239).
+
+	* src/base/ftbitmap.c (FT_Bitmap_Blend): Add casts to avoid signed
+	vs. unsigned comparisons.
+
+	* srb/sfnt/ttcolr.c (tt_face_get_colr_layer): Ditto.
+
+2018-07-02  Jeff Carey  <Jeff.Carey@monotype.com>
+
+	* src/psnames/psmodule.c (ps_unicodes_init): Fix alloc debugging.
+
+2018-07-02  Werner Lemberg  <wl@gnu.org>
+
+	s/palette_types/palette_flags/.
+
+	Suggested by Behdad.
+
+2018-07-02  Werner Lemberg  <wl@gnu.org>
+
+	Make `FT_Get_Color_Glyph_Layer' return FT_Bool.
+
+	* include/freetype/freetype.h, src/base/ftobjs.c
+	(FT_Get_Color_Glyph_Layer, FT_Render_Glyph_Internal): Updated.
+
+	* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func),
+	src/sfnt/ttcolr.h, src/sfnt/ttcolr.c (tt_face_get_colr_layer):
+	Updated.
+
+2018-07-01  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Guard SFNT function.
+
+	Reported by Behdad.
+
+2018-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/base/fttrigon.c (FT_Tan): Improve accuracy.
+	(FT_Vector_Rotate): Simplify.
+
+2018-06-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/base/ftobjs.c (FT_Set_Charmap): Robustify.
+
+2018-06-25  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix memory leak.
+
+	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Add initializers.
+	Fix typo in `goto' destination.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9071
+
+2018-06-25  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgxvar.c (tt_face_vary_cvt): Add initializers.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=9070
+
+2018-06-24  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Increase precision while applying VF deltas.
+
+	It turned out that we incorrectly round CVT and glyph point deltas
+	before accumulation, leading to severe positioning errors if there
+	are many delta values to sum up.
+
+	Problem reported by Akiem Helmling <akiem@underware.nl> and analyzed
+	by Behdad.
+
+	* src/truetype/ttgxvar.c (ft_var_readpackeddelta): Return deltas in
+	16.16 format.
+	(tt_face_var_cvt): Collect deltas in `cvt_deltas', which is a 16.16
+	format array, and add the accumulated values to the CVT at the end
+	of the function.
+	(TT_Vary_Apply_Glyph_Deltas): Store data in `points_org' and
+	`points_out' in 16.16 format.
+	Collect deltas in `point_deltas_x' and `point_deltas_y', which are
+	16.16 format arrays, and add the accumulated values to the glyph
+	coordinates at the end of the function.
+
+2018-06-24  Werner Lemberg  <wl@gnu.org>
+
+	New base function `FT_Matrix_Check' (#54019).
+
+	* src/base/ftcalc.c (FT_Matrix_Check): New base function to properly
+	reject degenerate font matrices.
+
+	* include/freetype/internal/ftcalc.h: Updated.
+
+	* src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c
+	(cid_parse_font_matrix), src/type1/t1load.c (t1_parse_font_matrix),
+	src/type42/t42parse.c (t42_parse_font_matrix): Use
+	`FT_Matrix_Check'.
+
+2018-06-23  Werner Lemberg  <wl@gnu.org>
+
+	Fix typo.
+
+	Reported by Behdad.
+
+	* src/base/ftcolor.c (FT_Palette_Data_Get)
+	[!TT_CONFIG_OPTION_COLOR_LAYERS]: s/apalette/apalette_data/.
+
+2018-06-21  Werner Lemberg  <wl@gnu.org>
+
+	s/FT_PALETTE_USABLE_WITH_/FT_PALETTE_FOR_/.
+
+	* include/freetype/ftcolor.h, include/freetype/internal/sfnt.h,
+	src/sfnt/ttcolr.c: Do it.
+
+2018-06-19  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix CPAL heap buffer overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8968
+
+	* src/sfnt/ttcpal.c (tt_face_load_cpal): Guard CPAL version 1
+	offsets.
+
+2018-06-19  Werner Lemberg  <wl@gnu.org>
+
+	Doh.  Don't use CPAL or COLR data if tables are missing.
+
+	Reported by Alexei.
+
+	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): Return immediately if
+	`colr' is NULL.
+
+	* src/sfnt/ttcpal.c (tt_face_palette_set): Return immediately, if
+	`cpal' is NULL.
+
+2018-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[base] Introduce `FT_New_Glyph'.
+
+	This function facilitates access to full capabilities of FreeType
+	rendering engine for custom glyphs. This can be quite useful for
+	consistent rendering of mathematical and chemical formulas, e.g.
+
+	  https://bugs.chromium.org/p/chromium/issues/detail?id=757078
+
+	* include/freetype/ftglyph.h, src/base/ftglyph.c (FT_New_Glyph): New
+	function.
+
+2018-06-17  Armin Hasitzka  <prince.cherusker@gmail.com>
+
+	[bdf] Fix underflow of an unsigned value.
+
+	bdflib.c:1562 could be reached with `font->glyphs_used == 0'.  That
+	caused an underflow of the unsigned value which results in undefined
+	behaviour.
+
+	* src/bdf/bdflib.c (_bdf_parse_glyphs): Bail out earlier than before
+	if the `ENCODING' keyword cannot be found.
+
+2018-06-17  Werner Lemberg  <wl@gnu.org>
+
+	[base] Add tracing for `FT_Bitmap_Blend'.
+
+	* include/freetype/internal/fttrace.h (trace_bitmap): New
+	enumeration.
+
+	* src/base/ftbitmap.c (FT_COMPONENT): Define.
+	(FT_Bitmap_Blend): Add `FT_TRACE5' calls.
+
+2018-06-17  Werner Lemberg  <wl@gnu.org>
+
+	s/trace_bitmap/trace_checksum/.
+
+	* include/freetype/internal/fttrace.h: s/bitmap/checksum/.
+
+	* src/base/ftobjs.c (FT_COMPONENT): s/trace_bitmap/trace_checksum/.
+	Adjust code.
+
+2018-06-16  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix color glyph layer loading.
+
+	* src/sfnt/ttcolr.c (Colr): Add `table_size' field.
+	(tt_face_load_colr): Set it.
+	(tt_face_get_colr_layer): Check pointer limit for layer entries.
+
+2018-06-16  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix color palette loading.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8933
+
+	* src/sfnt/ttcpal.c (Cpal): Add `table_size' field.
+	(tt_face_load_cpal): Set it.
+	(tt_face_palette_set): Check pointer limit for color entries.
+
+2018-06-16  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftbitmap.c (FT_Bitmap_Blend): Avoid integer overflow.
+
+2018-06-16  Werner Lemberg  <wl@gnu.org>
+
+	Add `FT_Bitmap_Blend' API.
+
+	Still missing: Support for negative bitmap pitch and subpixel offset
+	of source bitmap.
+
+	* include/freetype/ftbitmap.h, src/base/ftbitmap.c
+	(FT_Bitmap_Blend): New function.
+
+2018-06-14  Werner Lemberg  <wl@gnu.org>
+
+	Replace `FT_Get_GlyphLayers' with `FT_Get_Color_Glyph_Layer'.
+
+	This avoids any additional allocation of COLR related structures in
+	a glyph slot.
+
+	* include/freetype/freetype.h (FT_Glyph_Layer, FT_Glyph_LayerRec,
+	FT_Get_GlyphLayers): Removed.
+
+	* include/freetype/internal/ftobjs.h (FT_Colr_InternalRec): Removed.
+	(FT_Slot_InternalRec): Remove `color_layers'.
+
+	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func):
+	Removed.
+	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Remove
+	`load_colr_layer'.
+
+	* src/base/ftobjs.c (ft_glyph_slot_done): Updated.
+	(FT_Render_Glyph_Internal): Use `FT_Get_Color_Glyph_Layer'.
+	(FT_Get_GlyphLayers): Removed.
+
+	* src/sfnt/sfdriver.c (sfnt_interface): Updated.
+
+	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Removed.
+	* src/sfnt/ttcolr.h: Updated.
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): Updated.
+
+2018-06-14  Werner Lemberg  <wl@gnu.org>
+
+	Provide iterative API to access `COLR' data.
+
+	This solution doesn't store any data in an `FT_GlyphSlot' object.
+
+	* include/freetype/freetype.h (FT_LayerIterator): New structure.
+	(FT_Get_Color_Glyph_Layer): New function.
+
+	* include/freetype/internal/sfnt.h (TT_Get_Colr_Layer_Func): New
+	function type.
+	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.
+
+	* src/base/ftobjs.c (FT_Get_Color_Glyph_Layer): Implement it.
+
+	* src/sfnt/ttcolr.c (tt_face_get_colr_layer): New function.
+	* src/sfnt/ttcolr.h: Updated.
+
+	* src/sfnt/sfdriver.c (sfnt_interface): Updated.
+
+2018-06-14  Werner Lemberg  <wl@gnu.org>
+
+	Add glyph index and glyph load flags to glyph slot.
+
+	* include/freetype/freetype.h (FT_GlyphSlotRec): Rename unused
+	`reserved' field to `glyph_index'.
+
+	* include/freetype/internal/ftobjs.h (FT_Slot_InternalRec): Add
+	`load_flags' field.
+
+	* src/base/ftobjs.c (FT_Load_Glyph): Set new fields.
+
+2018-06-14  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Move `CPAL' stuff into separate files.
+
+	* src/sfnt/sfdriver.c: Include `ttcpal.h'.
+	* src/sfnt/sfnt.c: Include `ttcpal.c'.
+
+	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: Move CPAL stuff to ...
+	* src/sfnt/ttcpal.c, src/sfnt/ttcpal.c: ... these new files.
+
+	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC):
+	Updated.
+
+	* include/freetype/internal/fttrace.h: Add support for `colr' and
+	`cpal'.
+	Sort entries.
+
+2018-06-13  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Separate `CPAL' and `COLR' table handling.
+
+	Later on we want to support the `SVG' table also, which needs `CPAL'
+	(but not `COLR').
+
+	* include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_cpal'
+	and `free_cpal' fields.
+	(FT_DEFINE_SFNT_INTERFACE): Updated.
+
+	* include/freetype/internal/tttypes.h (TT_FaceRec): Replace
+	`colr_and_cpal' fields with `cpal' and `colr'.
+
+	* src/sfnt/sfdriver.c (sfnt_interface): Updated.
+
+	* src/sfnt/sfobjs.c (sfnt_load_face, sfnt_done_face): Updated.
+
+	* src/sfnt/ttcolr.c (Colr, Cpal): Add `table' field.
+	(ColrCpal): Removed.
+	(tt_face_load_colr): Split off CPAL handling into...
+	(tt_face_load_cpal): ... this new function.
+	(tt_face_free_colr): Split off CPAL handling into...
+	(tt_face_free_cpal): ... this new function.
+	(tt_face_load_colr_layers, tt_face_palette_set): Updated.
+
+	* src/sfnt/ttcolr.h: Updated.
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): Updated.
+
+2018-06-12  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix `sizeof' thinko.
+
+	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_palette_set): Don't
+	use `sizeof' for computing array limit.
+
+2018-06-12  Werner Lemberg  <wl@gnu.org>
+
+	Finish CPAL/COLR support (4/4).
+
+	* src/sfnt/ttcolr.c (tt_face_find_color): Removed.
+	(tt_face_colr_blend_layer): Use `face->palette' instead of calling
+	`tt_face_find_color'.
+	Use and set text foreground color.
+
+2018-06-12  Werner Lemberg  <wl@gnu.org>
+
+	Finish CPAL/COLR support (3/4).
+
+	* src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.
+	(FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement
+	functions.
+
+2018-06-12  Werner Lemberg  <wl@gnu.org>
+
+	Finish CPAL/COLR support (2/4).
+
+	* src/sfnt/ttcolr.c (tt_face_palette_set): New function.
+	(tt_face_load_colr): Allocate `face->palette' and call
+	`tt_face_palette_set'.
+	Adjust return error code in case of error.
+
+	* src/sfnt/ttcolr.h: Updated.
+
+	* include/freetype/internal/sfnt.h (TT_Set_Palette_Func): New
+	function type.
+	(SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): Add it.
+
+	* src/sfnt/sfdriver.c (sfnt_interface), src/sfnt/sfobjs.c
+	(sfnt_done_face): Updated.
+
+2018-06-12  Werner Lemberg  <wl@gnu.org>
+
+	Finish CPAL/COLR support (1/4).
+
+	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
+	`palette_index', `palette', `have_foreground_color' and
+	`foreground_color'.
+
+2018-06-12  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Minor.
+
+	* src/sfnt/ttcolr.c (tt_face_load_colr_layers):
+	s/palette_index/palette_entry_index/ for consistency.
+	Adjust return error code in case of error.
+
+2018-06-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[raster] Clean up.
+
+	* src/raster/ftraster.c (black_TWorker, SCALED, Set_High_Precision):
+	Clean up after 5-level gray removal (8dc8635874).
+	(Vertical_Sweep_Span): Be brief.
+
+2018-06-10  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix compiler warnings.
+
+	* src/sfnt/ttcolr.c (tt_face_load_colr, tt_face_load_colr_layers,
+	tt_face_colr_blend_layer): Add `NULL' initializers.
+
+2018-06-10  Werner Lemberg  <wl@gnu.org>
+
+	s/FT_Palette/FT_Palette_Data/, s/palette/palette_data/.
+
+	* include/freetype/ftcolor.h, include/freetype/internal/tttypes.h,
+	src/base/ftcolor.c, src/sfnt/sfobjs.c, src/sfnt/ttcolr.c: Updated.
+
+2018-06-10  Nikolaus Waxweiler  <madigens@gmail.com>
+
+	CMakeLists: also accept IOS_PLATFORM=SIMULATOR64
+
+	This might be needed to build FreeType for the iOS simulator. See
+	https://savannah.nongnu.org/bugs/index.php?54048. Patch contributed
+	by Steve Robinson.
+
+	* CMakeLists.txt: Accept IOS_PLATFORM=SIMULATOR64
+
+2018-06-10  Werner Lemberg  <wl@gnu.org>
+
+	Implement `FT_Palette_Get'.
+
+	* src/base/ftcolor.c: New file.
+
+	* src/base/Jamefile (_sources), src/base/rules.mk (BASE_SRC),
+	src/base/ftbase.c: Add `ftcolor.c'.
+
+2018-06-10  Werner Lemberg  <wl@gnu.org>
+
+	* src/sfnt/ttcolr.c (tt_face_load_colr): Improve overflow checks.
+
+2018-06-09  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[raster] Deal with pitch sign earlier.
+
+	* src/raster/ftraster.c (black_TWorker): Remove unused `traceG',
+	s/bTarget/bOrigin/.
+	(Render_Glyph): Set `ras.bOrigin' at the bottom-left corner.
+	(Vertical_Sweep_Init, {Vertical,Horizontal}_Sweep_{Span,Drop}):
+	Updated accordingly.
+
+2018-06-09  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Read `CPAL' version 1 tables.
+
+	* include/freetype/internal.tttypes.h: Include FT_COLOR_H.
+	(TT_FaceRec): Add `palette' field.
+
+	* src/sfnt/ttcolr.c: Include FT_COLOR_H.
+	(Cpal): Remove all data covered by the new `palette' field in
+	`TT_FaceRec'.
+	(tt_face_load_colr): Updated.
+	Read `CPAL' version 1 data.
+	(tt_face_load_colr_layers, tt_face_find_color): Updated.
+
+	* src/sfnt/sfobjs.c (sfnt_done_face): Free glyph color palette data.
+
+2018-06-07  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[base] API for Harmony LCD rendering.
+
+	This introduces `FT_Library_SetLcdGeometry' for setting up arbitrary
+	LCD subpixel geometry including non-striped patterns.
+
+	* src/base/ftlcdfil.c (FT_Library_SetLcdGeometry): New function.
+	* include/freetype/ftlcdfil.h: Document it.
+	* include/freetype/freetype.h: Minor.
+	* include/freetype/ftchapters.h: Minor.
+
+2018-06-06  Werner Lemberg  <wl@gnu.org>
+
+	ftcolor.h: Redesign API.
+
+	While going to implement it I noticed that I need access to most of
+	the `CPAL' elements; I thus plan to add a `cpal' field to
+	`TT_FaceRec', which makes most of the previously suggested API
+	functions obsolete because the fields will be directly accessible.
+
+2018-06-06  Parth Wazurkar  <parthwazurkar@gmail.com>
+
+	[bdf, pcf] Remove deprecated FT_FACE_FLAG_FAST_GLYPHS flag.
+
+	* src/bdf/bdfdrivr.c (BDF_Face_Init): Remove deprecated
+	FT_FACE_FLAG_FAST_GLYPHS flag.
+
+	* src/pcf/pcfread.c (pcf_load_font): Remove deprecated
+	FT_FACE_FLAG_FAST_GLYPHS flag.
+
+2018-06-06  Werner Lemberg  <wl@gnu.org>
+
+	[smooth, raster] Limit bitmap size (#54019).
+
+	* src/raster/ftraster.c [STANDALONE] (FT_Outline_Get_CBox): Add
+	function.
+	[!STANDALONE]: Include FT_OUTLINE_H.
+	(ft_black_render): Compute CBox and reject glyphs larger than
+	0xFFFF x 0xFFFF.
+
+	* src/smooth/ftgrays.c (gray_raster_render): Reject glyphs larger
+	than 0xFFFF x 0xFFFF.
+
+2018-06-03  Armin Hasitzka  <prince.cherusker@gmail.com>
+
+	* src/smooth/ftgrays.c (gray_convert_glyph): Remove unused variables.
+
+2018-06-03  Werner Lemberg  <wl@gnu.org>
+
+	* src/tools/glnames.py (main): Emit header in `light' comment style.
+
+2018-06-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[smooth] Attempt to mitigate bug #54019.
+
+	The robust rendering of estra large glyphs came with unbearable cost.
+	The old way of bisecting should fail but fail faster.
+
+	* src/smooth/ftgrays.c (gray_convert_glyph): Switch back to bisecting
+	in y-direction.
+
+2018-06-02  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttinterp.c (Ins_MIRP): Use SUB_LONG; avoid FT_ABS.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8706
+
+2018-06-02  Werner Lemberg  <wl@gnu.org>
+
+	* src/autofit/afwarp.h: Use AF_CONFIG_OPTION_USE_WARPER (#54033).
+
+2018-05-31  Werner Lemberg  <wl@gnu.org>
+
+	* src/raster/ftraster.c (black_TWorker_): Remove `gTarget' field.
+
+	This is no longer used.
+
+2018-05-31  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Get colors from `CPAL' table in right order (#54015).
+
+	* src/sfnt/ttcolr.c (tt_face_find_color): Fix it.
+
+2018-05-30  Werner Lemberg  <wl@gnu.org>
+
+	ftcolor.h: Improve API design, fix typos (#54011, #54014).
+
+	* include/freetype/ftcolor.h (FT_Palette_Get_Names): Replace with...
+	(FT_Palette_Get_Name_IDs): ... this function.
+	(FT_Palette_Get_Entry_Names): Replace with...
+	(FT_Palette_Get_Entry_Name_IDs): ... this function
+	s/FT_Palette_Set_Foreground_COlor/FT_Palette_Set_Foreground_Color/.
+
+2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>
+
+	Beautify a3cfed5e87232c933bdc64f43e8ebebcfd18b41b.
+
+	* src/autofit/afloader.c (af_loader_load_glyph): Move the
+	initialisationand declaration of variables into the if-block.
+
+2018-05-30  Armin Hasitzka  <prince.cherusker@gmail.com>
+
+	Fix pointer underflow.
+
+	The declaration of `edge2' can be reached with `edge1 == NULL' and
+	`axis->edges == 0' which results in undefined behaviour.
+
+	* src/autofit/afloader.c (af_loader_load_glyph): Initialise `edge2'
+	after checking `axis->num_edges > 1'.  `edge1 != NULL' can be assumed.
+
+2018-05-30  Werner Lemberg  <wl@gnu.org>
+
+	Various minor color fixes.
+
+	* include/freetype/config/ftheader.h (FT_COLOR_H): New macro.
+
+	* include/freetype/internal/ftobjs.h (FT_Colr_Internal): Change
+	type of `load_flags' to `FT_Int32'.
+
+	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func): Change
+	type of `idx' to `FT_UInt'.
+	(TT_Blend_Colr_Func): Change type of `color_index' to `FT_UInt'.
+
+	* src/base/ftobjs.c (FT_Render_Glyph_Internal): Change type of
+	`load_flags' to `FT_Int32'.
+
+	* src/sfnt/ttcolr.c (find_base_glyph_record,
+	tt_face_load_colr_layers): Change type of `glyph_id' to `FT_UInt'.
+	(tt_face_find_color, tt_face_colr_blend_layer): Change type of
+	`color_index' to `FT_UInt'.
+	Fix signedness and type issues.
+
+	* src/sfnt/ttcolr.h: Updated.
+
+2018-05-25  Nikhil Ramakrishnan  <ramakrishnan.nikhil@gmail.com>
+
+	[docmaker] Fix missing `Defined in (...)' under Windows/Cygwin.
+
+	This platform uses backslashes for paths, which docmaker didn't
+	understand correctly.
+
+	* src/tools/docmaker/tohtml.py (HtmlFormatter::blockEnter): Use
+	`os.path.normpath' to normalize the path for the platform being
+	used.
+
+2018-05-24  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[smooth] Formalize Harmony LCD rendering.
+
+	This generalizes magic outline shifts that make Harmony LCD
+	rendering work in terms of precise two-dimensional RGB subpixel
+	positions. These coordinates are now set in time of the `smooth'
+	module initialization and later used to shift a glyph outline for
+	rendering. FT_RENDER_MODE_LCD and FT_RENDER_MODE_LCD_V use the same
+	coordinates. The letter, however, rotates them before using.
+	The LCD bitmap padding is also calculated using these coordinates.
+
+	* include/freetype/internal/ftobjs.h (FT_LibraryRec): New array field
+	`lcd_geometry'.
+	* src/base/ftlcdfil.c (ft_lcd_padding): Reworked.
+	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Updated accordingly.
+
+	* src/smooth/ftsmooth.c [!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]
+	(ft_smooth_init): Initialize `lcd_geometry'.
+	(ft_smooth_render_generic): Formalize outline shifts.
+
+2018-05-22  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Reject elements of composites with invalid glyph indices.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8413
+
+	* src/truetype/ttgload.c (TT_Load_Composite_Glyph): Implement it.
+
+2018-05-22  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Trace # of points.
+
+2018-05-20  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/ftcolor.h: New file.
+
+	This is an interface to the `CPAL' OpenType table.  No
+	implementation yet.
+
+2018-05-18  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* include/freetype/internal/ftcalc.h (FT_MSB): Verified `_MSC_VER'.
+
+	Actually `_BitScanReverse' is available since VS2005.
+
+2018-05-18  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/internal/ftcalc.h (FT_MSB): Use `_MSC_VER' value.
+
+	Older VC versions don't provide `_BitScanReverse'.  We test for VC
+	2013.
+
+	Reported by John Emmas <john@creativepost.co.uk>.
+
+2018-05-17  Werner Lemberg  <wl@gnu.org>
+
+	s/inline/__inline/ for MSVC.
+
+	Reported by John Emmas <john@creativepost.co.uk>.
+
+	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Do it.
+
+2018-05-16  Werner Lemberg  <wl@gnu.org>
+
+	Add function `FT_Get_GlyphLayers' to access `COLR' table data.
+
+	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec): Move this
+	structure to...
+	* include/freetype/freetype.h (FT_Glyph_LayerRec): ... this
+	header file.
+	(FT_Glyph_Layer): New typedef.
+	Update code to use it where appropriate.
+
+	* src/base/ftobjs.c (FT_Get_GlyphLayers): New function.
+
+2018-05-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[base] Fix mono bitmap presetting (#53896).
+
+	It is rather fundamental to set monochrome bitmap based on rounded
+	CBox because the b/w rasterizer turns on pixels when their centers are
+	inside the glyph outline. The dropout control is unpredictable and can
+	distort narrow glyphs if the bitmap is too wide.
+
+	Reported by Chris Liddell.
+
+	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): If BBox boundaries
+	are too close, adjust them before rounding.
+
+2018-05-15  Werner Lemberg  <wl@gnu.org>
+
+	[psaux] Fix compiler warning (#53915).
+
+	* src/psaux/psft.c (cf2_freeT1SeacComponent): Do it.
+
+2018-05-15  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix memory leak in handling `COLR' data.
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): Free old `layers' array
+	before reassigning allocated memory.
+	Only allocate `color_layers' if we don't have one already.
+
+2018-05-15  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] If `COLR' is present, don't assume that all glyphs use it.
+
+	* src/sfnt/ttcolr.c (tt_face_load_colr_layers): Return FT_Err_Ok if
+	current glyph is not a `COLR' base glyph.
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): Don't allocate
+	`color_layers' if there are no color layers.
+
+2018-05-14  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftobjs.c (FT_Load_Glyph): Fix signature of `pixel_modes'.
+
+2018-05-14  Werner Lemberg  <wl@gnu.org>
+
+	Provide dummy functions if `TT_CONFIG_OPTION_SFNT_NAMES' is not set.
+
+	* src/base/ftsnames.c [!TT_CONFIG_OPTION_SFNT_NAMES]: Implement it.
+
+2018-05-13  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftobjs.c (FT_Load_Glyph): Improve tracing.
+
+2018-05-13  Shao Yu Zhang  <shaozhang@fb.com>
+	    Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Preliminary support of coloured layer outlines (#44689).
+
+	This commit enables OpenType's COLR/CPAL table handling; a typical
+	application are color emojis that can be scaled to any size.
+
+	If the color palette does not exist or is invalid, the rendering
+	step rasterizes the outline instead.  The current implementation
+	assumes that the foreground is black.
+
+	Enable this by defining option TT_CONFIG_OPTION_COLOR_LAYERS.
+
+	There are still some issues with metrics; additionally, an API to
+	fetch color layers is missing.
+
+	* devel/ftoption.h, include/freetype/config/ftoption.h
+	(TT_CONFIG_OPTION_COLOR_LAYERS): New macro.
+
+	* include/freetype/internal/ftobjs.h (FT_Glyph_LayerRec,
+	FT_Colr_InternalRec): New structures.
+	(FT_Slot_InternalRec): Add `color_layers' field.
+
+	* include/freetype/internal/sfnt.h (TT_Load_Colr_Layer_Func,
+	TT_Blend_Colr_Func): New function types.
+	(SFNT_Interface): Add `load_colr', `free_colr', `load_colr_layer',
+	and `colr_blend' fields.
+
+	* include/freetype/internal/tttypes.h (TT_FaceRec): Add
+	`colr_and_cpal' field.
+
+	* include/freetype/internal/tttags. (TTAG_COLR, TTAG_CPAL): New
+	macros.
+
+	* src/sfnt/ttcolr.c, src/sfnt/ttcolr.h: New files.
+
+	* src/base/ftobjs.c (ft_glyphslot_done, FT_Render_Glyph_Internal):
+	Handle glyph color layers.
+
+	* src/sfnt/Jamfile (_sources), src/sfnt/rules.mk (SFNT_DRV_SRC): Add
+	`ttcolr.c'.
+
+	* src/sfnt/sfdriver.c: Include `ttcolr.h'.
+	(PUT_COLOR_LAYERS): New macro.
+	Update call to `FT_DEFINE_SFNT_INTERFACE'.
+
+	* src/sfnt/sfnt.c: Include `ttcolr.c'.
+
+	* src/sfnt/sfobjs.c (sfnt_load_face): Load `COLR' and `CPAL' tables.
+	(sfnt_done_face): Updated.
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): Handle color layers.
+
+2018-05-12  Arkady Shapkin  <arkady.shapkin@gmail.com>
+
+	Use MS VC++'s _BitScanReverse to calculate MSB (patch #9636).
+
+	* include/freetype/internal/ftcalc.h (FT_MSB) [_MSC_VER]: Implement
+	it.
+
+2018-05-10  Alan Coopersmith  <alan.coopersmith@oracle.com>
+
+	Fix DLL compilation on Solaris.
+
+	AC_COMPILE_IFELSE only tries to compile a `*.c' to a `*.o'.  The
+	Solaris Studio 12.1 through 12.5 compilers see the
+	`-fvisibility=hidden' flag, but ignore it with a warning of:
+
+	  cc: Warning: Option -fvisibility=hidden passed to ld,
+	               if ld is invoked, ignored otherwise
+
+	AC_LINK_IFELSE does the compile and then tries to link the result,
+	at which point the Solaris linker will issue an error:
+
+	  ld: fatal: option '-fvisibility=hidden' is incompatible with
+	      building a dynamic executable
+
+	If we don't use AC_LINK_IFELSE to catch the error, then configure
+	will fail further tests which attempt to link, such as those testing
+	dependencies like `libbz2'.
+
+	Also, don't try adding `-fvisibility' if we have already added
+	`-xldscope', just use one of them, since Sun Studio 12 and earlier
+	compilers only issue a warning, and don't try passing through to the
+	linker to generate an error, so AC_LINK_IFELSE doesn't catch them.
+
+	Tested on Solaris 11.4 beta with compiler versions:
+
+	  Sun Studio 8 (Sun C 5.5)
+	  Sun Studio 10 (Sun C 5.7)
+	  Sun Studio 11 (Sun C 5.8)
+	  Sun Studio 12 (Sun C 5.9)
+	  Sun Studio 12.1 (Sun C 5.10)
+	  Oracle Solaris Studio 12.2 (Sun C 5.11)
+	  Oracle Solaris Studio 12.3 (Sun C 5.12)
+	  Oracle Solaris Studio 12.4 (Sun C 5.13)
+	  Oracle Developer Studio 12.5 (Sun C 5.14)
+	  Oracle Developer Studio 12.6 (Sun C 5.15)
+	  gcc 5.5.0
+	  gcc 7.3.0
+
+	and verified the libfreetype.so.6 generated by each of those
+	compilers exported the same set of symbols.
+
+	* builds/unix/configure.raw: Implement it.
+
+2018-05-08  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Avoid potential SEGV if running out of memory.
+
+	Problem reported by Shailesh Mistry <shailesh.mistry@hotmail.co.uk>.
+
+	* src/autofit/afshaper.c (af_shaper_buf_create,
+	af_shaper_buf_destroy) [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Don't
+	allocate and free a four-byte buffer.  Instead, make those functions
+	no-ops; the calling functions will provide a pointer to a buffer
+	instead.
+
+	* src/autofit/afcjk.c (af_cjk_metrics_init_widths,
+	af_cjk_metrics_init_blues, af_cjk_metrics_check_digits),
+	src/autofit/aflatin.c (af_latin_metrics_init_widths,
+	af_latin_metrics_init_blues, af_latin_metrics_check_digits)
+	[!FT_CONFIG_OPTION_USE_HARFBUZZ]: Use pointer to local variable for
+	`shaper_buf'.
+
+2018-05-07  Nikolaus Waxweiler  <madigens@gmail.com>
+
+	[cmake] Allow using project as subfolder in other project.
+
+	* CMakeLists.txt: Test for CMake build directory being different
+	from source directory.  Provide other parts of the build system
+	access the full include directory.
+
+2018-05-07  Werner Lemberg  <wl@gnu.org>
+
+	[build] Suppress configure's `nothing to be done' message.
+
+	This is due to calling the configure script via `make' (within the
+	top-level `configure' wrapper script).  The same can happen for all
+	other secondary make targets that are used to only modify the
+	primary one, e.g., `make setup devel'.
+
+	* builds/dos/detect.mk (emx, turboc, watcom, borlandc, borlandc16),
+	builds/os2/detect (visualage, watcom, borlandc, devel),
+	builds/unix/detect.mk (devel, lcc, unix), builds/windows/detect.mk
+	(visualc, watcom, visualage, lcc, mingw32, bcc32, devel-bcc,
+	devel-gcc): Use no-op recipe.
+
+2018-05-04  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+	Support symbol visibility features of Sun / Oracle C compilers.
+
+	Reported by Kiyoshi Kanazawa:
+	https://lists.gnu.org/archive/html/freetype-devel/2018-05/msg00008.html
+	Thanks to the suggestions by Alexei and Alan Coopersmith.
+
+	* builds/unix/configure.raw: Check if "-xldscope=hidden" is
+	accepted, and if so, it is added to CFLAGS.  This is the option
+	making Sun / Oracle C compilers hide the symbols from global
+	scope.
+	* include/freetype/config/ftconfig.h: Use "__global" prefix
+	for FT_EXPORT() macro, if SunPro C is newer than Sun ONE
+	Studio 8 (2003).
+	* builds/unix/ftconfig.in: Ditto.
+	* builds/vms/ftconfig.h: Ditto.
+
+2018-05-02  Nikolaus Waxweiler  <madigens@gmail.com>
+
+	Unbreak CMake Windows installation
+
+	* CMakeLists.txt: Generate ftconfig.h on non-UNIX.
+
+2018-05-02  Werner Lemberg  <wl@gnu.org>
+
+	Remove FT_CONFIG_OPTION_PIC and related code.
+
+	*/* [FT_CONFIG_OPTION_PIC]: Remove all code guarded by this
+	preprocessor symbol.
+
+	*/*: Replace `XXX_GET' macros (which could be either a function in
+	PIC mode or an array in non-PIC mode) with `xxx' arrays.
+
+	* include/freetype/internal/ftpic.h, src/autofit/afpic.c,
+	src/autofit/afpic.h, src/base/basepic.c, src/base/basepic.h,
+	src/base/ftpic.c, src/cff/cffpic.c, src/cff/cffpic.h,
+	src/pshinter/pshpic.c, src/pshinter/pshpic.h, src/psnames/pspic.c,
+	src/psnames/pspic.h, src/raster/rastpic.c, src/raster/rastpic.h,
+	src/sfnt/sfntpic.c, src/sfnt/sfntpic.h, src/smooth/ftspic.c,
+	src/smooth/ftspic.h, src/truetype/ttpic.c, src/truetype/ttpic.h:
+	Removed.
+
+2018-05-01  Werner Lemberg  <wl@gnu.org>
+
+	* Version 2.9.1 released.
+	=========================
+
+
+	Tag sources with `VER-2-9-1'.
+
+	* docs/VERSION.TXT: Add entry for version 2.9.1.
+	* docs/CHANGES: Updated.
+
+	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
+	src/base/ftver.rc, builds/windows/vc2005/index.html,
+	builds/windows/vc2008/freetype.vcproj,
+	builds/windows/vc2008/index.html,
+	builds/windows/vc2010/freetype.vcxproj,
+	builds/windows/vc2010/index.html,
+	builds/windows/visualc/freetype.dsp,
+	builds/windows/visualc/freetype.vcproj,
+	builds/windows/visualc/index.html,
+	builds/windows/visualce/freetype.dsp,
+	builds/windows/visualce/freetype.vcproj,
+	builds/windows/visualce/index.html,
+	builds/wince/vc2005-ce/freetype.vcproj,
+	builds/wince/vc2005-ce/index.html,
+	builds/wince/vc2008-ce/freetype.vcproj,
+	builds/wince/vc2008-ce/index.html: s/2.9/2.9.1/, s/29/291/.
+
+	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
+
+	* builds/unix/configure.raw (version_info): Set to 22:1:16.
+	* CMakeLists.txt (VERSION_PATCH): Set to 1.
+
+	* include/freetype/ftgasp.h: Use FT_BEGIN_HEADER and FT_END_HEADER.
+
+2018-04-26  Werner Lemberg  <wl@gnu.org>
+
+	Another fix for handling invalid format 2 cmaps.
+
+	Sigh.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8003
+
+	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
+	an endless loop.
+
+2018-04-24  Ben Wagner  <bungeman@google.com>
+
+	[base] Avoid undefined behaviour in lcd filtering code (#53727).
+
+	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
+	Ensure `height > 0'.
+
+2018-04-22  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftoutln.c (FT_Outline_Decompose): Improve error tracing.
+
+2018-04-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[base] Fix bitmap emboldening.
+
+	Bug introduced after release 2.8.
+
+	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): We use
+	`FT_QALLOC_MULT', which doesn't zero out the buffer.  Adjust the
+	bitmap copying code to take care of this fact.
+
+2018-04-22  Werner Lemberg  <wl@gnu.org>
+
+	Another fix for handling invalid format 2 cmaps.
+
+	The previous commit was incomplete.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7928
+
+	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition to avoid
+	an endless loop.
+
+2018-04-19  Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Georgian Mtavruli characters.
+
+	This will be part of the forthcoming Unicode 11.0.
+
+	* src/autofit/afblue.dat: Add blue zone data for Mtavruli.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Mtavruli standard character.
+
+2018-04-18  Werner Lemberg  <wl@gnu.org>
+
+	Fix handling of invalid format 2 cmaps.
+
+	The problem was introduced after the last release.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7828
+
+	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Avoid endless loop.
+
+2018-04-17  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflow issues.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7739
+
+	* src/truetype/ttinterp.c (Ins_CEILING): Use FT_PIX_CEIL_LONG.
+
+2018-04-16  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflow issues.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7718
+
+	* src/truetype/ttinterp.c (Ins_MIRP): Use ADD_LONG.
+
+2018-04-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[build] Use `info' function of make 3.81.
+
+	* configure, docs/INSTALL, docs/INSTALL.CROSS, docs/INSTALL.GNU,
+	docs/INSTALL.UNIX, docs/MAKEPP: Bump make version requirements.
+
+	* builds/detect.mk (std_setup): Replace `echo' with `info'.
+	(dos_setup): Removed.
+	* builds/unix/install.mk, builds/modules.mk, builds/dos/detect.mk,
+	builds/windows/detect.mk, builds/os2/detect.mk: Updated.
+	* builds/newline: No longer needed.
+
+2018-04-15  Werner Lemberg  <wl@gnu.org>
+
+	[truetype]: Limit `SLOOP' bytecode argument to 16 bits.
+
+	This fixes
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7707
+
+	* src/truetype/ttinterp.c (Ins_SLOOP): Do it.
+
+2018-04-14  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflow issues.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7652
+
+	* src/truetype/ttinterp.c (Ins_MDAP): Use SUB_LONG.
+
+2018-04-14  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Update to Unicode 11.0.0.
+
+	But no support new scripts (volunteers welcomed).
+
+	* src/autofit/afranges.c (af_arab_nonbase_uniranges,
+	af_beng_nonbase_uniranges, af_cakm_nonbase_uniranges,
+	af_deva_nonbase_uniranges, af_geor_uniranges,
+	af_gujr_nonbase_uniranges, af_mlym_nonbase_uniranges,
+	af_nkoo_nonbase_uniranges, af_telu_nonbase_uniranges,
+	af_hani_uniranges): Add new data.
+
+2018-04-10  Nikolaus Waxweiler  <madigens@gmail.com>
+
+	* CMakeLists.txt, builds/cmake/FindHarfBuzz.cmake: Extensive
+	modernization measures.
+
+	This brings up the minimum required CMake version to 2.8.12.
+
+	The installation paths follow the GNU defaults now, e.g. installing on a
+	64 bit host will place binaries into the lib64/ folder on e.g. Fedora.
+
+	Symbols are hidden by default (e.g. `-fvisibility=hidden' on GCC).
+
+	CMake will no longer look for a C++ compiler.
+
+	Library and .so version now match the Autotools build.
+
+	Comments in the build file and informational messages now use platform
+	agnostic example commands.
+
+	ftoption.h and ftconfig.h are written directly without a redundant `-new'
+	copy.
+
+	External dependencies are expressed as option()s and will turn up as such
+	in cmake-gui.
+
+	Internal: Properties such as dependencies and include directories are now
+	privately set on the freetype library instead of globally.
+
+	The CPack definitions have been cleaned up, the `make dist' has been
+	removed. Source packages generated with CPack don't contain Autotools
+	files and aren't used by the maintainers anyway.
+
+	On Windows, src/base/ftver.rc is compiled to decorate the library with
+	version and copyright information.
+
+	A pkg-config file is now generated and installed.
+
+2018-04-09  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflow issues.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7453
+
+	* src/truetype/ttinterp.c (Round_Super, Round_Super_45): Use
+	ADD_LONG and SUB_LONG.
+
+2018-04-06  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[windows, wince] Clean up legacy project files.
+
+	* builds/wince/vc2005-ce/freetype.vcproj,
+	builds/wince/vc2008-ce/freetype.vcproj,
+	builds/windows/vc2005/freetype.vcproj,
+	builds/windows/vc2008/freetype.vcproj,
+	builds/windows/visualce/freetype.vcproj,
+	builds/windows/visualce/freetype.dsp,
+	builds/windows/visualc/freetype.vcproj,
+	builds/windows/visualc/freetype.dsp: Remove per-file compile flags.
+
+2018-04-04  Werner Lemberg  <wl@gnu.org>
+
+	[cff, type1] Sanitize `BlueFuzz' and `BlueShift'.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7371
+
+	* src/cff/cffload.c (cff_load_private_dict): Sanitize
+	`priv->blue_shift' and `priv->blue_fuzz' to avoid overflows later
+	on.
+
+	* src/type1/t1load.c (T1_Open_Face): Ditto.
+
+2018-04-04  Ben Wagner  <bungeman@google.com>
+
+	* src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554),
+	`DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'.
+	(tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts
+	in above.
+
+2018-04-01  Werner Lemberg  <wl@gnu.org>
+
+	* builds/toplevel.mk (work): Use $(SEP).
+
+	This fixes the `make refdoc' using Cygwin: $(CAT) is `type' on this
+	platform, and this program only understands backslashes in paths.
+
+	Reported by Nikhil Ramakrishnan <ramakrishnan.nikhil@gmail.com>.
+
+2018-03-30  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix memory leak (only if tracing is on).
+
+	* src/truetype/ttgxvar.c (TT_Get_MM_Var) [FT_DEBUG_LEVEL_TRACE}: Fix
+	it.
+
+2018-03-23  Ben Wagner  <bungeman@google.com>
+
+	[sfnt] Correctly handle missing bitmaps in sbix format (#53404).
+
+	* src/sfnt/ttfsbit.c (tt_face_load_sbix_image): Fix return value.
+
+2018-03-23  Ben Wagner  <bungeman@google.com>
+
+	[truetype] Fix advance of empty glyphs in bitmap fonts (#53393).
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): Apply scaling to metrics
+	for empty bitmaps.
+
+2018-03-22  Werner Lemberg  <wl@gnu.org>
+
+	Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415).
+
+	builds/amiga/makefile, builds/amiga/makefile.os4,
+	builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt,
+	builds/mac/FreeType.m68k_far.make.txt,
+	builds/mac/FreeType.ppc_carbon.make.txt,
+	builds/mac/FreeType.ppc_classic.make.txt,
+	builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj,
+	builds/wince/vc2008-ce/freetype.vcproj,
+	builds/windows/vc2005/freetype.vcproj,
+	builds/windows/vc2008/freetype.vcproj,
+	builds/windows/vc2010/freetype.vcxproj,
+	builds/windows/vc2010/freetype.vcxproj.filters,
+	builds/windows/visualc/freetype.dsp,
+	builds/windows/visualc/freetype.vcproj,
+	builds/windows/visualce/freetype.dsp,
+	builds/windows/visualce/freetype.vcproj, vms_make.com: Do it.
+
+2018-03-13  Werner Lemberg  <wl@gnu.org>
+
+	* src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric
+	overflow.
+
+2018-03-13  Werner Lemberg  <wl@gnu.org>
+
+	Fix cmap format 2 handling (#53320).
+
+	The patch introduced for #52646 was not correct.
+
+	* src/sfnt/ttcmap.c (tt_cmap2_char_next): Adjust condition.
+
+2018-03-10  Nikolaus Waxweiler  <madigens@gmail.com>
+
+	* CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05.
+
+2018-03-09  Chun-wei Fan  <fanc999@yahoo.com.tw>
+
+	* CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287).
+
+	Do not limit DLL builds to MinGW, since we already have
+	`__declspec(dllexport)' directives in `ftconfig.h'.
+	Also suppress more warnings for POSIX functions.
+
+2018-03-08  Hugh McMaster  <hugh.mcmaster@outlook.com>
+
+	Make installation of `freetype-config' optional (#53093).
+
+	* builds/unix/configure.raw: Add option `--enable-freetype-config'
+	and set `INSTALL_FT2_CONFIG'.
+	* builds/unix/unix-def.in (INSTALL_FT2_CONFIG): Define.
+	* builds/unix/install.mk (install): Handle it.
+
+2018-03-05  Werner Lemberg  <wl@gnu.org>
+
+	Make `ftlcdfil.c' part of the `base' module.
+
+	`ftobjs.c' needs `ft_lcd_padding'.
+
+	Problem reported by duhuanpeng <548708880@qq.com>.
+
+	* modules.cfg (BASE_EXTENSIONS): Don't include `ftlcdfil.c'.
+
+	* src/base/ftbase.c: Include `ftlcdfil.c'.
+	* src/base/rules.mk (BASE_SRC): Add `ftlcdfil.c'.
+	* src/base/Jamfile (_sources): Adjusted.
+
+	* docs/INSTALL.ANY: Updated.
+
+2018-03-05  Werner Lemberg  <wl@gnu.org>
+
+	Make `ftfntfmt.c' part of the `base' module.
+
+	`ftobjs.c' needs `FT_Get_Font_Format'.
+
+	Problem reported by duhuanpeng <548708880@qq.com>.
+
+	* modules.cfg (BASE_EXTENSIONS): Don't include `ftfntfmt.c'.
+
+	* src/base/ftbase.c: Include `ftfntfmt.c'.
+	* src/base/rules.mk (BASE_SRC): Add `ftfntfmt.c'.
+	* src/base/Jamfile (_sources): Adjusted.
+
+	* docs/INSTALL.ANY: Updated.
+
+2018-03-01  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments.
+
+2018-02-23  Werner Lemberg  <wl@gnu.org>
+
+	* builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer.
+
+	Problem reported by Alan Coopersmith <alan.coopersmith@oracle.com>.
+
+2018-02-17  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Prefer `CBDT'/`CBLC' over `glyf' table (#53154).
+
+2018-02-06  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflow issues.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=6027
+
+	* src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIAP, Ins_MIRP): Use
+	SUB_LONG; avoid FT_ABS.
+
+2018-02-04  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[unix] Use -fvisibility=hidden.
+
+	It is now widely recommended that ELF shared libraries hide symbols
+	except those with explicit __attribute__((visibility("default"))).
+	This is supported by all major compilers and should rather be an
+	option in libtool.
+
+	* builds/unix/configure.raw: Add -fvisibility=hidden to CFLAGS.
+	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
+	include/freetype/config/ftconfig.h (FT_EXPORT): Use visibility
+	attribute.
+
 2018-01-27  Werner Lemberg  <wl@gnu.org>
 
 	[truetype] Better protection against invalid VF data.
@@ -150,7 +1916,7 @@
 	(FREETYPE_PATCH): Set to 0.
 
 	* builds/unix/configure.raw (version_info): Set to 22:0:16.
-	* CMakeLists.txt (VERSION_PATCH): Set to 1.
+	* CMakeLists.txt (VERSION_PATCH): Set to 0.
 
 2018-01-07  Werner Lemberg  <wl@gnu.org>
 
@@ -1007,7 +2773,7 @@
 
 	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3514.
 
-	* src/raster/ftrend1.c (ft_raster1_render): Exlicitly signed height.
+	* src/raster/ftrend1.c (ft_raster1_render): Explicitly signed height.
 	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Ditto.
 	* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): Explicitly unsigned
 	subtraction.
@@ -1926,3129 +3692,10 @@
 	* build/windows/vc2010/freetype.vcxproj: Use MaxSpeed (/02)
 	optimization for Release configuration throughout the project.
 
-2017-09-16  Werner Lemberg  <wl@gnu.org>
-
-	* Version 2.8.1 released.
-	=========================
-
-
-	Tag sources with `VER-2-8-1'.
-
-	* docs/VERSION.TXT: Add entry for version 2.8.1.
-	* docs/CHANGES: Updated.
-
-	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
-	builds/windows/vc2005/index.html,
-	builds/windows/vc2008/freetype.vcproj,
-	builds/windows/vc2008/index.html,
-	builds/windows/vc2010/freetype.vcxproj,
-	builds/windows/vc2010/index.html,
-	builds/windows/visualc/freetype.dsp,
-	builds/windows/visualc/freetype.vcproj,
-	builds/windows/visualc/index.html,
-	builds/windows/visualce/freetype.dsp,
-	builds/windows/visualce/freetype.vcproj,
-	builds/windows/visualce/index.html,
-	builds/wince/vc2005-ce/freetype.vcproj,
-	builds/wince/vc2005-ce/index.html,
-	builds/wince/vc2008-ce/freetype.vcproj,
-	builds/wince/vc2008-ce/index.html: s/2.8/2.8.1/, s/28/281/.
-
-	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
-
-	* builds/unix/configure.raw (version_info): Set to 21:0:15.
-	* CMakeLists.txt (VERSION_PATCH): Set to 1.
-
-2017-09-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
-
-	[sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7.
-
-	__builtin_shuffle() was introduced in gcc-4.7.  The lowest
-	gcc to enable vector operation is delayed from 4.6 to 4.7.
-
-	* src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to
-	enable the vector operation, to change the lowest gcc version
-	from 4.6 to 4.7.
-
-2017-09-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
-
-	[cache] Fix a possible overflow by signed integer comparison.
-
-	Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 ,
-	issues are found by Behdad Esfahbod and Werner Lemberg.
-
-	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace
-	a subtraction to check higher bit by a bit operation,
-	and cpp-conditionalize for appropriate systems.  Add better
-	documentation to the comment.
-	(FTC_ImageCache_LookupScaler): Ditto.
-	(FTC_SBitCache_Lookup): Ditto.
-	(FTC_SBitCache_LookupScaler): Ditto.
-
-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'.
-
-	* src/autofit/afshaper.c: Include FT_ADVANCE_H, to use
-	FT_Get_Advance() in it.
-	* src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H
-	to use PS_Unicodes in it, also include `ttpost.h' to use
-	tt_face_get_ps_name() in it.
-
-2017-09-11  Azzuro  <azzuro@team-mediaportal.com>
-
-	[build] Improve builds with different MS Visual Studio versions.
-
-	* builds/windows/vc2010/freetype.vcxproj: Switch platform toolset
-	according to the Visual Studio version.
-
-2017-09-11  Werner Lemberg  <wl@gnu.org>
-
-	* src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables.
-
-	Reported by Behdad.
-
-2017-09-09  Werner Lemberg  <wl@gnu.org>
-
-	[autofit] Improve communication with ftgrid.
-
-	* src/autofit/afhints.c (af_glyph_hints_get_segment_offset):
-	Provide values in font units.
-
-2017-09-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
-
-	[base] Remove a check for resource ID in the resource fork driver.
-
-	LastResort.dfont has a marginal resource ID 0xFFFF for sfnt
-	resource.  Inside Macintosh: More Macintosh Toolbox, `Resource IDs'
-	(1-46), tells that some IDs are reserved and should not be used.
-	FreeType2 just uses resource ID to sort the fragmented resource.
-	To accept the marginal fonts, the checking is removed.
-
-	* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id
-	validity check, fix a trace message format.
-
-2017-09-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
-
-	[sfnt, truetype] Register the tags for marginal fonts.
-
-	The first 32bit of standard TrueType variants is 0x00010000,
-	`OTTO', `ttcf', `true' or `typ1'.  2 marginal dfonts on legacy Mac
-	OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources
-	starting 0xA5 followed by `kbd' or `lst'.  Considering the following
-	data could be parsed as conventional TrueType fonts, the header
-	checking is updated to allow these tags.  It seems that recent Mac
-	OS X has already switched to normal TTF for these fonts.
-
-	See the discussion at
-	http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0
-
-	* include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header
-	tags for Keyboard.dfont and LastResort.dfont.
-	* src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource
-	starts with TTAG_0xA5kbd or TTAG_0xA5lst.
-	* src/truetype/ttobjs.c (tt_face_init): Accept the face with the
-	format tag is TTAG_0xA5kbd or TTAG_0xA5lst.
-
-2017-09-05  Werner Lemberg  <wl@gnu.org>
-
-	Fix multiple calls of `FT_Bitmap_Convert'.
-
-	The documentation of `FT_Bitmap_Convert' says that multiple calls do
-	proper reallocation of the target FT_Bitmap object.  However, this
-	failed for the sequence
-
-	  non-empty bitmap
-	  empty bitmap
-	  non-empty bitmap
-
-	Reason was that `FT_Bitmap_Convert' only reallocated the bitmap
-	buffer if it became too small; it didn't make the buffer smaller.
-	For an empty bitmap following a non-empty one, only the buffer
-	dimension got set to zero, without deallocation.  If the next call
-	was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was
-	triggered.
-
-	* src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target
-	buffer to the correct size.
-
-	* docs/CHANGES: Document it.
-
-2017-09-05  Werner Lemberg  <wl@gnu.org>
-
-	[bdf] Fix size and resolution handling.
-
-	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if
-	`POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are
-	missing.
-
-	* docs/CHANGES: Document it.
-
-2017-08-25  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	Swap `ALLOC_MULT' arguments (#51833).
-
-	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated.
-	* src/winfonts/winfnt.c (FNT_Load_Glyph): Updated.
-	* src/raster/ftrend1.c (ft_raster1_render): Updated.
-
-2017-08-23  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Fix clang compilation (#51788).
-
-	* src/sfnt/pngshim.c (premultiply_data): Use vectors instead of
-	scalars.
-	(vector_shuffle): New macro to take care of a different built-in
-	function name on clang.
-
-2017-08-22  Werner Lemberg  <wl@gnu.org>
-
-	[base] Don't zero out allocated memory twice (#51816).
-
-	Patch applied from bug report.
-
-	* src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to
-	avoid unnecessary overhead.
-
-2017-08-22  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Integer overflow.
-
-	Changes triggered by
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3107
-
-	* src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use
-	NEG_LONG.
-
-2017-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	[sfnt] Avoid synthetic unicode for symbol fonts with PUA.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/chromium/issues/detail?id=754574
-
-	* src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL.
-
-2017-08-16  Werner Lemberg  <wl@gnu.org>
-
-	* src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings.
-
-2017-08-15  Behdad Esfahbod  <behdad@behdad.org>
-
-	[sfnt] Speed up PNG image loading.
-
-	This reduces the overhead of `premultiply_data' by 60%.
-
-	* src/sfnt/pngshim.c (premultiply_data): Provide code which uses
-	gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a
-	time.
-
-2017-08-11  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt, truetype] Improve handling of missing sbits.
-
-	Requested by Behdad.
-
-	Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain
-	entries in the bitmap strike(s) for empty glyphs.  Instead, they
-	rely that a space glyph gets created from the font's metrics data.
-	This commit makes FreeType behave accordingly.
-
-	* include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error
-	code.
-
-	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes
-	to make a distinction between a missing bitmap in a composite and a
-	simple missing bitmap.
-
-	* src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a
-	bitmap-only font), synthesize an empty bitmap glyph if metrics are
-	available.
-
-2017-08-10  Werner Lemberg  <wl@gnu.org>
-
-	[base] Minor API improvement for default variation axis setting.
-
-	* src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
-	FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
-	FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0.
-
-	* docs/CHANGES: Updated.
-
-2017-08-08  Werner Lemberg  <wl@gnu.org>
-
-	[psnames] Really fix issue #49949.
-
-	We now use a separate preprocessor macro to handle both definition
-	and declaration of the glyph name arrays.
-
-	* src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.
-
-	* src/tools/glnames.py (StringTable::dump,
-	StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
-	(dump_encoding): Ditto.
-	(main): Use `wb' mode for writing the output file, which works on
-	Windows also.
-
-	* src/psnames/pstables.h: Regenerated.
-
-2017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	[smooth] Harmony LCD rendering.
-
-	This is a new technology for LCD-optimized rendering. It capitalizes
-	on the fact that each color channel grid is shifted by a third of a
-	pixel.  Therefore it is logical to render 3 separate monochrome
-	bitmaps shifting the outline by 1/3 pixel, and then combine them.
-	Importantly, the resulting output does not require additional LCD
-	filtering.
-
-	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
-	[!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized
-	rendering.
-
-	* include/freetype/ftlcdfil.h, include/freetype/freetype.h,
-	include/freetype/config/ftoption.h, devel/ftoption.h: Updated
-	documentation.
-
-2017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up.
-
-2017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	* src/sfnt/ttpost.c (format): Use otspec-compliant versions.
-
-2017-08-05  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Integer overflow.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868
-
-	* src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG.
-
-2017-08-05  Werner Lemberg  <wl@gnu.org>
-
-	[base, truetype] New function `FT_Get_Var_Axis_Flags'.
-
-	The reserved `flags' field got a value in OpenType version 1.8.2;
-	unfortunately, the public `FT_Var_Axis' structure misses the
-	corresponding element.  Since we can't add a new field, we add an
-	access function.
-
-	* src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function.
-
-	* include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro.
-	Updated.
-
-	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory
-	of `mmvar' to hold axis flags.
-	Fill the axis flags array.
-
-	* docs/CHANGES: Updated.
-
-2017-08-03  Nikolaus Waxweiler  <madigens@gmail.com>
-
-	[truetype] Fix metrics of B/W hinting in v40 mode.
-
-	Phantom points are now saved outside v40 backwards compatibility
-	mode.  This fixes the jumping glyphs when switching between v35 and
-	v40 monochrome mode.
-
-	* src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic.
-
-2017-08-03  Nikolaus Waxweiler  <madigens@gmail.com>
-
-	[truetype] Do not set any ClearType flags in v40 monochrome mode.
-
-	This fixes weird behavior of instructions that resulted in rendering
-	differences between v35 and v40 in monochrome mode, e.g., in
-	`timesbi.ttf'.
-
-	* src/truetype/ttinterp.c (Ins_GETINFO)
-	[TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check
-	`subpixel_hinting_lean'.
-
-2017-08-01  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko.
-
-2017-08-01  Behdad Esfahbod  <behdad@behdad.org>
-
-	[truetype] Fix loading of named instances.
-
-	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position
-	while loading the `avar' table.
-
-2017-08-01  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt, truetype] Minor adjustments for OpenType 1.8.2.
-
-	* src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now
-	(tighter) limits.
-
-	* src/truetype/ttgload.c (load_truetype_glyph): The new OpenType
-	version explicitly allows all negative values for the number of
-	contours if we have a composite glyph (this is for better backwards
-	compatibility I guess), but it still recommends value -1.
-
-2017-07-26  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Integer overflow.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738
-
-	* src/cff/cf2hints.c (cf2_glyphpath_computeOffset,
-	cf2_glyphpath_curveTo): Use ADD_INT32.
-
-2017-07-13  Werner Lemberg  <wl@gnu.org>
-
-	[base] Fix memory leak.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/chromium/issues/detail?id=738362
-
-	* src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
-	of error.
-
-2017-07-12  Werner Lemberg  <wl@gnu.org>
-
-	[base] Integer overflow.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573
-
-	* src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
-	FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG.
-
-2017-07-12  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo.
-
-	Also improve tracing message.
-
-	Problem reported as
-
-	  https://bugs.chromium.org/p/chromium/issues/detail?id=738919
-
-2017-07-07  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Integer overflow.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517
-
-	* src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32.
-
-2017-07-05  Werner Lemberg  <wl@gnu.org>
-
-	* src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning.
-
-2017-07-05  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395).
-
-2017-07-04  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Prevent address overflow (#51365).
-
-	* src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard.
-
-2017-07-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	* src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code.
-
-2017-07-03  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Integer overflow.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455
-
-	* src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG.
-
-2017-07-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	* src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name.
-
-2017-06-28  Ben Wagner  <bungeman@google.com>
-
-	Avoid Microsoft compiler warnings (#51331).
-
-	While clang's sanitizer recommends a cast to unsigned for safe
-	negation (to handle -INT_MIN), both MSVC and Visualc emit warning
-	C4146 if an unsigned value gets negated.
-
-	* include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32),
-	src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a
-	subtraction.
-
-2017-06-27  Werner Lemberg  <wl@gnu.org>
-
-	* src/cff/cffparse.c (do_fixed): Fix typo.
-
-	Spotted by chris <chris@gcjd.org>.
-
-2017-06-27  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391
-
-	* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use
-	NEG_LONG.
-
-	* src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG.
-
-2017-06-24  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364
-
-	* src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG.
-
-2017-06-22  Werner Lemberg  <wl@gnu.org>
-
-	[cff, truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328
-
-	* src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and
-	SUB_INT32.
-
-	* src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG.
-
-2017-06-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	[sfnt] Synthesize a Unicode charmap if one is missing.
-
-	* src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it.
-	* src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init,
-	tt_cmap_unicode_done, tt_cmap_unicode_char_index,
-	tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement
-	synthetic Unicode charmap class.
-	(tt_get_cmap_info): Make sure the callback is available.
-
-	* src/sfnt/sfobjs.c (sfnt_load_face)
-	[FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing,
-	synthesize one.
-
-	* include/freetype/config/ftoption.h: Document it.
-	* devel/ftoption.h: Ditto.
-
-2017-06-20  Tony Theodore  <tonyt@logyst.com>
-
-	Fix pkg-config in freetype-config for cross-compiling (#51274).
-
-	* builds/unix/unix-def.in (PKG_CONFIG): New variable.
-	(freetype-config): Use it in sed expression.
-
-	* builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/.
-
-2017-06-20  Werner Lemberg  <wl@gnu.org>
-
-	[cff, truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313
-
-	* src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32.
-
-	* src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS.
-
-2017-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	[base, smooth] LCD filtering cleanups.
-
-	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
-	Clean up, start filtering from the bottom-left origin.
-
-	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.
-
-2017-06-16  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276
-
-	* src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use
-	ADD_LONG and SUB_LONG.
-
-2017-06-15  Werner Lemberg  <wl@gnu.org>
-
-	[bdf, cff] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261
-
-	* src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with
-	direct code to avoid value negation.
-
-	* src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and
-	ADD_INT32.
-
-2017-06-13  Werner Lemberg  <wl@gnu.org>
-
-	* src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding.
-
-	FreeType only sets a default active encoding for Unicode.
-
-2017-06-13  Werner Lemberg  <wl@gnu.org>
-
-	[cff, truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218
-
-	* src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32.
-
-	* src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG.
-
-2017-06-11  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210
-
-	* src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and
-	ADD_INT32.
-
-	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use
-	ADD_INT32.
-
-2017-06-10  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Fix TT_Set_Var_Design.
-
-	Reported by Nikolaus Waxweiler <madigens@gmail.com>.
-
-	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the
-	case where we have less input coordinates than axes.
-
-2017-06-10  Werner Lemberg  <wl@gnu.org>
-
-	* src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo.
-
-	Bug introduced 2017-05-28.
-
-2017-06-09  Werner Lemberg  <wl@gnu.org>
-
-	[cff, truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186
-
-	* src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32.
-
-	* src/truetype/ttinterp.c (Round_None, Round_To_Grid,
-	Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid,
-	Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG,
-	SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG,
-	FT_PAD_ROUND_LONG
-	(Ins_SxVTL, Ins_MIRP): Use SUB_LONG.
-	(_iup_worker_shift): Use SUB_LONG and ADD_LONG.
-
-2017-06-09  Werner Lemberg  <wl@gnu.org>
-
-	Provide more macros for flooring, ceiling, and rounding.
-
-	These versions don't produce run-time errors due to integer
-	overflow.
-
-	* include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
-	(FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
-	FT_PIX_CEIL_LONG): New macros.
-	(FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
-	FT_PIX_CEIL_INT32): New macros.
-
-2017-06-09  Werner Lemberg  <wl@gnu.org>
-
-	Remove unused macros.
-
-	* include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
-	NEG_INT): Deleted.
-
-2017-06-09  Werner Lemberg  <wl@gnu.org>
-
-	*/*: Remove `OVERFLOW_' prefix.
-
-	This increases readability.
-
-2017-06-07  Werner Lemberg  <wl@gnu.org>
-
-	[cff, truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137
-
-	* src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32.
-
-	* src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use
-	OVERFLOW_SUB_LONG.
-
-2017-06-06  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122
-
-	* src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
-
-	* src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else
-	branches.
-
-2017-06-05  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Integer overflow.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089
-
-	* src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32.
-
-2017-06-04  Werner Lemberg  <wl@gnu.org>
-
-	[cff, truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088
-
-	* src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32.
-
-	* src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG,
-	OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG.
-
-2017-06-03  Werner Lemberg  <wl@gnu.org>
-
-	[base, cff, truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068
-
-	* src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
-	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
-
-	* src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c
-	(cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32.
-
-	* src/truetype/ttgload.c (compute_glyph_metrics): User
-	OVERFLOW_SUB_LONG.
-
-	* src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig,
-	Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X,
-	Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use
-	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
-
-2017-06-03  Werner Lemberg  <wl@gnu.org>
-
-	* builds/unix/freetype-config.in: Fix pkg-config test (#51162).
-
-	Patch directly taken from bug report.
-
-2017-06-03  Werner Lemberg  <wl@gnu.org>
-
-	[bdf] Synchronize sanity checks with pcf driver.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058
-
-	* src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent.
-	Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
-	RESOLUTION_Y properties.
-
-2017-06-03  Werner Lemberg  <wl@gnu.org>
-
-	[cff, truetype] Integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057
-
-	* src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32.
-
-	* src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG.
-	(Ins_SUB): Use OVERFLOW_SUB_LONG.
-	(Ins_NEG): Use NEG_LONG.
-
-2017-06-03  Werner Lemberg  <wl@gnu.org>
-
-	ftcalc.h: Avoid left-shift of negative numbers.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055
-
-	* include/freetype/internal/ftcalc.h (INT_TO_F26DOT6,
-	INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication.
-
-2017-06-02  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Even more integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046
-
-	* src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use
-	OVERFLOW_ADD_INT32.
-
-2017-06-02  Werner Lemberg  <wl@gnu.org>
-
-	[cff] More integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032
-
-	* src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
-
-2017-06-02  Werner Lemberg  <wl@gnu.org>
-
-	[bdf] Don't left-shift negative numbers.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031
-
-	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication.
-
-2017-06-02  Werner Lemberg  <wl@gnu.org>
-
-	[bdf] Fix integer scanning routines.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029
-
-	* src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos):
-	Stop scanning if result would overflow.
-
-2017-06-02  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Fix integer overflows.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028
-
-	* src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c
-	(cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32.
-
-2017-06-01  Werner Lemberg  <wl@gnu.org>
-
-	[smooth] Some 32bit integer overflow run-time errors.
-
-	* src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG,
-	OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros.
-	[!STANDALONE]: Include FT_INTERNAL_CALC_H.
-	(gray_render_cubic): Use those macros where appropriate.
-
-2017-06-01  Werner Lemberg  <wl@gnu.org>
-
-	* src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'.
-
-2017-06-01  Werner Lemberg  <wl@gnu.org>
-
-	[psaux] 32bit integer overflow tun-time errors (#46149).
-
-	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use
-	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate.
-
-2017-06-01  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again.
-
-	Problem reported by Marek Kašík <mkasik@redhat.com>.
-
-	The problematic font that exceeds the old limit is Padauk-Bold,
-	version 3.002, containing bytecode generated by a buggy version of
-	ttfautohint.
-
-2017-05-31  Werner Lemberg  <wl@gnu.org>
-
-	[cff] 32bit integer overflow run-time errors 2/2 (#46149).
-
-	This commit handles the new engine.
-
-	* include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32,
-	OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG,
-	NEG_INT32): New macros.
-
-	* src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32.
-
-	* src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init,
-	cf2_hintmap_map, cf2_glyphpath_hintPoint,
-	cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset,
-	cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use
-	OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and
-	NEG_INT32 where appropriate.
-
-	* src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend,
-	cf2_interpT2CharString): Ditto.
-	Also add some other code where needed to avoid overflow.
-
-2017-05-30  Werner Lemberg  <wl@gnu.org>
-
-	[cff] 32bit integer overflow run-time errors 1/2 (#46149).
-
-	This commit handles the old engine.
-
-	* src/cff/cffgload.c: Include FT_INTERNAL_CALC_H.
-	(cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and
-	OVERFLOW_SUB_LONG where needed.
-
-	* src/cff/cffparse.c: Include FT_INTERNAL_CALC_H.
-	(power_ten_limits): New static array.
-	(do_fixed): Use it to prevent multiplication overflow.
-	(cff_parser_run): Use OVERFLOW_ADD_LONG.
-
-2017-05-30  Werner Lemberg  <wl@gnu.org>
-
-	[psaux] Correctly handle sequences of multiple number signs.
-
-	* src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
-	if we encounter more than a single sign.
-
-2017-05-29  Werner Lemberg  <wl@gnu.org>
-
-	[pcf] 32bit integer overflow run-time errors (#46149).
-
-	* src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for
-	`fontAscent' and `fontDescent'.
-	(pcf_load_font): Add sanity checks for global height.
-	Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
-	RESOLUTION_X, and RESOLUTION_Y properties.
-
-2017-05-29  Werner Lemberg  <wl@gnu.org>
-
-	Handle some integer overflow run-time errors (#46149, #48979).
-
-	This commit (mainly for 32bit CPUs) is the first of a series of
-	similar commits to handle known integer overflows.  Basically, all
-	of them are harmless, since they affect rendering of glyphs only,
-	not posing security threats.  It is expected that fuzzying will show
-	up more overflows, to be fixed in due course.
-
-	The idea is to mark places where overflows can occur, using macros
-	that simply cast to unsigned integers, because overflow arithmetic
-	is well defined in this case.  Doing so suppresses run-time errors
-	of sanitizers without adding computational overhead.
-
-	* include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT,
-	OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG,
-	OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros.
-
-	* src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply,
-	FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled,
-	ft_corner_orientation): Use new macros.
-
-	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros.
-
-2017-05-28  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove.
-
-	This macro is not used.
-
-2017-05-28  Werner Lemberg  <wl@gnu.org>
-
-	[cff] s/cf2_floatToFixed/cf2_doubleToFixed/.
-
-	The new name better describes what the macro actually does;
-	additionally, we don't need a trailing `f' for literals (there was
-	only a single such instance in the code, but this caused a clang
-	warning because the macro itself uses `double' literals).
-
-	* src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h,
-	src/cff/cf2font.c, src/cff/cf2hints.c: Updated.
-
-2017-05-28  Werner Lemberg  <wl@gnu.org>
-
-	Fix negation of INT_MIN and LONG_MIN (#46149).
-
-	* src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned
-	value, to be used as the result.
-	(FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix,
-	FT_Vector_NormLen): Updated.
-
-2017-05-27  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Fix handling of design coordinates (#51127).
-
-	* src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design
-	coordinates if we have to create the `blends->coord' array.
-	(TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance
-	coordinates if no instance is selected yet.
-
-2017-05-24  Werner Lemberg  <wl@gnu.org>
-
-	[bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII).
-
-	Problem reported by Marek Kašík <mkasik@redhat.com>, cf.
-
-	  https://bugzilla.redhat.com/show_bug.cgi?id=1451795
-
-	* src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c
-	(PCF_Face_Init): Implement it.
-
-2017-05-20  Nikolaus Waxweiler  <madigens@gmail.com>
-
-	[truetype] Always use interpreter v35 for B/W rendering (#51051).
-
-	* src/truetype/ttgload.c (tt_loader_init)
-	[TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust
-	`subpixel_hinting_lean', `grayscale_cleartype', and
-	`vertical_lcd_lean' accordingly.
-
-	* src/truetype/ttinterp.c (Ins_GETINFO): Updated.
-	(TT_RunIns): Update `backward_compatibility' flag.
-
-2017-05-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	[smooth] Implement minimal dynamic padding for LCD filtering.
-
-	Extra bitmap padding for LCD filtering depends on the filter.  The
-	default 5-tap filter needs 2 extra subpixels.  The light 3-tap filter
-	needs only 1 extra subpixel.  This space could be already available
-	due to rounding.  In order to optimize the padding, we now expand
-	CBox for the given filter weights before rounding.
-
-	This change breaks current Skia (and Firefox).
-
-	* include/freetype/internal/ftobjs.h (FT_LibraryRec)
-	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field.
-
-	* src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights,
-	FT_Library_SetLcdFilter): Remove `lcd_extra' initializations.
-
-	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic
-	LCD padding.
-
-2017-05-15  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Return proper scaling values for SBIX bitmaps.
-
-	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
-
-	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it.
-
-2017-05-15  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Fix error handling for embedded bitmaps.
-
-	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
-
-	* src/truetype/ttgload.c (TT_Load_Glyph)
-	[TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not
-	scalable.
-
-2017-05-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	[autofit] Make autohint warping NORMAL option.
-
-	This moves warping option from LIGHT to NORMAL mode.  This makes LIGHT
-	truly void of hinting in x-direction, with left side bearing never
-	changed and right side bearing only altered by advance rounding.
-	Therefore, LIGHT is now ready to return fractional advance.  As a
-	NORMAL option, warping substitutes normal hinting.
-
-	* src/autofit/afcjk.c (af_cjk_hints_apply): Updated.
-	* src/autofit/aflatin.c (af_latin_hints_apply): Updated.
-	* src/autofit/aflatin2.c (af_latin2_hints_apply): Updated.
-
-	* src/autofit/afloader.c (af_loader_load_glyph): Handle warping
-	phantom points as normal.
-
-2017-05-14  Werner Lemberg  <wl@gnu.org>
-
-	Remove remnants of raster pool.
-
-	* include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove
-	`raster_pool' and `raster_pool_size' fields.
-
-	* src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c
-	(ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated.
-
-2017-05-13  Werner Lemberg  <wl@gnu.org>
-
-	* Version 2.8 released.
-	=======================
-
-
-	Tag sources with `VER-2-8'.
-
-	* docs/VERSION.TXT: Add entry for version 2.8.
-	* docs/CHANGES: Updated.
-
-	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
-	builds/windows/vc2005/index.html,
-	builds/windows/vc2008/freetype.vcproj,
-	builds/windows/vc2008/index.html,
-	builds/windows/vc2010/freetype.vcxproj,
-	builds/windows/vc2010/index.html,
-	builds/windows/visualc/freetype.dsp,
-	builds/windows/visualc/freetype.vcproj,
-	builds/windows/visualc/index.html,
-	builds/windows/visualce/freetype.dsp,
-	builds/windows/visualce/freetype.vcproj,
-	builds/windows/visualce/index.html,
-	builds/wince/vc2005-ce/freetype.vcproj,
-	builds/wince/vc2005-ce/index.html,
-	builds/wince/vc2008-ce/freetype.vcproj,
-	builds/wince/vc2008-ce/index.html: s/2.7.1/2.8/, s/271/28/.
-
-	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 8.
-	(FREETYPE_PATCH): Set to 0.
-
-	* builds/unix/configure.raw (version_info): Set to 20:0:14.
-	* CMakeLists.txt (VERSION_MINOR): Set to 8.
-	(VERSION_PATCH): Set to 0.
-
-2017-05-12  Hin-Tak Leung  <htl10@users.sourceforge.net>
-
-	Fix `FT_UINT_TO_POINTER' macro for Windows.
-
-	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
-	include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER) [_WIN64]:
-	Fix definition.
-
-2017-05-11  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Chakma script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Chakma.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Chakma standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.
-
-2017-05-10  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Kayah Li script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Kayah Li.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Kayah Li standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Kayah Li data.
-
-2017-05-10  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Bamum script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Bamum.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Bamum standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Bamum data.
-
-2017-05-10  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Saurashtra script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Saurashtra.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Saurashtra standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Saurashtra
-	data.
-
-2017-05-10  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Buhid script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Buhid.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Buhid standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Buhid data.
-
-2017-05-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Shavian script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Shavian.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Shavian standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Shavian data.
-
-2017-05-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Vai script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Vai.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Vai standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Vai data.
-
-2017-05-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Osmanya script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Osmanya.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Osmanya standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Osmanya data.
-
-2017-05-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Coptic script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Coptic.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Coptic standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data.
-
-2017-05-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Carian script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Carian.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Carian standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Carian data.
-
-2017-05-07  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Add tricky font `DFGirl-W6-WIN-BF' (from Dynalab).
-
-	Reported by Roy Tam <roytam@gmail.com>.
-
-	* src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
-
-2017-05-07  Roy Tam  <roytam@gmail.com>
-	    Werner Lemberg  <wl@gnu.org>
-
-	[truetype] More tricky fonts (mainly from Dynalab).
-
-	* src/truetype/ttobjs.c (tt_check_trickyness_family,
-	tt_check_trickyness_sfnt_ids): Add them.
-
-2017-05-07  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Add tricky font `DLCHayMedium' (from Dynalab).
-
-	Reported by Roy Tam <roytam@gmail.com>.
-
-	* src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
-
-2017-05-03  Werner Lemberg  <wl@gnu.org>
-
-	*/*: s/backwards compatibility/backward compatibility/.
-
-2017-05-03  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Unified Canadian Syllabics script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Unified Canadian
-	Syllabics.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Unified Canadian Syllabics standard
-	character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Unified
-	Canadian Syllabics data.
-
-2017-05-03  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org>
-
-	[autofit] Add blue-zone support for Sundanese script.
-
-	This essentially moves the Sundanese script from the `Indic' hinter
-	to the `Latin' hinter.
-
-	* src/autofit/afblue.dat: Add blue zone data for Sundanese.
-
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Sundanese standard character and move
-	data out of AF_CONFIG_OPTION_INDIC block.
-
-	* src/autofit/afranges.c: Move Sundanese data out of
-	AF_CONFIG_OPTION_INDIC block.
-
-	* src/autofit/afstyles.h: Update Sundanese data; in particular, use
-	AF_WRITING_SYSTEM_LATIN.
-
-2017-05-03  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Avestan script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Avestan.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Avestan standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Avestan data.
-
-2017-05-02  Behdad Esfahbod  <behdad@behdad.org>
-
-	[truetype] Make `IUP' gvar deltas do the same as Apple (#50832).
-
-	When points are not touched by gvar interpolation deltas, FreeType
-	gave a slightly different result than Apple's CoreText.
-
-	The OpenType working group will update the specification to document
-	the following behaviour: If the two points with deltas to the `left'
-	and `right' of the untouched point have the same coordinate, then
-	the inferred delta for the untouched point should be zero.
-
-	* src/truetype/ttgxvar.c (tt_delta_interpolate): Implement new
-	behaviour.
-
-2017-05-02  Werner Lemberg  <wl@gnu.org>
-
-	[autofit] Remove `slight' auto-hint mode again.
-
-	A poll on freetype-devel favoured changes directly applied to
-	`light'.
-
-	* include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT,
-	FT_RENDER_MODE_SLIGHT): Removed.
-
-	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
-	(af_latin_hints_init), src/autofit/aflatin2.c
-	(af_latin2_hints_init): Revert change from 2017-04-22.
-
-	* src/autofit/afloader.c (af_loader_load_glyph) Remove references to
-	FT_RENDER_MODE_SLIGHT.
-	[AF_CONFIG_OPTION_TT_SIZE_METRICS]: Enable TrueType-like metrics
-	unconditionally.
-
-	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Revert change from
-	2017-04-22.
-
-	* src/base/ftobjs.c (FT_Load_Glyph): Revert change from 2017-04-22.
-
-	* src/pshinter/pshalgo.c (ps_hints_apply): Revert change from
-	2017-04-22.
-
-	* src/smooth/ftsmooth.c (ft_smooth_render): Revert change from
-	2017-04-22.
-
-	* docs/CHANGES: Updated.
-
-2017-04-30  Werner Lemberg  <wl@gnu.org>
-
-	[autofit] Fix metrics computation.
-
-	Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and
-	Nikolaus Waxweiler <madigens@gmail.com>.
-
-	* src/base/ftobjs.c (FT_Request_Size): Trigger recomputation of
-	auto-hinter metrics.  Without this change, multiple size changing
-	calls for a single face fail.
-
-2017-04-29  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttdriver.c (tt_size_request): Properly check `error'.
-
-	Reported by Earnestly <zibeon@googlemail.com> in
-
-	  https://lists.nongnu.org/archive/html/freetype/2017-04/msg00031.html
-
-2017-04-27  Werner Lemberg  <wl@gnu.org>
-
-	Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.
-
-	* include/freetype/config/ftoption.h
-	(AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
-	default.
-
-	* src/autofit/afloader.c (af_loader_load_glyph): Use
-	AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.
-
-2017-04-26  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/freetype.h (FT_Render_Mode): Fix order.
-
-	This retains backward compatibility.
-
-	Noted by Alexei.
-
-2017-04-22  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470).
-
-	* src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to
-	hold hinted metrics.
-	Make `metrics' a pointer so that `tt_glyph_load' can easily switch
-	between metrics.
-
-	* src/truetype/ttdriver.c (tt_size_request): Updated.
-	(tt_glyph_load): Use top-level metrics if FT_LOAD_NO_HINTING is
-	used.
-
-	* src/truetype/ttgload.c (TT_Hint_Glyph, TT_Process_Simple_Glyph,
-	TT_Process_Composite_Component, load_truetype_glyph,
-	compute_glyph_metrics, TT_Load_Glyph): Updated.
-
-	* src/truetype/ttinterp.c (TT_Load_Context): Updated.
-
-	* src/truetype/ttobjs.c (tt_size_reset): Updated.
-
-	* src/truetype/ttsubpix.c (sph_set_tweaks): Updated.
-
-2017-04-22  Werner Lemberg  <wl@gnu.org>
-
-	Add new `slight' auto-hinting mode.
-
-	This mode uses fractional advance widths and doesn't scale glyphs
-	horizontally, only applying vertical scaling and hinting.
-
-	At the same time, the behaviour of the `light' auto-hinter gets
-	restored for backward compatibility: Both vertical and horizontal
-	scaling is again based on rounded metrics values (this was changed
-	in a commit from 2017-03-30 as a side effect).  To be more precise,
-	the behaviour is restored for TrueType fonts only; for other font
-	formats like Type 1, this is a new feature of the `light' hinting
-	mode.
-
-	* include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT): New macro.
-	(FT_RENDER_MODE_SLIGHT): New render mode.
-
-	* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): Add
-	`autohint_mode' and `autohint_metrics' fields.
-
-	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
-	(af_latin_hints_init), src/autofit/aflatin2 (af_latin2_hints_init):
-	Updated.
-
-	* src/autofit/afloader.c (af_loader_embolden_glyph_in_slot): Use
-	`autohint_metrics'.
-	(af_loader_load_glyph): s/internal/slot_internal/.
-	Initialize `autohint_metrics' and `autohint_mode' depending on
-	current auto-hint mode.
-	Use `autohint_metrics'.
-	Updated.
-
-	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Updated.
-
-	* src/base/ftobjs.c (FT_Load_Glyph): Updated.
-	(FT_New_Size): Allocate `internal' object.
-
-	* src/pshinter/pshalgo.c (ps_hints_apply): Updated.
-
-	* src/smooth/ftsmooth.c (ft_smooth_render): Updated.
-
-2017-04-22  Werner Lemberg  <wl@gnu.org>
-
-	Introduce `FT_Size_InternalRec' structure.
-
-	We are going to extend this later on.
-
-	* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
-	structure with a single field `module_data'.
-
-	* src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
-	`FT_Size' structure.
-
-	* src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
-	`size->internal->module_data' instead of `size->internal'.
-
-	* src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
-	(cff_size_init, cff_size_select, cff_size_request): Use
-	`size->internal->module_data' instead of `size->internal'.
-
-	* src/cif/cidobjs.c (cid_size_done, cid_size_init,
-	cid_size_request): Use `size->internal->module_data' instead of
-	`size->internal'.
-
-	* src/psaux/psobjs.c (t1_builder_ini): Use
-	`size->internal->module_data' instead of `size->internal'.
-
-	* src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
-	Use `size->internal->module_data' instead of `size->internal'.
-
-2017-04-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	* src/smooth/ftsmooth.h: Remove unused guards and declaration.
-
-2017-04-16  Hin-Tak Leung  <htl10@users.sourceforge.net>
-
-	Fix tracing messages.
-
-	* src/base/ftobjs.c (FT_Face_GetCharVariantIndex,
-	FT_Face_GetCharVariantIsDefault, FT_Face_GetVariantsOfChar): Print
-	correct function name.
-
-2017-04-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Old Turkic script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Old Turkic.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Old Turkic standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Old Turkic data.
-
-2017-04-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Gothic script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Gothic.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Gothic standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Gothic data.
-
-2017-04-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Cypriot script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Cypriot.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Cypriot standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Cypriot data.
-
-2017-04-08  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Deseret script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Deseret.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Deseret standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Deseret data.
-
-2017-04-07  Werner Lemberg  <wl@gnu.org>
-
-	[autofit] Fix invalid character range description (#50745).
-
-	Also reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1034
-
-	* src/autofit/afranges.c (af_glag_nonbase_uniranges): Fix typo in
-	recent commit.
-
-2017-04-07  Werner Lemberg  <wl@gnu.org>
-
-	[ftfuzzer] Fix clang warnings.
-
-	* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Add
-	casts.
-
-2017-04-06  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Lisu script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Lisu.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Lisu standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Lisu data.
-
-2017-04-06  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Osage script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Osage.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Osage standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Osage data.
-
-2017-04-06  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Glagolitic script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Glagolitic.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Glagolitic standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Glagolitic data.
-
-2017-04-06  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Tai Viet script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Tai Viet.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Tai Viet standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Tai Viet data.
-
-2017-04-06  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for Tifinagh script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Tifinagh.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Tifinagh standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Tifinagh data.
-
-2017-04-06  Sascha Brawer  <sascha@google.com>
-	    Werner Lemberg  <wl@gnu.org
-
-	[autofit] Add support for N'Ko script.
-
-	* src/autofit/afblue.dat: Add blue zone data for N'Ko.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add N'Ko standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.
-
-2017-04-06  Sascha Brawer  <sascha@google.com>
-
-	[autofit] Add support for Adlam script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Adlam.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Adlam standard characters.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Adlam data.
-
-2017-04-06  Sascha Brawer  <sascha@google.com>
-
-	[autofit] Add support for Ol Chiki script.
-
-	* src/autofit/afblue.dat: Add blue zone data for Ol Chiki.
-	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
-
-	* src/autofit/afscript.h: Add Ol Chiki standard character.
-
-	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Ol Chiki data.
-
-2017-04-03  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Avoid reexecution of `fpgm' and `prep' in case of error.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=981
-
-	* include/freetype/fterrdef.h (FT_Err_DEF_In_Glyf_Bytecode): New
-	error code.
-
-	* src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Prohibit execution
-	of these two opcodes in `glyf' bytecode.
-	(TT_RunIns): Don't enforce reexecution of `fpgm' and `prep' bytecode
-	in case of error since function tables can no longer be modified
-	(due to the changes in `Ins_FDEF' and `Ins_IDEF').  This change can
-	enormously speed up handling of broken fonts.
-
-2017-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	[autofit] Disable metrics adjustment for `FT_LOAD_TARGET_LCD'.
-
-	* src/autofit/aflatin.c (af_latin_hints_init): Updated.
-	* src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
-
-2017-04-01  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttgload.c: Include FT_CONFIG_CONFIG_H.
-
-	Otherwise FT_UINT_TO_POINTER might not be defined.
-
-	Problem reported by Alexei.
-
-2017-03-31  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	[autofit] Disable stem adjustment for `FT_LOAD_TARGET_LCD'.
-
-	* include/freetype/freetype.h (FT_LOAD_TARGET_LCD): Document it.
-	* src/autofit/afcjk.c (af_cjk_hints_init): Updated.
-	* src/autofit/aflatin.c (af_latin_hints_init): Ditto.
-	* src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
-
-2017-03-31  Werner Lemberg  <wl@gnu.org>
-
-	* src/cff/cffload.c (cff_font_load): Improve fix from 2017-01-04.
-
-	Allow CFFs containing a single font to have an empty font name.
-
-	Problem reported by 張俊芝 <418092625@qq.com> in
-
-	  https://lists.nongnu.org/archive/html/freetype-devel/2017-03/msg00074.html
-
-2017-03-30  Werner Lemberg  <wl@gnu.org>
-
-	* src/cff/cffparse.h (CFF2_DEFAULT_STACK): Set to 513 also.
-
-	Requested by Dave Arnold.
-
-2017-03-30  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Fix HVAR and VVAR handling (#50678).
-
-	* src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
-	glyph indices larger than `mapCount' as described in the
-	specification.
-
-2017-03-30  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Allow linear scaling for unhinted rendering (#50470).
-
-	* src/truetype/ttdriver.c (tt_size_request): Revert change from
-	2011-07-16; the intended metrics fix seems now to be implemented in
-	a different way, making the patch unnecessary.  Note that this
-	change was usually patched out by all major GNU/Linux distributions
-	due to heavy side effects.
-
-	* src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph):
-	Refer to the metrics of the `TT_Size' object.
-
-2017-03-29  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Fix thinko related to PS name of default named instance.
-
-	* src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are
-	name ID values, not indices into the array of name entries.
-
-2017-03-27  Werner Lemberg  <wl@gnu.org>
-
-	[cid, truetype] Don't use `index' as a variable name.
-
-	At least on FreeBSD there is a global declaration of `index' in file
-	`/usr/include/strings.h'.
-
-	* src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where
-	appropriate.
-
-2017-03-27  Wojciech Mamrak  <wmamrak@gmail.com>
-
-	[sfnt] Minor improvement for handling kern tables.
-
-	* src/sfnt/ttkern.c (tt_face_load_kern): Don't check for
-	cross-stream kerning tables since we reject format 2 tables later
-	on anyways.
-	Modify code for limit test...
-	(tt_face_get_kerning): ... to avoid a limit test here.
-
-2017-03-27  Werner Lemberg  <wl@gnu.org>
-
-	[pcf] Fix compiler warnings.
-
-	Reported by Alexander Hedges <ahedges@student.ethz.ch>.
-
-	* src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag
-	`property_name' with `FT_UNUSED' where necessary.
-
-2017-03-26  Werner Lemberg  <wl@gnu.org>
-
-	* src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
-
-2017-03-23  Werner Lemberg  <wl@gnu.org>
-
-	[psaux] Better protect `flex' handling.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
-
-	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
-	<callothersubr>: Since there is not a single flex operator but a
-	series of subroutine calls, malformed fonts can call arbitrary other
-	operators after the start of a flex, possibly adding points.  For
-	this reason we have to check the available number of points before
-	inserting a point.
-
-2017-03-23  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Fix check for default named instance.
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four
-	bytes, not two...
-
-2017-03-23  Werner Lemberg  <wl@gnu.org>
-
-	Make MM fonts work (again).
-
-	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
-	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore
-	return value of `ft_face_get_mvar_service'; instead, check whether a
-	service is actually returned.
-
-2017-03-20  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Some variable renamings.
-
-	Too much local variables holding different structures were called
-	`metrics'.
-
-	* src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/.
-
-	* src/truetype/ttgload.c (tt_get_metrics_incr_overrides,
-	compute_glyph_metrics): s/metrics/incr_metrics/.
-	(load_sbit_image): s/metrics/sbit_metrics/.
-
-	* src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/.
-	(tt_size_init_bytecode): s/metrics/tt_metrics/.
-	(tt_size_reset): s/metrics/size_metrics/.
-
-2017-03-20  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Don't add instances to non-variation fonts.
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): Fix it.
-
-2017-03-20  Werner Lemberg  <wl@gnu.org>
-
-	* src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578).
-
-2017-03-18  Werner Lemberg  <wl@gnu.org>
-
-	Introduce FT_UINT_TO_POINTER macro (#50560).
-
-	We have to make a separate case for Windows 64's LLP64 data model.
-
-	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
-	include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro.
-
-	* src/truetype/ttgload.c (load_truetype_glyph): Use it.
-
-2017-03-18  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573).
-
-	The problematic font that exceeds the old limit is Lato-Regular,
-	version 2.007, containing bytecode generated by a buggy version of
-	ttfautohint.
-
-2017-03-18  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Another limitation for bytecode loop count maximum.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=900
-
-	* src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max'
-	by number of glyphs also.
-
-2017-03-18  Werner Lemberg  <wl@gnu.org>
-
-	[ftfuzzer] Minor improvement.
-
-	* src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if
-	bitmap strikes are active.
-
-2017-03-18  Werner Lemberg  <wl@gnu.org>
-
-	Improve `make multi'.
-
-	* src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2.
-
-	* src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH.
-
-	* src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
-
-	* src/sfnt/pngshim.c: Guard file with
-	TT_CONFIG_OPTION_EMBEDDED_BITMAPS also.
-
-	* src/sfnt/ttbdf.c: Avoid empty source file.
-	* src/sfnt/ttpost.c: Guard file with
-	TT_CONFIG_OPTION_POSTSCRIPT_NAMES.
-	* src/sfnt/ttsbit.c: Guard file with
-	TT_CONFIG_OPTION_EMBEDDED_BITMAPS.
-
-	* src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty
-	source file.
-
-	* src/truetype/ttsubpix.c: Guard file with
-	TT_USE_BYTECODE_INTERPRETER also.
-
-	* src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
-
-	* src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c,
-	src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c,
-	src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c,
-	src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c,
-	src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c,
-	src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort
-	entries.
-
-2017-03-17  Werner Lemberg  <wl@gnu.org>
-
-	Fixes for conditional compilation.
-
-	* src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h'
-	earlier.
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into
-	TT_CONFIG_OPTION_GX_VAR_SUPPORT block.
-	(sfnt_done_face): Protect some code with
-	TT_CONFIG_OPTION_GX_VAR_SUPPORT.
-
-	* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler
-	warning.
-
-	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable
-	into TT_USE_BYTECODE_INTERPRETER block.
-
-	(tt_loader_init): Put `error' variable into
-	TT_USE_BYTECODE_INTERPRETER block.
-
-2017-03-17  Werner Lemberg  <wl@gnu.org>
-
-	Fix preprocessor warning.
-
-	* devel/ftoption.h, include/freetype/config/ftoption.h: Test whether
-	TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its
-	value.
-
-2017-03-17  Werner Lemberg  <wl@gnu.org>
-
-	`make multi' fixes; compiler warnings.
-
-	* src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H.
-
-	* src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
-	FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
-
-	* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
-	FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
-	(get_win_string, get_apple_string): Initialize `result'.
-
-2017-03-17  Dave Arnold <darnold@adobe.com>
-
-	[cff] Fix potential bugs in default NDV for CFF2.
-
-	* src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend
-	vector when `lenNDV' is zero; don't rely on zero-init.
-	Save `lenNDV' as part of cache key even when `lenNDV' is zero.
-
-2017-03-17  Dave Arnold <darnold@adobe.com>
-
-	[cff] Fix CFF2 stack allocation.
-
-	* src/cff/cffparse.c (cff_parser_init) add 1 for operator.
-
-2017-03-16  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=883
-
-2017-03-15  Werner Lemberg  <wl@gnu.org>
-
-	Remove clang compiler warnings (#50548).
-
-	* include/freetype/internal/tttypes.h (TT_FaceRec): Make
-	`var_postscript_prefix_len' unsigned.
-
-	* src/autofit/afwarp.c (af_warper_compute_line_best): Remove
-	redundant assignment.
-
-	* src/cff/cffload.c (cff_subfont_load): Add casts.
-
-	* src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment.
-
-	* src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static'
-	keyword.
-	Add casts.
-	(fixed2float): Add cast.
-	(sfnt_get_var_ps_name): Make `p' always initialized.
-	Add casts.
-
-	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts.
-
-2017-03-15  Werner Lemberg  <wl@gnu.org>
-
-	[ftfuzzer] Limit number of tested faces and instances.
-
-	This is inspired by the discussion in and analysis of
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=859
-
-	* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only
-	up to 20 face indices.
-	Use only up to 20 instance indices.
-
-2017-03-15  Werner Lemberg  <wl@gnu.org>
-
-	* src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting.
-
-2017-03-14  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Implement PS names for font instances [3/3].
-
-	Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
-
-	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
-	`var_postscript_prefix' and `var_postscript_prefix_len'.
-
-	* src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H.
-	(sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'.
-	(get_win_string, get_apple_string): Remove `const' from return
-	value.
-	(MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros.
-	(hexdigits): New array.
-	(sfnt_get_var_ps_name): New function, implementing Adobe TechNote
-	5902 to construct a PS name for a variation font instance.
-	(sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances.
-
-	* src/sfnt/sfobjs.c (sfnt_done_face): Updated.
-
-	* src/truetype/ttgxvar.c (tt_set_mm_blend): Reset
-	`face->postscript_name' to trigger recalculation for new instance
-	parameters.
-
-2017-03-14  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Implement PS names for font instances [2/3].
-
-	* src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
-	New function to find the shortest representation of a 16.16
-	fractional number.
-
-2017-03-14  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Implement PS names for font instances [1/3].
-
-	Add 128bit MurmurHash 3 function.
-
-	Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
-
-	* src/sfnt/sfdriver.c (ROTL32): New macro.
-	(fmix32, murmur_hash_3_128): New functions.
-
-2017-03-13  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Ignore invalid MVAR tags.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838
-
-	* src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
-	warning for invalid tags.
-	(tt_apply_mvar): Ignore invalid tags.
-
-2017-03-12  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Store and use design coordinates also.
-
-	* include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
-	Add `normalizedcoords' argument.
-
-	* src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store
-	the design coordinates of the current instance.
-	Updated.
-
-	* src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to...
-	(tt_set_mm_blend): ... New function.
-	Convert data in `normalizedcoords' array to `coords' array on
-	demand.
-	(TT_Set_Var_Design): Store argument data in `coords' array.
-	(TT_Get_Var_Design): Get data from `coords' array.
-	(tt_get_var_blend): Updated.
-	(tt_done_blend): Updated.
-
-	* src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated.
-
-	* src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
-
-	* src/cff/cffobjs.c (cff_face_init): Updated.
-
-2017-03-12  Werner Lemberg  <wl@gnu.org>
-
-	src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/.
-
-2017-03-08  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Another fix for buggy variation fonts.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=759
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
-	instances to zero for `CFF' fonts table, ensure that there is no
-	`CFF2' present also (which gets priority).
-
-2017-03-07  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Improve handling for buggy variation fonts.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=738
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
-	instances to zero for `CFF' fonts table, ensure that there is no
-	`glyf' table present also (which gets priority).
-
-2017-03-06  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt, truetype] Always provide default instance.
-
-	As documented in the OpenType specification, an entry for the
-	default instance may be omitted in the named instance table.  In
-	particular this means that even if there is no named instance table
-	in the font we actually do have a named instance, namely the default
-	instance.
-
-	For consistency, we always want the default instance in our list of
-	named instances.  If it is missing, we try to synthesize it.
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default
-	instance is in the table of named instances.  Otherwise adjust
-	number of instances.
-
-	* src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H.
-	(TT_Get_MM_Var): Use `face->root.style_flags' as the number of named
-	instances.
-	Sythesize a named instance entry if necessary.
-	(tt_done_blend): Free `normalized_stylecoords'.
-
-2017-03-05  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Remove redundant code.
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for
-	`num_instances', which will always succeed.
-
-2017-03-04  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Add `get_name_id' service.
-
-	* include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New
-	typedef.
-	(SFNT_Interface): Add `get_name_id' field.
-	(FT_DEFINE_SFNT_INTERFACE): Updated.
-
-	* src/sfnt/sfdriver.c (search_name_id): Rename to...
-	(sfnt_get_name_id): ... this.
-	(sfnt_get_ps_name, sfnt_interface): Updated.
-
-2017-03-04  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Make `TT_Set_MM_Blend' set named instance index.
-
-	* src/truetype/ttgxvar.h (GX_Blend): New array
-	`normalized_stylecoords'.
-
-	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill
-	`normalized_stylecoords'.
-	(TT_Set_MM_Blend): Check instance tuple and adjust `face_index'
-	accordingly.
-
-2017-03-02  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Split off designer/normalized conversion routines.
-
-	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion
-	code designer->normalized coordinates to...
-	(ft_var_to_normalized): ... New function.
-	(TT_Get_Var_Design): Split off conversion code normalized->designer
-	coordinates to...
-	(ft_var_to_design): ... New function.
-
-2017-02-28  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Further generalize `sfnt_get_ps_name'; report invalid data.
-
-	* src/sfnt/sfdriver.c (sfnt_ps_map): New array.
-	(sfnt_is_postscript): New function.
-	(char_type_func): New typedef.
-	(get_win_string, get_apple_string): Add argument to specify
-	character checking function.
-	Add argument whether argument checking failures should be reported.
-	Update callers.
-	(search_name_id): Fix return value.
-
-2017-02-23  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Split off another bit of `sfnt_get_ps_name'.
-
-	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
-	functionality into...
-	(search_name_id): ... New function.
-
-2017-02-23  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Modularize `sfnt_get_ps_name'.
-
-	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
-	functionality into...
-	(IS_WIN, IS_APPLE): ... New macros.
-	(get_win_string, get_apple_string): ... New functions.
-
-2017-02-23  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Minor improvement.
-
-	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
-	load_truetype_glyph): Remove unnecessary tests.
-
-2017-02-23  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/.
-
-	For orthogonality with other structure field names.
-
-	Update all users.
-
-2017-02-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	* src/smooth/ftgrays.c (gray_hline): Improve code.
-
-2017-02-20  Dominik Röttsches  <drott@google.com>
-
-	Fix some `ttnameid.h' entries (#50313).
-
-	* include/freetype/ttnameid.h:
-	s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/,
-	s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/.
-
-2017-02-20  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Finish support for `random' operator.
-
-	* src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field.
-
-	* src/cff/cffobjs.c: Updated.
-	(cff_driver_init): Initialize random seed value.
-
-	* src/cff/cffload.c (cff_random): New function.
-	(cff_subfont_load): Add `face' argument.
-	Update all callers.
-	Initialize random number generator with a proper seed value.
-	(cff_font_load): Add `face' argument.
-	Update all callers.
-
-	* src/cff/cffload.h: Updated.
-
-	* src/cff/cf2intrp.c (CF2_FIXME): Removed.
-	(cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode.
-
-	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't
-	initialize random seed value.
-	<cff_op_random>: Use new random seed framework.
-
-2017-02-20  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Sanitize `initialRandomSeed'.
-
-	* src/cff/cffload.c (cff_load_private_dict): Make
-	`initial_random_seed' value always positive.
-
-2017-02-20  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Introduce `random-seed' property (2/2).
-
-	* src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
-	(open_face): Initialize `face->internal->random_seed'.
-	(FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
-
-	* src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
-	property.
-
-2017-02-20  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Introduce `random-seed' property (1/2).
-
-	We need this for support of the `random' operator.
-
-	* include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro.
-
-	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
-	field `random_seed'.
-
-	* src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'.
-
-2017-02-17  Werner Lemberg  <wl@gnu.org>
-
-	Remove clang warnings.
-
-	* src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static'
-	keyword.
-
-	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
-	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
-	Initialize some variables.
-
-2017-02-16  Nikolaus Waxweiler  <madigens@gmail.com>
-	    Werner Lemberg  <wl@gnu.org>
-
-	Add face property for stem darkening.
-
-	* include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New
-	macro.
-
-	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
-	`no_stem_darkening' field.
-
-	* src/autofit/afloader.c (af_loader_load_glyph),
-	src/autofit/afmodule.c (af_property_set): Updated.
-
-	* src/base/ftobjs.c: Include FT_AUTOHINTER_H.
-	(ft_open_face_internal): Updated.
-	(FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING.
-
-	* src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated.
-
-	* src/cff/cffdrivr.c (cff_property_set): Updated.
-
-2017-02-16  Nikolaus Waxweiler  <madigens@gmail.com>
-	    Werner Lemberg  <wl@gnu.org>
-
-	Add face property for LCD filter weights.
-
-	* include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS,
-	FT_LCD_FILTER_FIVE_TAPS): New macros.
-	(FT_LcdFiveTapFilter): New typedef.
-
-	* include/freetype/ftobjs.h (FT_Face_InternalRec)
-	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field.
-	(FT_Bitmap_LcdFilterFunc): Change third argument to weights array.
-	(ft_lcd_filter_fir): New prototype.
-	(FT_LibraryRec): Updated.
-
-	* src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to...
-	(ft_lcd_filter_fir): ... this base function.
-	Updated.
-	(_ft_lcd_filter_legacy): Updated.
-	(FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated.
-
-	* src/base/ftobjs.c (ft_open_face_internal): Updated.
-	(FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS.
-
-	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
-	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from
-	`FT_Face_Internal'.
-
-2017-02-14  Nikolaus Waxweiler  <madigens@gmail.com>
-	    Werner Lemberg  <wl@gnu.org>
-
-	Add new function `FT_Face_Properties'.
-
-	This commit provides the framework, to be filled with something
-	useful in the next commits.
-
-	* include/freetype/freetype.h (FT_Face_Properties): Declare.
-
-	* src/base/ftobjs.c (FT_Face_Properties): New function.
-
-2017-02-13  Werner Lemberg  <wl@gnu.org>
-
-	[autofit] Prevent overlapping blue zones.
-
-	Problem reported as
-
-	  https://github.com/google/fonts/issues/632
-
-	The font in question (Nunito) has values 705 and 713 for the
-	reference and overshoot values, respectively, of the first blue
-	zone.  Blue zone 2, however, has value 710 for both the reference
-	and overshoot.  At 12ppem, reference and overshoot of blue zone 0
-	becomes 8px, while blue zone 2 becomes 9px.
-
-	A peculiarity of this font is that the tops of isolated vertical
-	stems like `N' have a slight overshoot also.  The auto-hinter tries
-	to find the nearest blue zone using the *original* coordinates.  For
-	vertical stems, this is value 713.  For normal horizontal tops like
-	in character `E', this is value 710.  Since value 713 is mapped to
-	8px but value 710 to 9px, `N' and similar characters are one pixel
-	higher than `E', which looks very bad.
-
-	This commit sanitizes blue zones to avoid such a behaviour.
-
-	* src/autofit/aflatin.c (af_latin_sort_blue): New function.
-	(af_latin_metrics_init_blues): Sort blue values and remove overlaps.
-
-2017-02-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	* src/smooth/ftgrays.c (gray_sweep): Improve code.
-
-2017-02-06  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Implement `VVAR' table support.
-
-	* src/truetype/ttgxvar.h (GX_HVarTable): Renamed to...
-	(GX_HVVarTable): ...This.
-	(GX_Blend): Add fields for `VVAR' table handling.
-	Other minor updates.
-
-	* src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to...
-	(ft_var_load_hvvar): ...This.
-	Handle VVAR loading also (controlled by an additional parameter).
-	(tt_hadvance_adjust): Renamed to...
-	(tt_hvadvance_adjust): ...This.
-	Handle application of advance height also (controlled by an
-	additional parameter).
-	(tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for
-	`tt_hvadvance_adjust'.
-
-	* src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
-
-2017-02-05  Werner Lemberg  <wl@gnu.org>
-
-	[autofit] Use better blue zone characters for lowercase latin.
-
-	The number of lowercase characters for computing the top flat blue
-	zone value was too small (in most cases only `x' and `z').  If one
-	of the two characters has a large serif, say, it can happen that
-	FreeType must select between two different values, having a 50%
-	chance to use the wrong one.  As a result, rendering at larger PPEM
-	values could yield uneven lowercase glyph heights.
-
-	Problem reported by Christoph Koeberlin <christoph@koe.berlin>.
-
-	* src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced
-	with...
-	(AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM):
-	... New, extended sets.
-	(AF_BLUE_STRINGSET_LATN): Updated.
-
-	* src/autofit/afblue.c, scr/autofit/afblue.h: Regenerated.
-
-2017-02-04  Werner Lemberg  <wl@gnu.org>
-
-	Make `freetype-config' a wrapper of `pkg-config' if possible.
-
-	Based on ideas taken from
-
-	  http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
-	  http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
-
-	* builds/unix/freetype-config.in: Rewritten.  Use `pkg-config' to
-	set output variables if program is available.
-
-	* docs/CHANGES, docs/freetype-config.1: Updated.
-
-2017-02-04  Werner Lemberg  <wl@gnu.org>
-
-	* builds/unix/unix-def.in (freetype-config): Fix permissions.
-
-2017-02-03  Werner Lemberg  <wl@gnu.org>
-
-	* src/autofit/afglobal.c (af_face_globals_free): Erase useless code.
-
-2017-02-03  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value.
-
-	Reported by Behdad.
-
-2017-02-02  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Fix MVAR post-action handling.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=509
-
-	* src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2.  This
-	is important to make `tt_size_reset_iterator' (called in
-	`tt_apply_mvar') always work.
-
-2017-02-02  Werner Lemberg  <wl@gnu.org>
-
-	Make compilation with FT_CONFIG_OPTION_PIC work again.
-
-	All code committed here is guarded with `FT_CONFIG_OPTION_PIC'.
-
-	* include/freetype/internal/services/svmetric.h
-	(FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon.
-
-	* src/autofit/aflatin.c (af_latin_hints_compute_edges,
-	af_latin_hint_edges): Provide `globals' variable.
-
-	* src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing
-	variable.
-
-	* src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET,
-	AF_STYLE_CLASSES_GET): Redefine.
-
-	* src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo.
-
-	* src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it.
-
-	* src/cff/cffpic.h (CffModulePIC): Fix typo.
-
-2017-01-31  Alexei Podtelezhnikov  <apodtele@gmail.com>
-
-	* src/smooth/ftgrays.c (gray_render_scanline): Improve code.
-
-2017-01-31  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Provide metrics variation service interface (#50196).
-
-	Only now I've got an OTF with an HVAR table for testing...
-
-	The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the
-	metrics variations interface.  However, this didn't work with
-	`FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'.
-
-	* src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
-	(cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for
-	metric service functions from the `truetype' module.
-	(cff_service_metrics_variations): New service.
-	(cff_services): Updated.
-
-	* src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro.
-	[FT_CONFIG_OPTION_PIC]: Synchronize code.
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): Replace call to
-	FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always
-	load the service from the `truetype' module.
-
-2017-01-31  Werner Lemberg  <wl@gnu.org>
-
-	Add framework to support services with 9 functions.
-
-	* include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC9):
-	New macro.
-
-2017-01-31  Werner Lemberg  <wl@gnu.org>
-
-	[base] Fix error handing in MM functions.
-
-	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
-	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
-	Implement it.
-
-2017-01-31  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Fix sanity check for `gvar' table (#50184).
-
-	* src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing
-	variation data for some glyphs.
-
-2017-01-31  Werner Lemberg  <wl@gnu.org>
-
-	[autofit] Avoid uninitialized jumps (#50191).
-
-	* src/autofit/afcjk.c (af_cjk_metrics_check_digits),
-	src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
-	`advance'.
-
-2017-01-27  Werner Lemberg  <wl@gnu.org>
-
-	s/GB2312/PRC/.
-
-	* include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
-	(FT_ENCODING_GB2312): Deprecated.
-
-	* include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
-	(TT_MS_ID_GB2312): Deprecated.
-
-	* src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
-
-	* docs/CHANGES: Updated.
-
-2017-01-26  Werner Lemberg  <wl@gnu.org>
-
-	[base] Add `FT_Get_Sfnt_LangTag' function.
-
-	* include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
-	(FT_Get_Sfnt_LangTag): New declaration.
-
-	* src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function.
-
-	* docs/CHANGES: Updated.
-
-2017-01-26  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Support `name' table format 1.
-
-	* include/freetype/internal/tttypes.h (TT_LangTagRec): New
-	structure.
-	(TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
-
-	* src/sfnt/ttload.c (tt_face_load_name): Add support for language
-	tags.
-	Reduce array size of name strings in case of invalid entries.
-	(tt_face_free_name): Updated.
-
-	* docs/CHANGES: Updated.
-
-2017-01-25  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] s/TT_NameEntry/TT_Name/.
-
-	* include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
-	to...
-	(TT_NameRec): This.
-	(TT_NameTableRec): Updated.
-
-	* src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
-
-	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
-
-	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
-	tt_name_entry_ascii_from_other): Renamed to...
-	(tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
-	respectively.
-	(TT_NameEntry_ConvertFunc): Renamed to...
-	(TT_Name_ConvertFunc): This.
-	(tt_face_get_name): Updated.
-
-	* src/sfnt/ttload.c (tt_face_load_name, tt_face_free_name):
-	Updated.
-
-2017-01-24  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Fix Postscript name service for symbol fonts.
-
-	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
-	entries also.
-
-2017-01-24  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
-
-	* include/freetype/ftsnames.h
-	(FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
-	FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
-	(FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
-	FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
-
-	* include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
-	TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
-	(TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
-	Deprecated.
-
-	* src/sfnt/sfobjs.c (sfnt_load_face): Updated.
-
-	* docs/CHANGES: Updated.
-
-2017-01-23  Werner Lemberg  <wl@gnu.org>
-
-	[base] Add `FT_Set_Default_Properties' (#49187).
-
-	* include/freetype/ftmodapi.h: Add declaration.
-
-	* src/base/ftinit.c (ft_set_default_properties): Renamed to...
-	(FT_Set_Default_Properties): ... this.
-	(FT_Init_FreeType): Updated.
-
-	* docs/CHANGES: Updated.
-
-2017-01-23  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Minor updates for OpenType 1.8.1.
-
-	* src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
-	removed from the specification; it is now reserved.
-
-	* src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
-	(GX_FVar_Head): Remove `countSizePairs'; the corresponding data
-	field in the `MVAR' table is now reserved.
-	(fvar_fields): Updated.
-
-2017-01-23  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Avoid segfault for invalid variation data.
-
-	* src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
-	`itemCount' is not zero.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
-
-2017-01-20  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
-
-2017-01-17  Werner Lemberg  <wl@gnu.org>
-
-	* include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
-
-	(TT_APPLE_ID_FULL_UNICODE): New macro.
-
-	(TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
-	TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
-	TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
-	TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
-	TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
-	TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
-	TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
-	TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
-	TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
-	TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
-	TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
-	macros.
-
-	(TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
-
-	(TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
-	TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
-	TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
-	TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
-	TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
-	TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
-	TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
-	TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
-	TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
-	TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
-	TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
-	TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
-	TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
-	TT_MS_LANGID_UIGHUR_PRC): New aliases.
-
-	Remove commented out code.
-
-	(TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
-	TT_NAME_ID_VARIATIONS_PREFIX): New macros.
-
-	(HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
-	years), use guarded long macros by default and define short versions
-	as aliases for the long ones.
-
-2017-01-15  Werner Lemberg  <wl@gnu.org>
-
-	* src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
-	also.
-
-2017-01-11  Werner Lemberg  <wl@gnu.org>
-
-	* src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
-
-2017-01-11  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Actually use metrics variation service.
-
-	* src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
-	(ft_face_get_mvar_service): New auxiliary function to look up
-	metrics variation service.
-	(FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
-	FT_Set_Var_Blend_Coordinates): Call metrics variation service.
-
-	* src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
-	named instances.
-
-2017-01-11  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Provide metrics variation service.
-
-	* include/freetype/internal/services/svmetric.h
-	(FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
-
-	* src/truetype/ttgxvar.c: Include FT_LIST_H.
-	(tt_size_reset_iterator): New auxiliary function for...
-	(tt_apply_var): New function.
-
-	* src/truetype/ttgxvar.h: Updated.
-
-	* src/truetype/ttdriver.c (tt_service_metrics_variations): Add
-	`tt_apply_mvar'.
-
-	* include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
-	variation service.
-
-2017-01-11  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Parse `MVAR' table.
-
-	* src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
-	(GX_Value, GX_MVarTable): New structures.
-	(GX_Blend): Add it.
-
-	* src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
-	GX_GASP_CASE): New macros.
-	(ft_var_get_value_pointer): New auxiliary function to get a pointer
-	to a value from various SFNT tables already stored in `TT_Face'.
-	(ft_var_load_mvar): New function.
-	(TT_Get_MM_Var): Call it.
-	(tt_done_blend): Updated.
-
-2017-01-11  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] More preparations for MVAR support.
-
-	* src/truetype/ttobjs.c (tt_size_reset): Add argument to make
-	function only recompute ascender, descender, and height.
-
-	* src/truetype/ttobjs.h: Updated.
-
-	* src/truetype/ttdriver.c (tt_size_select, tt_size_request):
-	Updated.
-
-2017-01-09  Werner Lemberg  <wl@gnu.org>
-
-	[pcf] Disable long family names by default.
-
-	* include/freetype/config/ftoption.h
-	(PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
-
-2017-01-09  Werner Lemberg  <wl@gnu.org>
-
-	[pcf] Make long family names configurable.
-
-	The change from 2016-09-29 was too radical (except for people using
-	the openSuSE GNU/Linux distribution).  To ameliorate the situation,
-	PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
-	the feature; if set, a new PCF property option
-	`no-long-family-names' can be used to switch this feature off.
-
-	* include/freetype/config/ftoption.h, devel/ftoption.h
-	(PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
-
-	* include/freetype/ftpcfdrv.h: New header file (only containing
-	comments currently, used for building the documentation).
-
-	* include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
-
-	* src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
-
-	* src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
-	FT_PCF_DRIVER_H.
-	(pcf_property_set, pcf_property_get): New functions.
-	(pcf_service_properties): New service.
-	(pcf_services): Updated.
-	(pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
-	`no_long_family_names'.
-
-	* src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
-	and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
-
-	* docs/CHANGES: Updated.
-
-2017-01-09  Werner Lemberg  <wl@gnu.org>
-
-	[pcf] Introduce a driver structure.
-
-	To be filled later on with something useful.
-
-	* src/pcf/pcf.h (PCF_Driver): New structure.
-
-	* src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
-	functions.
-	(pcf_driver_class): Updated.
-
-2017-01-08  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Again some GX code shuffling.
-
-	We need this later on for MVAR also.
-
-	* src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
-	an item store variation delta into...
-	(ft_var_get_item_delta): ...new function.
-
-2017-01-08  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Adjust font variation flags for MVAR.
-
-	* include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
-	Remove all flags related to MVAR; replace it with...
-	(TT_FACE_FLAG_VAR_MVAR): ...this new macro.
-	(TT_Face): Remove `mvar_support' field (which was still unused).
-
-2017-01-06  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] More GX code shuffling.
-
-	We need this later on for MVAR also.
-
-	* src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
-	variation store into...
-	(ft_var_done_item_variation_store): ...new function.
-
-2017-01-06  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] More generalization of GX stuff.
-
-	We need this later on for MVAR also.
-
-	* src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
-	parameters for delta-set index mapping and item variation store.
-	(ft_var_load_item_variation_store): Add parameter for item variation
-	store.
-	s/hvarData/varData/.
-	Move allocation of `hvar_table' to...
-	(ft_var_load_hvar): ...this function.
-	Updated.
-
-2017-01-06  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Some GX structure renames for generalization.
-
-	We need this later on for MVAR also.
-
-	* src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
-	(GX_ItemVarData): ...this.
-	(GX_HVarRegion): Renamed to...
-	(GX_VarRegion): ...this.
-	(GX_HVStore): Renamed to...
-	(GX_ItemVarStore): ...this.
-	(GX_WidthMap): Renamed to...
-	(GX_DeltaSetIdxMap): ...this.
-
-	(GX_HVarTable): Updated.
-
-	* src/truetype/ttgxvar.c: Updated.
-
-2017-01-06  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Code shuffling.
-
-	* src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
-	item variation store and delta set index mapping into...
-	(ft_var_load_item_variation_store,
-	ft_var_load_delta_set_index_mapping): ...new functions.
-
-2017-01-06  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Add HVAR access without advance width map.
-
-	* src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
-	`offsetToAdvanceWidthMapping' is zero.
-	(tt_hadvance_adjust): Implement direct deltaSet access by glyph
-	index.
-
-2017-01-06  Werner Lemberg  <wl@gnu.org>
-
-	[pcf] Revise driver.
-
-	This commit improves tracing and handling of malformed fonts.  In
-	particular, the changes to `pcf_get_properties' fix
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
-
-	* src/pcf/pcfread.c (tableNames): Use long names for better
-	readability.
-	(pcf_read_TOC): Allow at most 9 tables.
-	(pcf_get_properties): Allow at most 256 properties.
-	Limit strings array length to 256 * (65536 + 1) bytes.
-	Better tracing.
-	(pcf_get_metric): Trace metric data.
-	(pcf_get_metrics): Allow at most 65536 metrics.
-	Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
-	potential overflow.
-	Better tracing.
-	(pcf_get_bitmaps): Allow at most 65536 bitmaps.
-	Better tracing.
-	(pcf_get_encodings, pcf_get_accel): Better tracing.
-
-	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
-	These are now shown by `pcf_get_bitmaps'.
-
-2017-01-04  Werner Lemberg  <wl@gnu.org>
-
-	* src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
-
-2017-01-04  Werner Lemberg  <wl@gnu.org>
-
-	[cff] More consistency checks for pure CFFs.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
-
-	* src/cff/cffload.c (cff_font_load): Check element number and size
-	of Name and Top DICT indices.
-
-2017-01-04  Werner Lemberg  <wl@gnu.org>
-
-	[cff, truetype] Minor tracing improvement.
-
-	* src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
-	(tt_face_init): Indent first tracing message from SFNT driver.
-
-2017-01-03  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Various minor fixes.
-
-	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
-	size only if we do native hinting.
-	(TT_Load_Glyph): Trace returned error code.
-
-	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
-	returned error code.
-	(tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
-	invalid.
-
-2017-01-03  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
-
-	These tables are optional.
-
-	* src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
-
-2017-01-03  Werner Lemberg  <wl@gnu.org>
-
-	* src/cff/cffparse.c (cff_parse_num): Simplify.
-
-2017-01-03  Werner Lemberg  <wl@gnu.org>
-
-	Various fixes for clang's undefined behaviour sanitizer.
-
-	* src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
-	(cff_blend_doBlend): Don't left-shift negative numbers.
-	Handle 5-byte numbers byte by byte to avoid alignment issues.
-
-	* src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
-	byte to avoid alignment issues.
-
-	* src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
-	subrs.
-
-	* src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
-
-	* src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
-	definition of `ft_get_adobe_glyph_index'.
-
-	* src/psnames/pstables.h: Regenerated.
-
-	* src/psnames/psmodule.c: Include `pstables.h' twice to get both
-	declaration and definition.
-
-	* src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
-	casting.
-
-2017-01-01  Werner Lemberg  <wl@gnu.org>
-
-	[cff] Handle multiple `blend' operators in a row correctly.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
-
-	* src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
-	pointers into `subFont->blend_stack' after reallocation.
-
-2017-01-01  Werner Lemberg  <wl@gnu.org>
-
-	[sfnt] Return correct number of named instances for TTCs.
-
-	Without this patch, requesting information for face index N returned
-	the data for face index N+1 (or index 0).
-
-	* src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
-	for negative `face_instance_index' values.
-
-2016-12-31  Werner Lemberg  <wl@gnu.org>
-
-	*/*: Use hex numbers for errors in tracing messages.
-
-2016-12-31  Werner Lemberg  <wl@gnu.org>
-
-	[truetype] Check axis count in HVAR table.
-
-	Reported as
-
-	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
-
-	* src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
-	(ft_var_load_avar): Fix tracing message.
-
 
 ----------------------------------------------------------------------------
 
-Copyright 2016-2018 by
+Copyright 2017-2018 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,
diff --git a/ChangeLog.21 b/ChangeLog.21
index 01883f1..1adc817 100644
--- a/ChangeLog.21
+++ b/ChangeLog.21
@@ -6995,7 +6995,7 @@
 
 2002-09-08  David Turner  <david@freetype.org>
 
-	Various updates to correctly support sub-pixel rendering.
+	Various updates to correctly support subpixel rendering.
 
 	* include/freetype/config/ftmodule.h: Add two renderers for LCD.
 
diff --git a/ChangeLog.24 b/ChangeLog.24
index 7661aee..44abc40 100644
--- a/ChangeLog.24
+++ b/ChangeLog.24
@@ -744,7 +744,7 @@
 
 2013-01-16  David 'Digit' Turner  <digit@google.com>
 
-	[truetype] Improve sub-pixel code.
+	[truetype] Improve subpixel code.
 
 	This patches fixes many issues with the ttsubpix implementation.
 
diff --git a/ChangeLog.28 b/ChangeLog.28
new file mode 100644
index 0000000..ca1ff38
--- /dev/null
+++ b/ChangeLog.28
@@ -0,0 +1,3136 @@
+2017-09-16  Werner Lemberg  <wl@gnu.org>
+
+	* Version 2.8.1 released.
+	=========================
+
+
+	Tag sources with `VER-2-8-1'.
+
+	* docs/VERSION.TXT: Add entry for version 2.8.1.
+	* docs/CHANGES: Updated.
+
+	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
+	builds/windows/vc2005/index.html,
+	builds/windows/vc2008/freetype.vcproj,
+	builds/windows/vc2008/index.html,
+	builds/windows/vc2010/freetype.vcxproj,
+	builds/windows/vc2010/index.html,
+	builds/windows/visualc/freetype.dsp,
+	builds/windows/visualc/freetype.vcproj,
+	builds/windows/visualc/index.html,
+	builds/windows/visualce/freetype.dsp,
+	builds/windows/visualce/freetype.vcproj,
+	builds/windows/visualce/index.html,
+	builds/wince/vc2005-ce/freetype.vcproj,
+	builds/wince/vc2005-ce/index.html,
+	builds/wince/vc2008-ce/freetype.vcproj,
+	builds/wince/vc2008-ce/index.html: s/2.8/2.8.1/, s/28/281/.
+
+	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
+
+	* builds/unix/configure.raw (version_info): Set to 21:0:15.
+	* CMakeLists.txt (VERSION_PATCH): Set to 1.
+
+2017-09-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+	[sfnt] lowest gcc for vectors (e1d0249e) is changed to 4.7.
+
+	__builtin_shuffle() was introduced in gcc-4.7.  The lowest
+	gcc to enable vector operation is delayed from 4.6 to 4.7.
+
+	* src/sfnt/pngshim.c (premultiply_data): Fix cpp-macro to
+	enable the vector operation, to change the lowest gcc version
+	from 4.6 to 4.7.
+
+2017-09-13  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+	[cache] Fix a possible overflow by signed integer comparison.
+
+	Improve the code by 5d3ff05615dda6d1325ed612381a17a0df04c975 ,
+	issues are found by Behdad Esfahbod and Werner Lemberg.
+
+	* src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Replace
+	a subtraction to check higher bit by a bit operation,
+	and cpp-conditionalize for appropriate systems.  Add better
+	documentation to the comment.
+	(FTC_ImageCache_LookupScaler): Ditto.
+	(FTC_SBitCache_Lookup): Ditto.
+	(FTC_SBitCache_LookupScaler): Ditto.
+
+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'.
+
+	* src/autofit/afshaper.c: Include FT_ADVANCE_H, to use
+	FT_Get_Advance() in it.
+	* src/sfnt/ttcmap.c: Include FT_SERVICE_POSTSCRIPT_CMAPS_H
+	to use PS_Unicodes in it, also include `ttpost.h' to use
+	tt_face_get_ps_name() in it.
+
+2017-09-11  Azzuro  <azzuro@team-mediaportal.com>
+
+	[build] Improve builds with different MS Visual Studio versions.
+
+	* builds/windows/vc2010/freetype.vcxproj: Switch platform toolset
+	according to the Visual Studio version.
+
+2017-09-11  Werner Lemberg  <wl@gnu.org>
+
+	* src/sfnt/ttkern.c (tt_face_load_kern): Reject format 2 tables.
+
+	Reported by Behdad.
+
+2017-09-09  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Improve communication with ftgrid.
+
+	* src/autofit/afhints.c (af_glyph_hints_get_segment_offset):
+	Provide values in font units.
+
+2017-09-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+	[base] Remove a check for resource ID in the resource fork driver.
+
+	LastResort.dfont has a marginal resource ID 0xFFFF for sfnt
+	resource.  Inside Macintosh: More Macintosh Toolbox, `Resource IDs'
+	(1-46), tells that some IDs are reserved and should not be used.
+	FreeType2 just uses resource ID to sort the fragmented resource.
+	To accept the marginal fonts, the checking is removed.
+
+	* src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Remove res_id
+	validity check, fix a trace message format.
+
+2017-09-08  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+	[sfnt, truetype] Register the tags for marginal fonts.
+
+	The first 32bit of standard TrueType variants is 0x00010000,
+	`OTTO', `ttcf', `true' or `typ1'.  2 marginal dfonts on legacy Mac
+	OS X, Keyboard.dfont and LastResort.dfont, have the sfnt resources
+	starting 0xA5 followed by `kbd' or `lst'.  Considering the following
+	data could be parsed as conventional TrueType fonts, the header
+	checking is updated to allow these tags.  It seems that recent Mac
+	OS X has already switched to normal TTF for these fonts.
+
+	See the discussion at
+	http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3931.0
+
+	* include/freetype/tttags.h (TTAG_0xA5kbd, TTAG_0xA5lst): New header
+	tags for Keyboard.dfont and LastResort.dfont.
+	* src/sfnt/sfobjs.c (sfnt_open_font): Accept the sfnt resource
+	starts with TTAG_0xA5kbd or TTAG_0xA5lst.
+	* src/truetype/ttobjs.c (tt_face_init): Accept the face with the
+	format tag is TTAG_0xA5kbd or TTAG_0xA5lst.
+
+2017-09-05  Werner Lemberg  <wl@gnu.org>
+
+	Fix multiple calls of `FT_Bitmap_Convert'.
+
+	The documentation of `FT_Bitmap_Convert' says that multiple calls do
+	proper reallocation of the target FT_Bitmap object.  However, this
+	failed for the sequence
+
+	  non-empty bitmap
+	  empty bitmap
+	  non-empty bitmap
+
+	Reason was that `FT_Bitmap_Convert' only reallocated the bitmap
+	buffer if it became too small; it didn't make the buffer smaller.
+	For an empty bitmap following a non-empty one, only the buffer
+	dimension got set to zero, without deallocation.  If the next call
+	was a non-empty buffer again, an assertion in `ft_mem_qrealloc' was
+	triggered.
+
+	* src/base/ftbitmap.c (FT_Bitmap_Convert): Always reallocate target
+	buffer to the correct size.
+
+	* docs/CHANGES: Document it.
+
+2017-09-05  Werner Lemberg  <wl@gnu.org>
+
+	[bdf] Fix size and resolution handling.
+
+	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use `SIZE' values if
+	`POINT_SIZE', `RESOLUTION_X', or `RESOLUTION_Y' properties are
+	missing.
+
+	* docs/CHANGES: Document it.
+
+2017-08-25  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	Swap `ALLOC_MULT' arguments (#51833).
+
+	* src/base/ftbitmap.c (ft_bitmap_assure_buffer): Updated.
+	* src/winfonts/winfnt.c (FNT_Load_Glyph): Updated.
+	* src/raster/ftrend1.c (ft_raster1_render): Updated.
+
+2017-08-23  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix clang compilation (#51788).
+
+	* src/sfnt/pngshim.c (premultiply_data): Use vectors instead of
+	scalars.
+	(vector_shuffle): New macro to take care of a different built-in
+	function name on clang.
+
+2017-08-22  Werner Lemberg  <wl@gnu.org>
+
+	[base] Don't zero out allocated memory twice (#51816).
+
+	Patch applied from bug report.
+
+	* src/base/ftutil.c (ft_mem_qrealloc): Use low-level allocation to
+	avoid unnecessary overhead.
+
+2017-08-22  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflow.
+
+	Changes triggered by
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3107
+
+	* src/truetype/ttinterp.c (Ins_MDRP, Ins_MIRP, Ins_ALIGNPTS): Use
+	NEG_LONG.
+
+2017-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[sfnt] Avoid synthetic unicode for symbol fonts with PUA.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/chromium/issues/detail?id=754574
+
+	* src/sfnt/sfobjs.c (sfnt_load_face): Check for FT_ENCODING_MS_SYMBOL.
+
+2017-08-16  Werner Lemberg  <wl@gnu.org>
+
+	* src/sfnt/pngshim.c (premultiply_data): Fix compiler warnings.
+
+2017-08-15  Behdad Esfahbod  <behdad@behdad.org>
+
+	[sfnt] Speed up PNG image loading.
+
+	This reduces the overhead of `premultiply_data' by 60%.
+
+	* src/sfnt/pngshim.c (premultiply_data): Provide code which uses
+	gcc's (and clang's) `vector_byte' attribute to process 4 pixels at a
+	time.
+
+2017-08-11  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt, truetype] Improve handling of missing sbits.
+
+	Requested by Behdad.
+
+	Modern bitmap-only SFNTs like `NotoColorEmoji.ttf' don't contain
+	entries in the bitmap strike(s) for empty glyphs.  Instead, they
+	rely that a space glyph gets created from the font's metrics data.
+	This commit makes FreeType behave accordingly.
+
+	* include/freetype/fterrdef.h (FT_Err_Missing_Bitmap): New error
+	code.
+
+	* src/sfnt/ttsbit.c (tt_sbit_decoder_load_image): Change error codes
+	to make a distinction between a missing bitmap in a composite and a
+	simple missing bitmap.
+
+	* src/truetype/ttgload.c (TT_Load_Glyph): For a missing bitmap (in a
+	bitmap-only font), synthesize an empty bitmap glyph if metrics are
+	available.
+
+2017-08-10  Werner Lemberg  <wl@gnu.org>
+
+	[base] Minor API improvement for default variation axis setting.
+
+	* src/base/ftmm.c (FT_Set_MM_Design_Coordinates,
+	FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
+	FT_Set_Var_Blend_Coordinates): Allow coords==NULL if num_coords==0.
+
+	* docs/CHANGES: Updated.
+
+2017-08-08  Werner Lemberg  <wl@gnu.org>
+
+	[psnames] Really fix issue #49949.
+
+	We now use a separate preprocessor macro to handle both definition
+	and declaration of the glyph name arrays.
+
+	* src/psnames/psmodule.c (DEFINE_PS_TABLE_DATA): New macro.
+
+	* src/tools/glnames.py (StringTable::dump,
+	StringTable::dump_sublist): Use `DEFINE_PS_TABLE_DATA'.
+	(dump_encoding): Ditto.
+	(main): Use `wb' mode for writing the output file, which works on
+	Windows also.
+
+	* src/psnames/pstables.h: Regenerated.
+
+2017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[smooth] Harmony LCD rendering.
+
+	This is a new technology for LCD-optimized rendering. It capitalizes
+	on the fact that each color channel grid is shifted by a third of a
+	pixel.  Therefore it is logical to render 3 separate monochrome
+	bitmaps shifting the outline by 1/3 pixel, and then combine them.
+	Importantly, the resulting output does not require additional LCD
+	filtering.
+
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
+	[!FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Implement new LCD-optimized
+	rendering.
+
+	* include/freetype/ftlcdfil.h, include/freetype/freetype.h,
+	include/freetype/config/ftoption.h, devel/ftoption.h: Updated
+	documentation.
+
+2017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Clean up.
+
+2017-08-08  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/sfnt/ttpost.c (format): Use otspec-compliant versions.
+
+2017-08-05  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2868
+
+	* src/truetype/ttinterp.c (Ins_ALIGNRP): Use NEG_LONG.
+
+2017-08-05  Werner Lemberg  <wl@gnu.org>
+
+	[base, truetype] New function `FT_Get_Var_Axis_Flags'.
+
+	The reserved `flags' field got a value in OpenType version 1.8.2;
+	unfortunately, the public `FT_Var_Axis' structure misses the
+	corresponding element.  Since we can't add a new field, we add an
+	access function.
+
+	* src/base/ftmm.c (FT_Get_Var_Axis_Flags): New function.
+
+	* include/freetype/ftmm.h (FT_VAR_AXIS_FLAG_HIDDEN): New macro.
+	Updated.
+
+	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Increase allocated memory
+	of `mmvar' to hold axis flags.
+	Fill the axis flags array.
+
+	* docs/CHANGES: Updated.
+
+2017-08-03  Nikolaus Waxweiler  <madigens@gmail.com>
+
+	[truetype] Fix metrics of B/W hinting in v40 mode.
+
+	Phantom points are now saved outside v40 backwards compatibility
+	mode.  This fixes the jumping glyphs when switching between v35 and
+	v40 monochrome mode.
+
+	* src/truetype/ttgload.c (TT_Hint_Glyph): Fix inversed bool logic.
+
+2017-08-03  Nikolaus Waxweiler  <madigens@gmail.com>
+
+	[truetype] Do not set any ClearType flags in v40 monochrome mode.
+
+	This fixes weird behavior of instructions that resulted in rendering
+	differences between v35 and v40 in monochrome mode, e.g., in
+	`timesbi.ttf'.
+
+	* src/truetype/ttinterp.c (Ins_GETINFO)
+	[TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Check
+	`subpixel_hinting_lean'.
+
+2017-08-01  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Fix thinko.
+
+2017-08-01  Behdad Esfahbod  <behdad@behdad.org>
+
+	[truetype] Fix loading of named instances.
+
+	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Preserve file position
+	while loading the `avar' table.
+
+2017-08-01  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt, truetype] Minor adjustments for OpenType 1.8.2.
+
+	* src/sfnt/sfobjs.c (sfnt_load_face): The units per EM value has now
+	(tighter) limits.
+
+	* src/truetype/ttgload.c (load_truetype_glyph): The new OpenType
+	version explicitly allows all negative values for the number of
+	contours if we have a composite glyph (this is for better backwards
+	compatibility I guess), but it still recommends value -1.
+
+2017-07-26  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Integer overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2738
+
+	* src/cff/cf2hints.c (cf2_glyphpath_computeOffset,
+	cf2_glyphpath_curveTo): Use ADD_INT32.
+
+2017-07-13  Werner Lemberg  <wl@gnu.org>
+
+	[base] Fix memory leak.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/chromium/issues/detail?id=738362
+
+	* src/base/ftglyph.c (FT_Get_Glyph): Do proper deallocation in case
+	of error.
+
+2017-07-12  Werner Lemberg  <wl@gnu.org>
+
+	[base] Integer overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2573
+
+	* src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
+	FT_PIX_CEIL_LONG and FT_PIX_ROUND_LONG.
+
+2017-07-12  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttpload.c (tt_face_get_location): Off-by-one typo.
+
+	Also improve tracing message.
+
+	Problem reported as
+
+	  https://bugs.chromium.org/p/chromium/issues/detail?id=738919
+
+2017-07-07  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Integer overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2517
+
+	* src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32.
+
+2017-07-05  Werner Lemberg  <wl@gnu.org>
+
+	* src/sfnt/ttcmap.c (tt_cmap_unicode_class_rec): Fix warning.
+
+2017-07-05  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgxvar.c (FT_Stream_SeekSet): Fix warning (#51395).
+
+2017-07-04  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Prevent address overflow (#51365).
+
+	* src/truetype/ttgxvar.c (FT_Stream_SeekSet): Add guard.
+
+2017-07-03  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/base/ftlcdfil.c (ft_lcd_filter_fir): Improve code.
+
+2017-07-03  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2455
+
+	* src/truetype/ttinterp.c (Ins_SCFS): Use SUB_LONG.
+
+2017-07-01  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/sfnt/sfobjs.c (sfnt_load_face): Ignore No_Unicode_Glyph_Name.
+
+2017-06-28  Ben Wagner  <bungeman@google.com>
+
+	Avoid Microsoft compiler warnings (#51331).
+
+	While clang's sanitizer recommends a cast to unsigned for safe
+	negation (to handle -INT_MIN), both MSVC and Visualc emit warning
+	C4146 if an unsigned value gets negated.
+
+	* include/freetype/internal/ftcalc.h (NEG_LONG, NEG_INT32),
+	src/base/ftcalc.c (FT_MOVE_SIGN): Replace negation with a
+	subtraction.
+
+2017-06-27  Werner Lemberg  <wl@gnu.org>
+
+	* src/cff/cffparse.c (do_fixed): Fix typo.
+
+	Spotted by chris <chris@gcjd.org>.
+
+2017-06-27  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2384
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2391
+
+	* src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix): Use
+	NEG_LONG.
+
+	* src/truetype/ttinterp.c (Ins_SxVTL): Use NEG_LONG.
+
+2017-06-24  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2364
+
+	* src/truetype/ttinterp.c (Ins_ISECT): Use NEG_LONG.
+
+2017-06-22  Werner Lemberg  <wl@gnu.org>
+
+	[cff, truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2323
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2328
+
+	* src/cff/cf2blues.c (cf2_blues_capture): Use ADD_INT32 and
+	SUB_INT32.
+
+	* src/truetype/ttinterp.c (Ins_SDPVTL): Use SUB_LONG and NEG_LONG.
+
+2017-06-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[sfnt] Synthesize a Unicode charmap if one is missing.
+
+	* src/sfnt/ttcmap.h (tt_cmap_unicode_class_rec): Declare it.
+	* src/sfnt/ttcmap.c (tt_get_glyph_name, tt_cmap_unicode_init,
+	tt_cmap_unicode_done, tt_cmap_unicode_char_index,
+	tt_cmap_unicode_char_next, tt_cmap_unicode_class_rec): Implement
+	synthetic Unicode charmap class.
+	(tt_get_cmap_info): Make sure the callback is available.
+
+	* src/sfnt/sfobjs.c (sfnt_load_face)
+	[FT_CONFIG_OPTION_POSTSCRIPT_NAMES]: If Unicode charmap is missing,
+	synthesize one.
+
+	* include/freetype/config/ftoption.h: Document it.
+	* devel/ftoption.h: Ditto.
+
+2017-06-20  Tony Theodore  <tonyt@logyst.com>
+
+	Fix pkg-config in freetype-config for cross-compiling (#51274).
+
+	* builds/unix/unix-def.in (PKG_CONFIG): New variable.
+	(freetype-config): Use it in sed expression.
+
+	* builds/unix/freetype-config.in: s/pkg-config/%PKG_CONFIG%/.
+
+2017-06-20  Werner Lemberg  <wl@gnu.org>
+
+	[cff, truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2300
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2313
+
+	* src/cff/cf2hints.c (cf2_hintmap_adjustHints): Use ADD_INT32.
+
+	* src/truetype/ttinterp.c (Ins_ABS): Avoid FT_ABS.
+
+2017-06-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[base, smooth] LCD filtering cleanups.
+
+	* src/base/ftlcdfil.c (ft_lcd_filter_fir, _ft_lcd_filter_legacy):
+	Clean up, start filtering from the bottom-left origin.
+
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Updated.
+
+2017-06-16  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2270
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2276
+
+	* src/truetype/ttinterp.c (Ins_MDRP, _iup_worker_interpolate): Use
+	ADD_LONG and SUB_LONG.
+
+2017-06-15  Werner Lemberg  <wl@gnu.org>
+
+	[bdf, cff] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2244
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2261
+
+	* src/bdf/bdfdrivr.c (BDF_Face_Init): Replace calls to FT_ABS with
+	direct code to avoid value negation.
+
+	* src/cff/cf2blues.c (cf2_blues_capture): Use SUB_INT32 and
+	ADD_INT32.
+
+2017-06-13  Werner Lemberg  <wl@gnu.org>
+
+	* src/winfonts/winfnt.c (FNT_Face_Init): Don't set active encoding.
+
+	FreeType only sets a default active encoding for Unicode.
+
+2017-06-13  Werner Lemberg  <wl@gnu.org>
+
+	[cff, truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2216
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2218
+
+	* src/cff/cf2fixed.h (cf2_fixedAbs): Use NEG_INT32.
+
+	* src/truetype/ttinterp.c (Ins_IP): Use SUB_LONG.
+
+2017-06-11  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2200
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2210
+
+	* src/cff/cf2hints.c (cf2_hintmap_insertHint): Use SUB_INT32 and
+	ADD_INT32.
+
+	* src/cff/cf2intrp.c (cf2_interpT2CharString) <cf2_cmdVMOVETO>: Use
+	ADD_INT32.
+
+2017-06-10  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix TT_Set_Var_Design.
+
+	Reported by Nikolaus Waxweiler <madigens@gmail.com>.
+
+	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Correctly handle the
+	case where we have less input coordinates than axes.
+
+2017-06-10  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftcalc.c (FT_DivFix): Fix embarrassing typo.
+
+	Bug introduced 2017-05-28.
+
+2017-06-09  Werner Lemberg  <wl@gnu.org>
+
+	[cff, truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2144
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2151
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2153
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2173
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2186
+
+	* src/cff/cf2blues.c (cf2_blues_init): Use SUB_INT32.
+
+	* src/truetype/ttinterp.c (Round_None, Round_To_Grid,
+	Round_To_Half_Grid, Round_Down_To_Grid, Round_Up_To_Grid,
+	Round_To_Double_Grid, Round_Super, Round_Super_45): Use ADD_LONG,
+	SUB_LONG, NEG_LONG, FT_PIX_ROUND_LONG, FT_PIX_CEIL_LONG,
+	FT_PAD_ROUND_LONG
+	(Ins_SxVTL, Ins_MIRP): Use SUB_LONG.
+	(_iup_worker_shift): Use SUB_LONG and ADD_LONG.
+
+2017-06-09  Werner Lemberg  <wl@gnu.org>
+
+	Provide more macros for flooring, ceiling, and rounding.
+
+	These versions don't produce run-time errors due to integer
+	overflow.
+
+	* include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
+	(FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
+	FT_PIX_CEIL_LONG): New macros.
+	(FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
+	FT_PIX_CEIL_INT32): New macros.
+
+2017-06-09  Werner Lemberg  <wl@gnu.org>
+
+	Remove unused macros.
+
+	* include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
+	NEG_INT): Deleted.
+
+2017-06-09  Werner Lemberg  <wl@gnu.org>
+
+	*/*: Remove `OVERFLOW_' prefix.
+
+	This increases readability.
+
+2017-06-07  Werner Lemberg  <wl@gnu.org>
+
+	[cff, truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2133
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2137
+
+	* src/cff/cf2hints.c (cf2_hint_init): Use OVERFLOW_SUB_INT32.
+
+	* src/truetype/ttinterp.c (PROJECT, DUALPROJ): Use
+	OVERFLOW_SUB_LONG.
+
+2017-06-06  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2109
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2110
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2122
+
+	* src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
+
+	* src/cff/cf2hints.c (cf2_hintmap_map): Synchronize if-else
+	branches.
+
+2017-06-05  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Integer overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2089
+
+	* src/cff/cffload.c (cff_blend_doBlend): User OVERFLOW_ADD_INT32.
+
+2017-06-04  Werner Lemberg  <wl@gnu.org>
+
+	[cff, truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2075
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2088
+
+	* src/cff/cf2font.c (cf2_font_setup): Use OVERFLOW_MUL_INT32.
+
+	* src/truetype/ttinterp.c (Ins_ISECT): Use OVERFLOW_MUL_LONG,
+	OVERFLOW_ADD_LONG, and OVERFLOW_SUB_LONG.
+
+2017-06-03  Werner Lemberg  <wl@gnu.org>
+
+	[base, cff, truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2060
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2062
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2063
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2068
+
+	* src/base/ftobjs.c (ft_glyphslot_grid_fit_metrics): Use
+	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
+
+	* src/cff/cf2blues.c (cf2_blues_capture), src/cff/cf2hints.c
+	(cf2_hintmap_adjustHints): Use OVERFLOW_SUB_INT32.
+
+	* src/truetype/ttgload.c (compute_glyph_metrics): User
+	OVERFLOW_SUB_LONG.
+
+	* src/truetype/ttinterp.c (Direct_Move, Direct_Move_Orig,
+	Direct_Move_X, Direct_Move_Y, Direct_Move_Orig_X,
+	Direct_Move_Orig_Y, Move_Zp2_Point, Ins_MSIRP): Use
+	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG.
+
+2017-06-03  Werner Lemberg  <wl@gnu.org>
+
+	* builds/unix/freetype-config.in: Fix pkg-config test (#51162).
+
+	Patch directly taken from bug report.
+
+2017-06-03  Werner Lemberg  <wl@gnu.org>
+
+	[bdf] Synchronize sanity checks with pcf driver.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2054
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2058
+
+	* src/bdf/bdfdrivr.c (BDF_Face_Init): Check font ascent and descent.
+	Check AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and
+	RESOLUTION_Y properties.
+
+2017-06-03  Werner Lemberg  <wl@gnu.org>
+
+	[cff, truetype] Integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2047
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2057
+
+	* src/cff/cf2hints.c (cf2_hintmap_map): Use OVERFLOW_SUB_INT32.
+
+	* src/truetype/ttinterp.c (Ins_ADD): Use OVERFLOW_ADD_LONG.
+	(Ins_SUB): Use OVERFLOW_SUB_LONG.
+	(Ins_NEG): Use NEG_LONG.
+
+2017-06-03  Werner Lemberg  <wl@gnu.org>
+
+	ftcalc.h: Avoid left-shift of negative numbers.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2055
+
+	* include/freetype/internal/ftcalc.h (INT_TO_F26DOT6,
+	INT_TO_F2DOT14, INT_TO_FIXED, F2DOT14_TO_FIXED): Use multiplication.
+
+2017-06-02  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Even more integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2046
+
+	* src/cff/cf2intrp.c (cf2_doStems, cf2_interpT2CharString): Use
+	OVERFLOW_ADD_INT32.
+
+2017-06-02  Werner Lemberg  <wl@gnu.org>
+
+	[cff] More integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2032
+
+	* src/cff/cf2blues.c (cf2_blues_init): Use OVERFLOW_SUB_INT32.
+
+2017-06-02  Werner Lemberg  <wl@gnu.org>
+
+	[bdf] Don't left-shift negative numbers.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2031
+
+	* src/bdf/bdfdrivr.c (BDF_Face_Init): Use multiplication.
+
+2017-06-02  Werner Lemberg  <wl@gnu.org>
+
+	[bdf] Fix integer scanning routines.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2029
+
+	* src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, _bdf_atos):
+	Stop scanning if result would overflow.
+
+2017-06-02  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Fix integer overflows.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2027
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2028
+
+	* src/cff/cf2hints.c (cf2_hintmap_insertHint), src/cff/cf2intrp.c
+	(cf2_doFlex): Use OVERFLOW_ADD_INT32 and OVERFLOW_SUB_INT32.
+
+2017-06-01  Werner Lemberg  <wl@gnu.org>
+
+	[smooth] Some 32bit integer overflow run-time errors.
+
+	* src/smooth/ftgrays.c [STANDALONE] (OVERFLOW_ADD_LONG,
+	OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG, NEG_LONG): New macros.
+	[!STANDALONE]: Include FT_INTERNAL_CALC_H.
+	(gray_render_cubic): Use those macros where appropriate.
+
+2017-06-01  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftglyph.c (FT_Get_Glyph): Check `slot->advance'.
+
+2017-06-01  Werner Lemberg  <wl@gnu.org>
+
+	[psaux] 32bit integer overflow tun-time errors (#46149).
+
+	* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Use
+	OVERFLOW_ADD_LONG and OVERFLOW_SUB_LONG where appropriate.
+
+2017-06-01  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter again.
+
+	Problem reported by Marek Kašík <mkasik@redhat.com>.
+
+	The problematic font that exceeds the old limit is Padauk-Bold,
+	version 3.002, containing bytecode generated by a buggy version of
+	ttfautohint.
+
+2017-05-31  Werner Lemberg  <wl@gnu.org>
+
+	[cff] 32bit integer overflow run-time errors 2/2 (#46149).
+
+	This commit handles the new engine.
+
+	* include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT32,
+	OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, NEG_INT, NEG_LONG,
+	NEG_INT32): New macros.
+
+	* src/cff/cf2ft.c (cf2_getScaleAndHintFlag): Use OVERFLOW_ADD_INT32.
+
+	* src/cff/cf2hints.c (cf2_getWindingMomentum, cf2_hint_init,
+	cf2_hintmap_map, cf2_glyphpath_hintPoint,
+	cf2_glyphpath_computeIntersection, cf2_glyphpath_computeOffset,
+	cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): Use
+	OVERFLOW_ADD_INT32, OVERFLOW_SUB_INT32, OVERFLOW_MUL_INT32, and
+	NEG_INT32 where appropriate.
+
+	* src/cff/cf2intrp.c (cf2_doFlex, cf2_doBlend,
+	cf2_interpT2CharString): Ditto.
+	Also add some other code where needed to avoid overflow.
+
+2017-05-30  Werner Lemberg  <wl@gnu.org>
+
+	[cff] 32bit integer overflow run-time errors 1/2 (#46149).
+
+	This commit handles the old engine.
+
+	* src/cff/cffgload.c: Include FT_INTERNAL_CALC_H.
+	(cff_decoder_parse_charstrings): Use OVERFLOW_ADD_LONG and
+	OVERFLOW_SUB_LONG where needed.
+
+	* src/cff/cffparse.c: Include FT_INTERNAL_CALC_H.
+	(power_ten_limits): New static array.
+	(do_fixed): Use it to prevent multiplication overflow.
+	(cff_parser_run): Use OVERFLOW_ADD_LONG.
+
+2017-05-30  Werner Lemberg  <wl@gnu.org>
+
+	[psaux] Correctly handle sequences of multiple number signs.
+
+	* src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
+	if we encounter more than a single sign.
+
+2017-05-29  Werner Lemberg  <wl@gnu.org>
+
+	[pcf] 32bit integer overflow run-time errors (#46149).
+
+	* src/pcf/pcfread.c (pcf_get_accel): Add sanity checks for
+	`fontAscent' and `fontDescent'.
+	(pcf_load_font): Add sanity checks for global height.
+	Add sanity checks for AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE,
+	RESOLUTION_X, and RESOLUTION_Y properties.
+
+2017-05-29  Werner Lemberg  <wl@gnu.org>
+
+	Handle some integer overflow run-time errors (#46149, #48979).
+
+	This commit (mainly for 32bit CPUs) is the first of a series of
+	similar commits to handle known integer overflows.  Basically, all
+	of them are harmless, since they affect rendering of glyphs only,
+	not posing security threats.  It is expected that fuzzying will show
+	up more overflows, to be fixed in due course.
+
+	The idea is to mark places where overflows can occur, using macros
+	that simply cast to unsigned integers, because overflow arithmetic
+	is well defined in this case.  Doing so suppresses run-time errors
+	of sanitizers without adding computational overhead.
+
+	* include/freetype/internal/ftcalc.h (OVERFLOW_ADD_INT,
+	OVERFLOW_SUB_INT, OVERFLOW_MUL_INT, OVERFLOW_ADD_LONG,
+	OVERFLOW_SUB_LONG, OVERFLOW_MUL_LONG): New macros.
+
+	* src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_Matrix_Multiply,
+	FT_Matrix_Multiply_Scaled, FT_Vector_Transform_Scaled,
+	ft_corner_orientation): Use new macros.
+
+	* src/base/ftoutln.c (FT_Outline_Get_Orientation): Use new macros.
+
+2017-05-28  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/internal/ftcalc.h (FLOAT_TO_FIXED): Remove.
+
+	This macro is not used.
+
+2017-05-28  Werner Lemberg  <wl@gnu.org>
+
+	[cff] s/cf2_floatToFixed/cf2_doubleToFixed/.
+
+	The new name better describes what the macro actually does;
+	additionally, we don't need a trailing `f' for literals (there was
+	only a single such instance in the code, but this caused a clang
+	warning because the macro itself uses `double' literals).
+
+	* src/cff/cf2blues.c, src/cff/cf2blues.h, src/cff/cf2fixed.h,
+	src/cff/cf2font.c, src/cff/cf2hints.c: Updated.
+
+2017-05-28  Werner Lemberg  <wl@gnu.org>
+
+	Fix negation of INT_MIN and LONG_MIN (#46149).
+
+	* src/base/ftcalc.c (FT_MOVE_SIGN): Add argument to pass unsigned
+	value, to be used as the result.
+	(FT_MulDiv, FT_MulDiv_No_Round, FT_DivFix, FT_MulFix,
+	FT_Vector_NormLen): Updated.
+
+2017-05-27  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix handling of design coordinates (#51127).
+
+	* src/truetype/ttgxvar.c (tt_set_mm_blend): Compute all design
+	coordinates if we have to create the `blends->coord' array.
+	(TT_Get_MM_Blend, TT_Get_Var_Design): Select default instance
+	coordinates if no instance is selected yet.
+
+2017-05-24  Werner Lemberg  <wl@gnu.org>
+
+	[bdf, pcf] Support ISO646.1991-IRV character encoding (aka ASCII).
+
+	Problem reported by Marek Kašík <mkasik@redhat.com>, cf.
+
+	  https://bugzilla.redhat.com/show_bug.cgi?id=1451795
+
+	* src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdrivr.c
+	(PCF_Face_Init): Implement it.
+
+2017-05-20  Nikolaus Waxweiler  <madigens@gmail.com>
+
+	[truetype] Always use interpreter v35 for B/W rendering (#51051).
+
+	* src/truetype/ttgload.c (tt_loader_init)
+	[TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL]: Adjust
+	`subpixel_hinting_lean', `grayscale_cleartype', and
+	`vertical_lcd_lean' accordingly.
+
+	* src/truetype/ttinterp.c (Ins_GETINFO): Updated.
+	(TT_RunIns): Update `backward_compatibility' flag.
+
+2017-05-20  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[smooth] Implement minimal dynamic padding for LCD filtering.
+
+	Extra bitmap padding for LCD filtering depends on the filter.  The
+	default 5-tap filter needs 2 extra subpixels.  The light 3-tap filter
+	needs only 1 extra subpixel.  This space could be already available
+	due to rounding.  In order to optimize the padding, we now expand
+	CBox for the given filter weights before rounding.
+
+	This change breaks current Skia (and Firefox).
+
+	* include/freetype/internal/ftobjs.h (FT_LibraryRec)
+	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Remove `lcd_extra' field.
+
+	* src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights,
+	FT_Library_SetLcdFilter): Remove `lcd_extra' initializations.
+
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic): Implement dymanic
+	LCD padding.
+
+2017-05-15  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Return proper scaling values for SBIX bitmaps.
+
+	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
+
+	* src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Implement it.
+
+2017-05-15  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix error handling for embedded bitmaps.
+
+	Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
+
+	* src/truetype/ttgload.c (TT_Load_Glyph)
+	[TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Handle error if font is not
+	scalable.
+
+2017-05-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[autofit] Make autohint warping NORMAL option.
+
+	This moves warping option from LIGHT to NORMAL mode.  This makes LIGHT
+	truly void of hinting in x-direction, with left side bearing never
+	changed and right side bearing only altered by advance rounding.
+	Therefore, LIGHT is now ready to return fractional advance.  As a
+	NORMAL option, warping substitutes normal hinting.
+
+	* src/autofit/afcjk.c (af_cjk_hints_apply): Updated.
+	* src/autofit/aflatin.c (af_latin_hints_apply): Updated.
+	* src/autofit/aflatin2.c (af_latin2_hints_apply): Updated.
+
+	* src/autofit/afloader.c (af_loader_load_glyph): Handle warping
+	phantom points as normal.
+
+2017-05-14  Werner Lemberg  <wl@gnu.org>
+
+	Remove remnants of raster pool.
+
+	* include/freetype/internal/ftobjs.h (FT_LibraryRec): Remove
+	`raster_pool' and `raster_pool_size' fields.
+
+	* src/base/ftobjs.c (FT_New_Library), src/raster/ftrend1.c
+	(ft_raster1_init), src/smooth/ftsmooth.c (ft_smooth_init): Updated.
+
+2017-05-13  Werner Lemberg  <wl@gnu.org>
+
+	* Version 2.8 released.
+	=======================
+
+
+	Tag sources with `VER-2-8'.
+
+	* docs/VERSION.TXT: Add entry for version 2.8.
+	* docs/CHANGES: Updated.
+
+	* README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj,
+	builds/windows/vc2005/index.html,
+	builds/windows/vc2008/freetype.vcproj,
+	builds/windows/vc2008/index.html,
+	builds/windows/vc2010/freetype.vcxproj,
+	builds/windows/vc2010/index.html,
+	builds/windows/visualc/freetype.dsp,
+	builds/windows/visualc/freetype.vcproj,
+	builds/windows/visualc/index.html,
+	builds/windows/visualce/freetype.dsp,
+	builds/windows/visualce/freetype.vcproj,
+	builds/windows/visualce/index.html,
+	builds/wince/vc2005-ce/freetype.vcproj,
+	builds/wince/vc2005-ce/index.html,
+	builds/wince/vc2008-ce/freetype.vcproj,
+	builds/wince/vc2008-ce/index.html: s/2.7.1/2.8/, s/271/28/.
+
+	* include/freetype/freetype.h (FREETYPE_MINOR): Set to 8.
+	(FREETYPE_PATCH): Set to 0.
+
+	* builds/unix/configure.raw (version_info): Set to 20:0:14.
+	* CMakeLists.txt (VERSION_MINOR): Set to 8.
+	(VERSION_PATCH): Set to 0.
+
+2017-05-12  Hin-Tak Leung  <htl10@users.sourceforge.net>
+
+	Fix `FT_UINT_TO_POINTER' macro for Windows.
+
+	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
+	include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER) [_WIN64]:
+	Fix definition.
+
+2017-05-11  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Chakma script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Chakma.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Chakma standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Chakma data.
+
+2017-05-10  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Kayah Li script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Kayah Li.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Kayah Li standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Kayah Li data.
+
+2017-05-10  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Bamum script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Bamum.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Bamum standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Bamum data.
+
+2017-05-10  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Saurashtra script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Saurashtra.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Saurashtra standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Saurashtra
+	data.
+
+2017-05-10  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Buhid script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Buhid.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Buhid standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Buhid data.
+
+2017-05-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Shavian script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Shavian.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Shavian standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Shavian data.
+
+2017-05-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Vai script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Vai.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Vai standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Vai data.
+
+2017-05-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Osmanya script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Osmanya.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Osmanya standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Osmanya data.
+
+2017-05-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Coptic script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Coptic.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Coptic standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Coptic data.
+
+2017-05-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Carian script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Carian.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Carian standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Carian data.
+
+2017-05-07  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Add tricky font `DFGirl-W6-WIN-BF' (from Dynalab).
+
+	Reported by Roy Tam <roytam@gmail.com>.
+
+	* src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
+
+2017-05-07  Roy Tam  <roytam@gmail.com>
+	    Werner Lemberg  <wl@gnu.org>
+
+	[truetype] More tricky fonts (mainly from Dynalab).
+
+	* src/truetype/ttobjs.c (tt_check_trickyness_family,
+	tt_check_trickyness_sfnt_ids): Add them.
+
+2017-05-07  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Add tricky font `DLCHayMedium' (from Dynalab).
+
+	Reported by Roy Tam <roytam@gmail.com>.
+
+	* src/truetype/ttobjs.c (tt_check_trickyness_family): Implement it.
+
+2017-05-03  Werner Lemberg  <wl@gnu.org>
+
+	*/*: s/backwards compatibility/backward compatibility/.
+
+2017-05-03  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Unified Canadian Syllabics script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Unified Canadian
+	Syllabics.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Unified Canadian Syllabics standard
+	character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Unified
+	Canadian Syllabics data.
+
+2017-05-03  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Add blue-zone support for Sundanese script.
+
+	This essentially moves the Sundanese script from the `Indic' hinter
+	to the `Latin' hinter.
+
+	* src/autofit/afblue.dat: Add blue zone data for Sundanese.
+
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Sundanese standard character and move
+	data out of AF_CONFIG_OPTION_INDIC block.
+
+	* src/autofit/afranges.c: Move Sundanese data out of
+	AF_CONFIG_OPTION_INDIC block.
+
+	* src/autofit/afstyles.h: Update Sundanese data; in particular, use
+	AF_WRITING_SYSTEM_LATIN.
+
+2017-05-03  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Avestan script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Avestan.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Avestan standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Avestan data.
+
+2017-05-02  Behdad Esfahbod  <behdad@behdad.org>
+
+	[truetype] Make `IUP' gvar deltas do the same as Apple (#50832).
+
+	When points are not touched by gvar interpolation deltas, FreeType
+	gave a slightly different result than Apple's CoreText.
+
+	The OpenType working group will update the specification to document
+	the following behaviour: If the two points with deltas to the `left'
+	and `right' of the untouched point have the same coordinate, then
+	the inferred delta for the untouched point should be zero.
+
+	* src/truetype/ttgxvar.c (tt_delta_interpolate): Implement new
+	behaviour.
+
+2017-05-02  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Remove `slight' auto-hint mode again.
+
+	A poll on freetype-devel favoured changes directly applied to
+	`light'.
+
+	* include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT,
+	FT_RENDER_MODE_SLIGHT): Removed.
+
+	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
+	(af_latin_hints_init), src/autofit/aflatin2.c
+	(af_latin2_hints_init): Revert change from 2017-04-22.
+
+	* src/autofit/afloader.c (af_loader_load_glyph) Remove references to
+	FT_RENDER_MODE_SLIGHT.
+	[AF_CONFIG_OPTION_TT_SIZE_METRICS]: Enable TrueType-like metrics
+	unconditionally.
+
+	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Revert change from
+	2017-04-22.
+
+	* src/base/ftobjs.c (FT_Load_Glyph): Revert change from 2017-04-22.
+
+	* src/pshinter/pshalgo.c (ps_hints_apply): Revert change from
+	2017-04-22.
+
+	* src/smooth/ftsmooth.c (ft_smooth_render): Revert change from
+	2017-04-22.
+
+	* docs/CHANGES: Updated.
+
+2017-04-30  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Fix metrics computation.
+
+	Problem reported by Markus Trippelsdorf <markus@trippelsdorf.de> and
+	Nikolaus Waxweiler <madigens@gmail.com>.
+
+	* src/base/ftobjs.c (FT_Request_Size): Trigger recomputation of
+	auto-hinter metrics.  Without this change, multiple size changing
+	calls for a single face fail.
+
+2017-04-29  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttdriver.c (tt_size_request): Properly check `error'.
+
+	Reported by Earnestly <zibeon@googlemail.com> in
+
+	  https://lists.nongnu.org/archive/html/freetype/2017-04/msg00031.html
+
+2017-04-27  Werner Lemberg  <wl@gnu.org>
+
+	Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.
+
+	* include/freetype/config/ftoption.h
+	(AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
+	default.
+
+	* src/autofit/afloader.c (af_loader_load_glyph): Use
+	AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.
+
+2017-04-26  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/freetype.h (FT_Render_Mode): Fix order.
+
+	This retains backward compatibility.
+
+	Noted by Alexei.
+
+2017-04-22  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Do linear scaling for FT_LOAD_NO_HINTING (#50470).
+
+	* src/truetype/ttobjs.h (TT_SizeRec): Add field `hinted_metrics' to
+	hold hinted metrics.
+	Make `metrics' a pointer so that `tt_glyph_load' can easily switch
+	between metrics.
+
+	* src/truetype/ttdriver.c (tt_size_request): Updated.
+	(tt_glyph_load): Use top-level metrics if FT_LOAD_NO_HINTING is
+	used.
+
+	* src/truetype/ttgload.c (TT_Hint_Glyph, TT_Process_Simple_Glyph,
+	TT_Process_Composite_Component, load_truetype_glyph,
+	compute_glyph_metrics, TT_Load_Glyph): Updated.
+
+	* src/truetype/ttinterp.c (TT_Load_Context): Updated.
+
+	* src/truetype/ttobjs.c (tt_size_reset): Updated.
+
+	* src/truetype/ttsubpix.c (sph_set_tweaks): Updated.
+
+2017-04-22  Werner Lemberg  <wl@gnu.org>
+
+	Add new `slight' auto-hinting mode.
+
+	This mode uses fractional advance widths and doesn't scale glyphs
+	horizontally, only applying vertical scaling and hinting.
+
+	At the same time, the behaviour of the `light' auto-hinter gets
+	restored for backward compatibility: Both vertical and horizontal
+	scaling is again based on rounded metrics values (this was changed
+	in a commit from 2017-03-30 as a side effect).  To be more precise,
+	the behaviour is restored for TrueType fonts only; for other font
+	formats like Type 1, this is a new feature of the `light' hinting
+	mode.
+
+	* include/freetype/freetype.h (FT_LOAD_TARGET_SLIGHT): New macro.
+	(FT_RENDER_MODE_SLIGHT): New render mode.
+
+	* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): Add
+	`autohint_mode' and `autohint_metrics' fields.
+
+	* src/autofit/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c
+	(af_latin_hints_init), src/autofit/aflatin2 (af_latin2_hints_init):
+	Updated.
+
+	* src/autofit/afloader.c (af_loader_embolden_glyph_in_slot): Use
+	`autohint_metrics'.
+	(af_loader_load_glyph): s/internal/slot_internal/.
+	Initialize `autohint_metrics' and `autohint_mode' depending on
+	current auto-hint mode.
+	Use `autohint_metrics'.
+	Updated.
+
+	* src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Updated.
+
+	* src/base/ftobjs.c (FT_Load_Glyph): Updated.
+	(FT_New_Size): Allocate `internal' object.
+
+	* src/pshinter/pshalgo.c (ps_hints_apply): Updated.
+
+	* src/smooth/ftsmooth.c (ft_smooth_render): Updated.
+
+2017-04-22  Werner Lemberg  <wl@gnu.org>
+
+	Introduce `FT_Size_InternalRec' structure.
+
+	We are going to extend this later on.
+
+	* include/freetype/internal/ftobjs.h (FT_Size_InternalRec): New
+	structure with a single field `module_data'.
+
+	* src/base/ftobjs.c (FT_New_Size): Allocate `internal' field of
+	`FT_Size' structure.
+
+	* src/cff/cffgload.c (cff_builder_init, cff_decoder_prepare): Use
+	`size->internal->module_data' instead of `size->internal'.
+
+	* src/cff/cffobjs.c (cff_size_done): Deallocate `module_data'.
+	(cff_size_init, cff_size_select, cff_size_request): Use
+	`size->internal->module_data' instead of `size->internal'.
+
+	* src/cif/cidobjs.c (cid_size_done, cid_size_init,
+	cid_size_request): Use `size->internal->module_data' instead of
+	`size->internal'.
+
+	* src/psaux/psobjs.c (t1_builder_ini): Use
+	`size->internal->module_data' instead of `size->internal'.
+
+	* src/type1/t1objs.c (T1_Size_Done, T1_Size_Init, T1_Size_Request):
+	Use `size->internal->module_data' instead of `size->internal'.
+
+2017-04-21  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/smooth/ftsmooth.h: Remove unused guards and declaration.
+
+2017-04-16  Hin-Tak Leung  <htl10@users.sourceforge.net>
+
+	Fix tracing messages.
+
+	* src/base/ftobjs.c (FT_Face_GetCharVariantIndex,
+	FT_Face_GetCharVariantIsDefault, FT_Face_GetVariantsOfChar): Print
+	correct function name.
+
+2017-04-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Old Turkic script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Old Turkic.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Old Turkic standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Old Turkic data.
+
+2017-04-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Gothic script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Gothic.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Gothic standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Gothic data.
+
+2017-04-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Cypriot script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Cypriot.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Cypriot standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Cypriot data.
+
+2017-04-08  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Deseret script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Deseret.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Deseret standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Deseret data.
+
+2017-04-07  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Fix invalid character range description (#50745).
+
+	Also reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1034
+
+	* src/autofit/afranges.c (af_glag_nonbase_uniranges): Fix typo in
+	recent commit.
+
+2017-04-07  Werner Lemberg  <wl@gnu.org>
+
+	[ftfuzzer] Fix clang warnings.
+
+	* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Add
+	casts.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Lisu script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Lisu.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Lisu standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Lisu data.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Osage script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Osage.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Osage standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Osage data.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Glagolitic script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Glagolitic.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Glagolitic standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Glagolitic data.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Tai Viet script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Tai Viet.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Tai Viet standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Tai Viet data.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for Tifinagh script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Tifinagh.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Tifinagh standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Tifinagh data.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
+	    Werner Lemberg  <wl@gnu.org
+
+	[autofit] Add support for N'Ko script.
+
+	* src/autofit/afblue.dat: Add blue zone data for N'Ko.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add N'Ko standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add N'Ko data.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
+
+	[autofit] Add support for Adlam script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Adlam.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Adlam standard characters.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Adlam data.
+
+2017-04-06  Sascha Brawer  <sascha@google.com>
+
+	[autofit] Add support for Ol Chiki script.
+
+	* src/autofit/afblue.dat: Add blue zone data for Ol Chiki.
+	* src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+	* src/autofit/afscript.h: Add Ol Chiki standard character.
+
+	* src/autofit/afranges.c, src/autofit/afstyles.h: Add Ol Chiki data.
+
+2017-04-03  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Avoid reexecution of `fpgm' and `prep' in case of error.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=981
+
+	* include/freetype/fterrdef.h (FT_Err_DEF_In_Glyf_Bytecode): New
+	error code.
+
+	* src/truetype/ttinterp.c (Ins_FDEF, Ins_IDEF): Prohibit execution
+	of these two opcodes in `glyf' bytecode.
+	(TT_RunIns): Don't enforce reexecution of `fpgm' and `prep' bytecode
+	in case of error since function tables can no longer be modified
+	(due to the changes in `Ins_FDEF' and `Ins_IDEF').  This change can
+	enormously speed up handling of broken fonts.
+
+2017-04-02  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[autofit] Disable metrics adjustment for `FT_LOAD_TARGET_LCD'.
+
+	* src/autofit/aflatin.c (af_latin_hints_init): Updated.
+	* src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
+
+2017-04-01  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgload.c: Include FT_CONFIG_CONFIG_H.
+
+	Otherwise FT_UINT_TO_POINTER might not be defined.
+
+	Problem reported by Alexei.
+
+2017-03-31  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[autofit] Disable stem adjustment for `FT_LOAD_TARGET_LCD'.
+
+	* include/freetype/freetype.h (FT_LOAD_TARGET_LCD): Document it.
+	* src/autofit/afcjk.c (af_cjk_hints_init): Updated.
+	* src/autofit/aflatin.c (af_latin_hints_init): Ditto.
+	* src/autofit/aflatin2.c (af_latin2_hints_init): Ditto.
+
+2017-03-31  Werner Lemberg  <wl@gnu.org>
+
+	* src/cff/cffload.c (cff_font_load): Improve fix from 2017-01-04.
+
+	Allow CFFs containing a single font to have an empty font name.
+
+	Problem reported by 張俊芝 <418092625@qq.com> in
+
+	  https://lists.nongnu.org/archive/html/freetype-devel/2017-03/msg00074.html
+
+2017-03-30  Werner Lemberg  <wl@gnu.org>
+
+	* src/cff/cffparse.h (CFF2_DEFAULT_STACK): Set to 513 also.
+
+	Requested by Dave Arnold.
+
+2017-03-30  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix HVAR and VVAR handling (#50678).
+
+	* src/truetype/ttgxvar.c (tt_hvadvance_adjust): Handle
+	glyph indices larger than `mapCount' as described in the
+	specification.
+
+2017-03-30  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Allow linear scaling for unhinted rendering (#50470).
+
+	* src/truetype/ttdriver.c (tt_size_request): Revert change from
+	2011-07-16; the intended metrics fix seems now to be implemented in
+	a different way, making the patch unnecessary.  Note that this
+	change was usually patched out by all major GNU/Linux distributions
+	due to heavy side effects.
+
+	* src/truetype/ttgload.c (compute_glyph_metrics, TT_Load_Glyph):
+	Refer to the metrics of the `TT_Size' object.
+
+2017-03-29  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix thinko related to PS name of default named instance.
+
+	* src/truetype/ttgxvar.c (TT_Get_MM_Var): `strid' and `psid' are
+	name ID values, not indices into the array of name entries.
+
+2017-03-27  Werner Lemberg  <wl@gnu.org>
+
+	[cid, truetype] Don't use `index' as a variable name.
+
+	At least on FreeBSD there is a global declaration of `index' in file
+	`/usr/include/strings.h'.
+
+	* src/cff/cf2intrp.c, src/truetype/ttgload.c: s/index/idx/ where
+	appropriate.
+
+2017-03-27  Wojciech Mamrak  <wmamrak@gmail.com>
+
+	[sfnt] Minor improvement for handling kern tables.
+
+	* src/sfnt/ttkern.c (tt_face_load_kern): Don't check for
+	cross-stream kerning tables since we reject format 2 tables later
+	on anyways.
+	Modify code for limit test...
+	(tt_face_get_kerning): ... to avoid a limit test here.
+
+2017-03-27  Werner Lemberg  <wl@gnu.org>
+
+	[pcf] Fix compiler warnings.
+
+	Reported by Alexander Hedges <ahedges@student.ethz.ch>.
+
+	* src/pcf/pcfdrivr.c (pcf_property_set, pcf_property_get): Tag
+	`property_name' with `FT_UNUSED' where necessary.
+
+2017-03-26  Werner Lemberg  <wl@gnu.org>
+
+	* src/psaux/psobjs.c (t1_builder_close_contour): Add safety guard.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=941
+
+2017-03-23  Werner Lemberg  <wl@gnu.org>
+
+	[psaux] Better protect `flex' handling.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=935
+
+	* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
+	<callothersubr>: Since there is not a single flex operator but a
+	series of subroutine calls, malformed fonts can call arbitrary other
+	operators after the start of a flex, possibly adding points.  For
+	this reason we have to check the available number of points before
+	inserting a point.
+
+2017-03-23  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix check for default named instance.
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): A `fixed' number needs four
+	bytes, not two...
+
+2017-03-23  Werner Lemberg  <wl@gnu.org>
+
+	Make MM fonts work (again).
+
+	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
+	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates): Ignore
+	return value of `ft_face_get_mvar_service'; instead, check whether a
+	service is actually returned.
+
+2017-03-20  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Some variable renamings.
+
+	Too much local variables holding different structures were called
+	`metrics'.
+
+	* src/truetype/ttdriver.c (tt_size_select): s/metrics/size_metrics/.
+
+	* src/truetype/ttgload.c (tt_get_metrics_incr_overrides,
+	compute_glyph_metrics): s/metrics/incr_metrics/.
+	(load_sbit_image): s/metrics/sbit_metrics/.
+
+	* src/truetype/ttobjs.c (tt_size_run_fpgm): s/metrics/size_metrics/.
+	(tt_size_init_bytecode): s/metrics/tt_metrics/.
+	(tt_size_reset): s/metrics/size_metrics/.
+
+2017-03-20  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Don't add instances to non-variation fonts.
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): Fix it.
+
+2017-03-20  Werner Lemberg  <wl@gnu.org>
+
+	* src/cff/cffgload.c (cff_builder_init): Add safety guard (#50578).
+
+2017-03-18  Werner Lemberg  <wl@gnu.org>
+
+	Introduce FT_UINT_TO_POINTER macro (#50560).
+
+	We have to make a separate case for Windows 64's LLP64 data model.
+
+	* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
+	include/freetype/config/ftconfig.h (FT_UINT_TO_POINTER): New macro.
+
+	* src/truetype/ttgload.c (load_truetype_glyph): Use it.
+
+2017-03-18  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop counter (#50573).
+
+	The problematic font that exceeds the old limit is Lato-Regular,
+	version 2.007, containing bytecode generated by a buggy version of
+	ttfautohint.
+
+2017-03-18  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Another limitation for bytecode loop count maximum.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=900
+
+	* src/truetype/ttinterp.c (TT_RunIns): Limit `loopcall_counter_max'
+	by number of glyphs also.
+
+2017-03-18  Werner Lemberg  <wl@gnu.org>
+
+	[ftfuzzer] Minor improvement.
+
+	* src/tools/ftfuzzer/ftfuzzer.cc: Don't set intermediate axis if
+	bitmap strikes are active.
+
+2017-03-18  Werner Lemberg  <wl@gnu.org>
+
+	Improve `make multi'.
+
+	* src/autofit/aflatin2.c: Guard file with FT_OPTION_AUTOFIT2.
+
+	* src/base/ftmac.c: Guard more parts of the file with FT_MACINTOSH.
+
+	* src/psaux/afmparse.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
+
+	* src/sfnt/pngshim.c: Guard file with
+	TT_CONFIG_OPTION_EMBEDDED_BITMAPS also.
+
+	* src/sfnt/ttbdf.c: Avoid empty source file.
+	* src/sfnt/ttpost.c: Guard file with
+	TT_CONFIG_OPTION_POSTSCRIPT_NAMES.
+	* src/sfnt/ttsbit.c: Guard file with
+	TT_CONFIG_OPTION_EMBEDDED_BITMAPS.
+
+	* src/truetype/ttgxvar.c, src/truetype/ttinterp.c: Avoid empty
+	source file.
+
+	* src/truetype/ttsubpix.c: Guard file with
+	TT_USE_BYTECODE_INTERPRETER also.
+
+	* src/type1/t1afm.c: Guard file with T1_CONFIG_OPTION_NO_AFM.
+
+	* src/autofit/autofit.c, src/base/ftbase.c, src/cache/ftcache.c,
+	src/cff/cff.c, src/cid/type1cid.c, src/gxvalid/gxvalid.c,
+	src/pcf/pcf.c, src/pfr/pfr.c, src/psaux/psaux.c,
+	src/pshinter/pshinter.c, src/psnames/psnames.c, src/raster/raster.c,
+	src/sfnt/sfnt.c, src/smooth/smooth.c, src/truetype/truetype.c,
+	src/type1/type1.c, src/type42/type42.c: Remove conditionals; sort
+	entries.
+
+2017-03-17  Werner Lemberg  <wl@gnu.org>
+
+	Fixes for conditional compilation.
+
+	* src/autofit/afcjk.c, src/autofit/afindic.c: Include `afcjk.h'
+	earlier.
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): Put `memory' variable into
+	TT_CONFIG_OPTION_GX_VAR_SUPPORT block.
+	(sfnt_done_face): Protect some code with
+	TT_CONFIG_OPTION_GX_VAR_SUPPORT.
+
+	* src/sfnt/ttsbit.c (tt_face_load_sbix_image): Remove compiler
+	warning.
+
+	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Put `tmp' variable
+	into TT_USE_BYTECODE_INTERPRETER block.
+
+	(tt_loader_init): Put `error' variable into
+	TT_USE_BYTECODE_INTERPRETER block.
+
+2017-03-17  Werner Lemberg  <wl@gnu.org>
+
+	Fix preprocessor warning.
+
+	* devel/ftoption.h, include/freetype/config/ftoption.h: Test whether
+	TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined before checking its
+	value.
+
+2017-03-17  Werner Lemberg  <wl@gnu.org>
+
+	`make multi' fixes; compiler warnings.
+
+	* src/base/ftsnames.c: Include FT_INTERNAL_DEBUG_H.
+
+	* src/cff/cffobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
+	FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
+
+	* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
+	FT_MULTIPLE_MASTERS_H and FT_SERVICE_MULTIPLE_MASTERS_H.
+	(get_win_string, get_apple_string): Initialize `result'.
+
+2017-03-17  Dave Arnold <darnold@adobe.com>
+
+	[cff] Fix potential bugs in default NDV for CFF2.
+
+	* src/cff/cffload.c (cff_blend_build_vector): Explicitly build blend
+	vector when `lenNDV' is zero; don't rely on zero-init.
+	Save `lenNDV' as part of cache key even when `lenNDV' is zero.
+
+2017-03-17  Dave Arnold <darnold@adobe.com>
+
+	[cff] Fix CFF2 stack allocation.
+
+	* src/cff/cffparse.c (cff_parser_init) add 1 for operator.
+
+2017-03-16  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgxvar.c (tt_done_blend): Free `vvar_table'.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=883
+
+2017-03-15  Werner Lemberg  <wl@gnu.org>
+
+	Remove clang compiler warnings (#50548).
+
+	* include/freetype/internal/tttypes.h (TT_FaceRec): Make
+	`var_postscript_prefix_len' unsigned.
+
+	* src/autofit/afwarp.c (af_warper_compute_line_best): Remove
+	redundant assignment.
+
+	* src/cff/cffload.c (cff_subfont_load): Add casts.
+
+	* src/cff/cffparse.c (cff_parse_blend): Remove redundant assignment.
+
+	* src/sfnt/sfdriver.c (fmix32, murmur_hash_3_128): Add `static'
+	keyword.
+	Add casts.
+	(fixed2float): Add cast.
+	(sfnt_get_var_ps_name): Make `p' always initialized.
+	Add casts.
+
+	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Add casts.
+
+2017-03-15  Werner Lemberg  <wl@gnu.org>
+
+	[ftfuzzer] Limit number of tested faces and instances.
+
+	This is inspired by the discussion in and analysis of
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=859
+
+	* src/tools/ftfuzzer/ftfuzzer.cc (LLVMFuzzerTestOneInput): Use only
+	up to 20 face indices.
+	Use only up to 20 instance indices.
+
+2017-03-15  Werner Lemberg  <wl@gnu.org>
+
+	* src/tools/ftfuzzer/ftfuzzer.cc: Improve readability; formatting.
+
+2017-03-14  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Implement PS names for font instances [3/3].
+
+	Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
+
+	* include/freetype/internal/tttypes.h (TT_FaceRec): New fields
+	`var_postscript_prefix' and `var_postscript_prefix_len'.
+
+	* src/sfnt/sfdriver.c: Include FT_TRUETYPE_IDS_H.
+	(sfnt_is_alphanumeric): New wrapperfunction for `ft_isalnum'.
+	(get_win_string, get_apple_string): Remove `const' from return
+	value.
+	(MAX_VALUE_DESCRIPTOR_LEN, MAX_PS_NAME_LEN): New macros.
+	(hexdigits): New array.
+	(sfnt_get_var_ps_name): New function, implementing Adobe TechNote
+	5902 to construct a PS name for a variation font instance.
+	(sfnt_get_ps_name): Call `sfnt_get_var_ps_name' for font instances.
+
+	* src/sfnt/sfobjs.c (sfnt_done_face): Updated.
+
+	* src/truetype/ttgxvar.c (tt_set_mm_blend): Reset
+	`face->postscript_name' to trigger recalculation for new instance
+	parameters.
+
+2017-03-14  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Implement PS names for font instances [2/3].
+
+	* src/sfnt/sfdriver.c (fix2float) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
+	New function to find the shortest representation of a 16.16
+	fractional number.
+
+2017-03-14  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Implement PS names for font instances [1/3].
+
+	Add 128bit MurmurHash 3 function.
+
+	Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT.
+
+	* src/sfnt/sfdriver.c (ROTL32): New macro.
+	(fmix32, murmur_hash_3_128): New functions.
+
+2017-03-13  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Ignore invalid MVAR tags.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=838
+
+	* src/truetype/ttgxvar.c (ft_var_load_mvar): Ignore value and emit
+	warning for invalid tags.
+	(tt_apply_mvar): Ignore invalid tags.
+
+2017-03-12  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Store and use design coordinates also.
+
+	* include/freetype/internal/services/svmm.h (FT_Get_Var_Blend_Func):
+	Add `normalizedcoords' argument.
+
+	* src/truetype/ttgxvar.h (GX_BlendRec): Add `coords' field to store
+	the design coordinates of the current instance.
+	Updated.
+
+	* src/truetype/ttgxvar.c (TT_Set_MM_Blend): Move functionality to...
+	(tt_set_mm_blend): ... New function.
+	Convert data in `normalizedcoords' array to `coords' array on
+	demand.
+	(TT_Set_Var_Design): Store argument data in `coords' array.
+	(TT_Get_Var_Design): Get data from `coords' array.
+	(tt_get_var_blend): Updated.
+	(tt_done_blend): Updated.
+
+	* src/cff/cffload.c, src/cff/cffload.h (cff_get_var_blend): Updated.
+
+	* src/cff/cf2ft.c (cf2_getNormalizedVector): Updated.
+
+	* src/cff/cffobjs.c (cff_face_init): Updated.
+
+2017-03-12  Werner Lemberg  <wl@gnu.org>
+
+	src/truetype/ttgxvar.[ch]: s/avar_checked/avar_loaded/.
+
+2017-03-08  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Another fix for buggy variation fonts.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=759
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
+	instances to zero for `CFF' fonts table, ensure that there is no
+	`CFF2' present also (which gets priority).
+
+2017-03-07  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Improve handling for buggy variation fonts.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=738
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): While setting number of
+	instances to zero for `CFF' fonts table, ensure that there is no
+	`glyf' table present also (which gets priority).
+
+2017-03-06  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt, truetype] Always provide default instance.
+
+	As documented in the OpenType specification, an entry for the
+	default instance may be omitted in the named instance table.  In
+	particular this means that even if there is no named instance table
+	in the font we actually do have a named instance, namely the default
+	instance.
+
+	For consistency, we always want the default instance in our list of
+	named instances.  If it is missing, we try to synthesize it.
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): Check whether the default
+	instance is in the table of named instances.  Otherwise adjust
+	number of instances.
+
+	* src/truetype/ttgxvar.c: Include FT_TRUETYPE_IDS_H.
+	(TT_Get_MM_Var): Use `face->root.style_flags' as the number of named
+	instances.
+	Sythesize a named instance entry if necessary.
+	(tt_done_blend): Free `normalized_stylecoords'.
+
+2017-03-05  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Remove redundant code.
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): Remove second test for
+	`num_instances', which will always succeed.
+
+2017-03-04  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Add `get_name_id' service.
+
+	* include/freetype/internal/sfnt.h (TT_Get_Name_ID_Func): New
+	typedef.
+	(SFNT_Interface): Add `get_name_id' field.
+	(FT_DEFINE_SFNT_INTERFACE): Updated.
+
+	* src/sfnt/sfdriver.c (search_name_id): Rename to...
+	(sfnt_get_name_id): ... this.
+	(sfnt_get_ps_name, sfnt_interface): Updated.
+
+2017-03-04  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Make `TT_Set_MM_Blend' set named instance index.
+
+	* src/truetype/ttgxvar.h (GX_Blend): New array
+	`normalized_stylecoords'.
+
+	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Allocate and fill
+	`normalized_stylecoords'.
+	(TT_Set_MM_Blend): Check instance tuple and adjust `face_index'
+	accordingly.
+
+2017-03-02  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Split off designer/normalized conversion routines.
+
+	* src/truetype/ttgxvar.c (TT_Set_Var_Design): Split off conversion
+	code designer->normalized coordinates to...
+	(ft_var_to_normalized): ... New function.
+	(TT_Get_Var_Design): Split off conversion code normalized->designer
+	coordinates to...
+	(ft_var_to_design): ... New function.
+
+2017-02-28  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Further generalize `sfnt_get_ps_name'; report invalid data.
+
+	* src/sfnt/sfdriver.c (sfnt_ps_map): New array.
+	(sfnt_is_postscript): New function.
+	(char_type_func): New typedef.
+	(get_win_string, get_apple_string): Add argument to specify
+	character checking function.
+	Add argument whether argument checking failures should be reported.
+	Update callers.
+	(search_name_id): Fix return value.
+
+2017-02-23  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Split off another bit of `sfnt_get_ps_name'.
+
+	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
+	functionality into...
+	(search_name_id): ... New function.
+
+2017-02-23  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Modularize `sfnt_get_ps_name'.
+
+	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Split off some
+	functionality into...
+	(IS_WIN, IS_APPLE): ... New macros.
+	(get_win_string, get_apple_string): ... New functions.
+
+2017-02-23  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Minor improvement.
+
+	* src/truetype/ttgload.c (TT_Process_Simple_Glyph,
+	load_truetype_glyph): Remove unnecessary tests.
+
+2017-02-23  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/internal/tttypes.h (TT_Face): s/isCFF2/is_cff2/.
+
+	For orthogonality with other structure field names.
+
+	Update all users.
+
+2017-02-22  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/smooth/ftgrays.c (gray_hline): Improve code.
+
+2017-02-20  Dominik Röttsches  <drott@google.com>
+
+	Fix some `ttnameid.h' entries (#50313).
+
+	* include/freetype/ttnameid.h:
+	s/TT_MS_LANGID_SPANISH_INTERNATIONAL_SORT/TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT/,
+	s/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIA/TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN/.
+
+2017-02-20  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Finish support for `random' operator.
+
+	* src/cff/cfftypes.h (CFF_SubFontRec): Add `random' field.
+
+	* src/cff/cffobjs.c: Updated.
+	(cff_driver_init): Initialize random seed value.
+
+	* src/cff/cffload.c (cff_random): New function.
+	(cff_subfont_load): Add `face' argument.
+	Update all callers.
+	Initialize random number generator with a proper seed value.
+	(cff_font_load): Add `face' argument.
+	Update all callers.
+
+	* src/cff/cffload.h: Updated.
+
+	* src/cff/cf2intrp.c (CF2_FIXME): Removed.
+	(cf2_interpT2CharString) <cf2_escRANDOM>: Implement opcode.
+
+	* src/cff/cffgload.c (cff_decoder_parse_charstrings): Don't
+	initialize random seed value.
+	<cff_op_random>: Use new random seed framework.
+
+2017-02-20  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Sanitize `initialRandomSeed'.
+
+	* src/cff/cffload.c (cff_load_private_dict): Make
+	`initial_random_seed' value always positive.
+
+2017-02-20  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Introduce `random-seed' property (2/2).
+
+	* src/base/ftobjs.c: Include `FT_CFF_DRIVER_H'.
+	(open_face): Initialize `face->internal->random_seed'.
+	(FT_Face_Properties): Handle `FT_PARAM_TAG_RANDOM_SEED'.
+
+	* src/cff/cffdrivr.c (cff_property_set): Handle `random-seed'
+	property.
+
+2017-02-20  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Introduce `random-seed' property (1/2).
+
+	We need this for support of the `random' operator.
+
+	* include/freetype/ftcffdrv.h (FT_PARAM_TAG_RANDOM_SEED): New macro.
+
+	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
+	field `random_seed'.
+
+	* src/cff/cffobjs.h (CFF_DriverRec): New field `random_seed'.
+
+2017-02-17  Werner Lemberg  <wl@gnu.org>
+
+	Remove clang warnings.
+
+	* src/autofit/aflatin.c (af_latin_sort_blue): Add missing `static'
+	keyword.
+
+	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
+	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
+	Initialize some variables.
+
+2017-02-16  Nikolaus Waxweiler  <madigens@gmail.com>
+	    Werner Lemberg  <wl@gnu.org>
+
+	Add face property for stem darkening.
+
+	* include/freetype/ftautoh.h (FT_PARAM_TAG_STEM_DARKENING): New
+	macro.
+
+	* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add
+	`no_stem_darkening' field.
+
+	* src/autofit/afloader.c (af_loader_load_glyph),
+	src/autofit/afmodule.c (af_property_set): Updated.
+
+	* src/base/ftobjs.c: Include FT_AUTOHINTER_H.
+	(ft_open_face_internal): Updated.
+	(FT_Face_Properties): Handle FT_PARAM_TAG_STEM_DARKENING.
+
+	* src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Updated.
+
+	* src/cff/cffdrivr.c (cff_property_set): Updated.
+
+2017-02-16  Nikolaus Waxweiler  <madigens@gmail.com>
+	    Werner Lemberg  <wl@gnu.org>
+
+	Add face property for LCD filter weights.
+
+	* include/freetype/ftlcdfil.h (FT_PARAM_TAG_LCD_FILTER_WEIGHTS,
+	FT_LCD_FILTER_FIVE_TAPS): New macros.
+	(FT_LcdFiveTapFilter): New typedef.
+
+	* include/freetype/ftobjs.h (FT_Face_InternalRec)
+	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Add `lcd_weights' field.
+	(FT_Bitmap_LcdFilterFunc): Change third argument to weights array.
+	(ft_lcd_filter_fir): New prototype.
+	(FT_LibraryRec): Updated.
+
+	* src/base/ftlcdfil.c (_ft_lcd_filter_fir): Renamed to...
+	(ft_lcd_filter_fir): ... this base function.
+	Updated.
+	(_ft_lcd_filter_legacy): Updated.
+	(FT_Library_SetLcdFilterWeights, FT_Library_SetLcdFilter): Updated.
+
+	* src/base/ftobjs.c (ft_open_face_internal): Updated.
+	(FT_Face_Properties): Handle FT_PARAM_TAG_LCD_FILTER_WEIGHTS.
+
+	* src/smooth/ftsmooth.c (ft_smooth_render_generic)
+	[FT_CONFIG_OPTION_SUBPIXEL_RENDERING]: Handle LCD weights from
+	`FT_Face_Internal'.
+
+2017-02-14  Nikolaus Waxweiler  <madigens@gmail.com>
+	    Werner Lemberg  <wl@gnu.org>
+
+	Add new function `FT_Face_Properties'.
+
+	This commit provides the framework, to be filled with something
+	useful in the next commits.
+
+	* include/freetype/freetype.h (FT_Face_Properties): Declare.
+
+	* src/base/ftobjs.c (FT_Face_Properties): New function.
+
+2017-02-13  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Prevent overlapping blue zones.
+
+	Problem reported as
+
+	  https://github.com/google/fonts/issues/632
+
+	The font in question (Nunito) has values 705 and 713 for the
+	reference and overshoot values, respectively, of the first blue
+	zone.  Blue zone 2, however, has value 710 for both the reference
+	and overshoot.  At 12ppem, reference and overshoot of blue zone 0
+	becomes 8px, while blue zone 2 becomes 9px.
+
+	A peculiarity of this font is that the tops of isolated vertical
+	stems like `N' have a slight overshoot also.  The auto-hinter tries
+	to find the nearest blue zone using the *original* coordinates.  For
+	vertical stems, this is value 713.  For normal horizontal tops like
+	in character `E', this is value 710.  Since value 713 is mapped to
+	8px but value 710 to 9px, `N' and similar characters are one pixel
+	higher than `E', which looks very bad.
+
+	This commit sanitizes blue zones to avoid such a behaviour.
+
+	* src/autofit/aflatin.c (af_latin_sort_blue): New function.
+	(af_latin_metrics_init_blues): Sort blue values and remove overlaps.
+
+2017-02-12  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/smooth/ftgrays.c (gray_sweep): Improve code.
+
+2017-02-06  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Implement `VVAR' table support.
+
+	* src/truetype/ttgxvar.h (GX_HVarTable): Renamed to...
+	(GX_HVVarTable): ...This.
+	(GX_Blend): Add fields for `VVAR' table handling.
+	Other minor updates.
+
+	* src/truetype/ttgxvar.c (ft_var_load_hvar): Renamed to...
+	(ft_var_load_hvvar): ...This.
+	Handle VVAR loading also (controlled by an additional parameter).
+	(tt_hadvance_adjust): Renamed to...
+	(tt_hvadvance_adjust): ...This.
+	Handle application of advance height also (controlled by an
+	additional parameter).
+	(tt_hadvance_adjust, tt_vadvance_adjust): Wrappers for
+	`tt_hvadvance_adjust'.
+
+	* src/truetype/ttdriver.c (tt_service_metrics_variations): Updated.
+
+2017-02-05  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Use better blue zone characters for lowercase latin.
+
+	The number of lowercase characters for computing the top flat blue
+	zone value was too small (in most cases only `x' and `z').  If one
+	of the two characters has a large serif, say, it can happen that
+	FreeType must select between two different values, having a 50%
+	chance to use the wrong one.  As a result, rendering at larger PPEM
+	values could yield uneven lowercase glyph heights.
+
+	Problem reported by Christoph Koeberlin <christoph@koe.berlin>.
+
+	* src/autofit/afblue.dat (AF_BLUE_STRING_LATIN_SMALL): Replaced
+	with...
+	(AF_BLUE_STRING_LATIN_SMALL_TOP, AF_BLUE_STRING_LATIN_SMALL_BOTTOM):
+	... New, extended sets.
+	(AF_BLUE_STRINGSET_LATN): Updated.
+
+	* src/autofit/afblue.c, scr/autofit/afblue.h: Regenerated.
+
+2017-02-04  Werner Lemberg  <wl@gnu.org>
+
+	Make `freetype-config' a wrapper of `pkg-config' if possible.
+
+	Based on ideas taken from
+
+	  http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-multilib.patch
+	  http://pkgs.fedoraproject.org/cgit/rpms/freetype.git/tree/freetype-2.5.3-freetype-config-prefix.patch
+
+	* builds/unix/freetype-config.in: Rewritten.  Use `pkg-config' to
+	set output variables if program is available.
+
+	* docs/CHANGES, docs/freetype-config.1: Updated.
+
+2017-02-04  Werner Lemberg  <wl@gnu.org>
+
+	* builds/unix/unix-def.in (freetype-config): Fix permissions.
+
+2017-02-03  Werner Lemberg  <wl@gnu.org>
+
+	* src/autofit/afglobal.c (af_face_globals_free): Erase useless code.
+
+2017-02-03  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/ftgasp.h (FT_GASP_SYMMETRIC_GRIDFIT): Fix value.
+
+	Reported by Behdad.
+
+2017-02-02  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix MVAR post-action handling.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=509
+
+	* src/truetype/ttobjs.c (tt_size_reset): Do nothing for CFF2.  This
+	is important to make `tt_size_reset_iterator' (called in
+	`tt_apply_mvar') always work.
+
+2017-02-02  Werner Lemberg  <wl@gnu.org>
+
+	Make compilation with FT_CONFIG_OPTION_PIC work again.
+
+	All code committed here is guarded with `FT_CONFIG_OPTION_PIC'.
+
+	* include/freetype/internal/services/svmetric.h
+	(FT_DEFINE_SERVICE_METRICSVARIATIONSREC): Remove trailing semicolon.
+
+	* src/autofit/aflatin.c (af_latin_hints_compute_edges,
+	af_latin_hint_edges): Provide `globals' variable.
+
+	* src/autofit/afloader.c (af_loader_load_glyph): Remove shadowing
+	variable.
+
+	* src/autofit/afmodule.c (AF_SCRIPT_CLASSES_GET,
+	AF_STYLE_CLASSES_GET): Redefine.
+
+	* src/autofit/aftypes.h (AF_DEFINE_WRITING_SYSTEM_CLASS): Fix typo.
+
+	* src/cff/cffparse.c (CFF_FIELD_BLEND): Provide it.
+
+	* src/cff/cffpic.h (CffModulePIC): Fix typo.
+
+2017-01-31  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	* src/smooth/ftgrays.c (gray_render_scanline): Improve code.
+
+2017-01-31  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Provide metrics variation service interface (#50196).
+
+	Only now I've got an OTF with an HVAR table for testing...
+
+	The code in `ftmm.c' uses `FT_FACE_LOOKUP_SERVICE' to get the
+	metrics variations interface.  However, this didn't work with
+	`FT_FACE_FIND_GLOBAL_SERVICE' used in `sfnt_init_face'.
+
+	* src/cff/cffdrivr.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
+	(cff_hadvance_adjust, cff_metrics_adjust): Wrapper functions for
+	metric service functions from the `truetype' module.
+	(cff_service_metrics_variations): New service.
+	(cff_services): Updated.
+
+	* src/cff/cffpic.h (CFF_SERVICE_METRICS_VAR_GET): New macro.
+	[FT_CONFIG_OPTION_PIC]: Synchronize code.
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): Replace call to
+	FT_FACE_FIND_GLOBAL_SERVICE with `ft_module_get_service' to always
+	load the service from the `truetype' module.
+
+2017-01-31  Werner Lemberg  <wl@gnu.org>
+
+	Add framework to support services with 9 functions.
+
+	* include/freetype/internal/ftserv.h (FT_DEFINE_SERVICEDESCREC9):
+	New macro.
+
+2017-01-31  Werner Lemberg  <wl@gnu.org>
+
+	[base] Fix error handing in MM functions.
+
+	* src/base/ftmm.c (FT_Set_Var_Design_Coordinates,
+	FT_Set_MM_Blend_Coordinates, FT_Set_Var_Blend_Coordinates):
+	Implement it.
+
+2017-01-31  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Fix sanity check for `gvar' table (#50184).
+
+	* src/truetype/ttgxvar.c (ft_var_load_gvar): There might be missing
+	variation data for some glyphs.
+
+2017-01-31  Werner Lemberg  <wl@gnu.org>
+
+	[autofit] Avoid uninitialized jumps (#50191).
+
+	* src/autofit/afcjk.c (af_cjk_metrics_check_digits),
+	src/autofit/aflatin.c (af_latin_metrics_check_digits): Initialize
+	`advance'.
+
+2017-01-27  Werner Lemberg  <wl@gnu.org>
+
+	s/GB2312/PRC/.
+
+	* include/freetype/freetype.h (FT_ENCODING_PRC): New enum value.
+	(FT_ENCODING_GB2312): Deprecated.
+
+	* include/freetype/ttnameid.h (TT_MS_ID_PRC): New macro.
+	(TT_MS_ID_GB2312): Deprecated.
+
+	* src/sfnt/sfobjs.c (sfnt_find_encoding): Updated.
+
+	* docs/CHANGES: Updated.
+
+2017-01-26  Werner Lemberg  <wl@gnu.org>
+
+	[base] Add `FT_Get_Sfnt_LangTag' function.
+
+	* include/freetype/ftsnames.h (FT_SfntLangTag): New structure.
+	(FT_Get_Sfnt_LangTag): New declaration.
+
+	* src/base/ftsnames.c (FT_Get_Sfnt_LangTag): New function.
+
+	* docs/CHANGES: Updated.
+
+2017-01-26  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Support `name' table format 1.
+
+	* include/freetype/internal/tttypes.h (TT_LangTagRec): New
+	structure.
+	(TT_NameTableRec): Add fields `numLangTagRecords' and `langTags'.
+
+	* src/sfnt/ttload.c (tt_face_load_name): Add support for language
+	tags.
+	Reduce array size of name strings in case of invalid entries.
+	(tt_face_free_name): Updated.
+
+	* docs/CHANGES: Updated.
+
+2017-01-25  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] s/TT_NameEntry/TT_Name/.
+
+	* include/freetype/internal/tttypes.h (TT_NameEntryRec): Renamed
+	to...
+	(TT_NameRec): This.
+	(TT_NameTableRec): Updated.
+
+	* src/base/ftsnames.c (FT_Get_Sfnt_Name): Updated.
+
+	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Updated.
+
+	* src/sfnt/sfobjs.c (tt_name_entry_ascii_from_utf16,
+	tt_name_entry_ascii_from_other): Renamed to...
+	(tt_name_ascii_from_utf16, tt_name_entry_ascii_from_other): This,
+	respectively.
+	(TT_NameEntry_ConvertFunc): Renamed to...
+	(TT_Name_ConvertFunc): This.
+	(tt_face_get_name): Updated.
+
+	* src/sfnt/ttload.c (tt_face_load_name, tt_face_free_name):
+	Updated.
+
+2017-01-24  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Fix Postscript name service for symbol fonts.
+
+	* src/sfnt/sfdriver.c (sfnt_get_ps_name): Accept PID/EID=3/0
+	entries also.
+
+2017-01-24  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] For OpenType 1.7: s/preferred/typographic/ (sub)family.
+
+	* include/freetype/ftsnames.h
+	(FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY,
+	FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY): New macros.
+	(FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY,
+	FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY): Deprecated.
+
+	* include/freetype/ttnameid.h (TT_NAME_ID_TYPOGRAPHIC_FAMILY,
+	TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY): New macros.
+	(TT_NAME_ID_PREFERRED_FAMILY, TT_NAME_ID_PREFERRED_SUBFAMILY):
+	Deprecated.
+
+	* src/sfnt/sfobjs.c (sfnt_load_face): Updated.
+
+	* docs/CHANGES: Updated.
+
+2017-01-23  Werner Lemberg  <wl@gnu.org>
+
+	[base] Add `FT_Set_Default_Properties' (#49187).
+
+	* include/freetype/ftmodapi.h: Add declaration.
+
+	* src/base/ftinit.c (ft_set_default_properties): Renamed to...
+	(FT_Set_Default_Properties): ... this.
+	(FT_Init_FreeType): Updated.
+
+	* docs/CHANGES: Updated.
+
+2017-01-23  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Minor updates for OpenType 1.8.1.
+
+	* src/truetype/ttgxvar.h (GX_MVarTable): `axisCount' has been
+	removed from the specification; it is now reserved.
+
+	* src/truetype/ttgxvar.c (ft_var_load_mvar): Updated.
+	(GX_FVar_Head): Remove `countSizePairs'; the corresponding data
+	field in the `MVAR' table is now reserved.
+	(fvar_fields): Updated.
+
+2017-01-23  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Avoid segfault for invalid variation data.
+
+	* src/truetype/ttgxvar.c (ft_var_load_item_variation_store): Assure
+	`itemCount' is not zero.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=441
+
+2017-01-20  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttinterp.c (TT_RunIns): Adjust loop detector limits.
+
+2017-01-17  Werner Lemberg  <wl@gnu.org>
+
+	* include/freetype/ttnameid.h: Updated to OpenType 1.8.1.
+
+	(TT_APPLE_ID_FULL_UNICODE): New macro.
+
+	(TT_MS_LANGID_BOSNIAN_BOSNIA_HERZ_CYRILLIC,
+	TT_MS_LANGID_UPPER_SORBIAN_GERMANY,
+	TT_MS_LANGID_LOWER_SORBIAN_GERMANY, TT_MS_LANGID_IRISH_IRELAND,
+	TT_MS_LANGID_INUKTITUT_CANADA_LATIN, TT_MS_LANGID_BASHKIR_RUSSIA,
+	TT_MS_LANGID_LUXEMBOURGISH_LUXEMBOURG,
+	TT_MS_LANGID_GREENLANDIC_GREENLAND, TT_MS_LANGID_MAPUDUNGUN_CHILE,
+	TT_MS_LANGID_MOHAWK_MOHAWK, TT_MS_LANGID_BRETON_FRANCE,
+	TT_MS_LANGID_OCCITAN_FRANCE, TT_MS_LANGID_CORSICAN_FRANCE,
+	TT_MS_LANGID_ALSATIAN_FRANCE, TT_MS_LANGID_YAKUT_RUSSIA,
+	TT_MS_LANGID_KICHE_GUATEMALA, TT_MS_LANGID_KINYARWANDA_RWANDA,
+	TT_MS_LANGID_WOLOF_SENEGAL, TT_MS_LANGID_DARI_AFGHANISTAN): New
+	macros.
+
+	(TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC): Fix value.
+
+	(TT_MS_LANGID_GERMAN_LIECHTENSTEIN, TT_MS_LANGID_CATALAN_CATALAN,
+	TT_MS_LANGID_CHINESE_MACAO, TT_MS_LANGID_SPANISH_SPAIN_MODERN_SORT,
+	TT_MS_LANGID_KOREAN_KOREA, TT_MS_LANGID_ROMANSH_SWITZERLAND,
+	TT_MS_LANGID_SLOVENIAN_SLOVENIA, TT_MS_LANGID_BASQUE_BASQUE,
+	TT_MS_LANGID_SETSWANA_SOUTH_AFRICA,
+	TT_MS_LANGID_ISIXHOSA_SOUTH_AFRICA,
+	TT_MS_LANGID_ISIZULU_SOUTH_AFRICA, TT_MS_LANGID_KAZAKH_KAZAKHSTAN,
+	TT_MS_LANGID_KYRGYZ_KYRGYZSTAN, TT_MS_LANGID_KISWAHILI_KENYA,
+	TT_MS_LANGID_TATAR_RUSSIA, TT_MS_LANGID_ODIA_INDIA,
+	TT_MS_LANGID_MONGOLIAN_PRC, TT_MS_LANGID_TIBETAN_PRC,
+	TT_MS_LANGID_WELSH_UNITED_KINGDOM, TT_MS_LANGID_GALICIAN_GALICIAN,
+	TT_MS_LANGID_SINHALA_SRI_LANKA, TT_MS_LANGID_TAMAZIGHT_ALGERIA,
+	TT_MS_LANGID_SESOTHO_SA_LEBOA_SOUTH_AFRICA, TT_MS_LANGID_YI_PRC,
+	TT_MS_LANGID_UIGHUR_PRC): New aliases.
+
+	Remove commented out code.
+
+	(TT_NAME_ID_LIGHT_BACKGROUND, TT_NAME_ID_DARK_BACKGROUND,
+	TT_NAME_ID_VARIATIONS_PREFIX): New macros.
+
+	(HAVE_LIMIT_ON_IDENTS): Remove macro (which was useless since many
+	years), use guarded long macros by default and define short versions
+	as aliases for the long ones.
+
+2017-01-15  Werner Lemberg  <wl@gnu.org>
+
+	* src/truetype/ttgxvar.c (tt_apply_var): Handle underline parameters
+	also.
+
+2017-01-11  Werner Lemberg  <wl@gnu.org>
+
+	* src/base/ftobjs.c (ft_open_face_internal): Improve tracing.
+
+2017-01-11  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Actually use metrics variation service.
+
+	* src/base/ftmm.c: Include FT_SERVICE_METRICS_VARIATIONS_H.
+	(ft_face_get_mvar_service): New auxiliary function to look up
+	metrics variation service.
+	(FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
+	FT_Set_Var_Blend_Coordinates): Call metrics variation service.
+
+	* src/truetype/ttobjs.c (tt_face_init): Use metrics variations for
+	named instances.
+
+2017-01-11  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Provide metrics variation service.
+
+	* include/freetype/internal/services/svmetric.h
+	(FT_Metrics_Adjust_Func): Reduce number of necessary parameters.
+
+	* src/truetype/ttgxvar.c: Include FT_LIST_H.
+	(tt_size_reset_iterator): New auxiliary function for...
+	(tt_apply_var): New function.
+
+	* src/truetype/ttgxvar.h: Updated.
+
+	* src/truetype/ttdriver.c (tt_service_metrics_variations): Add
+	`tt_apply_mvar'.
+
+	* include/freetype/internal/ftserv.h (FT_ServiceCache): Add metrics
+	variation service.
+
+2017-01-11  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Parse `MVAR' table.
+
+	* src/truetype/ttgxvar.h (MVAR_TAG_XXX): New macros for MVAR tags.
+	(GX_Value, GX_MVarTable): New structures.
+	(GX_Blend): Add it.
+
+	* src/truetype/ttgxvar.c (GX_VALUE_SIZE, GX_VALUE_CASE,
+	GX_GASP_CASE): New macros.
+	(ft_var_get_value_pointer): New auxiliary function to get a pointer
+	to a value from various SFNT tables already stored in `TT_Face'.
+	(ft_var_load_mvar): New function.
+	(TT_Get_MM_Var): Call it.
+	(tt_done_blend): Updated.
+
+2017-01-11  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] More preparations for MVAR support.
+
+	* src/truetype/ttobjs.c (tt_size_reset): Add argument to make
+	function only recompute ascender, descender, and height.
+
+	* src/truetype/ttobjs.h: Updated.
+
+	* src/truetype/ttdriver.c (tt_size_select, tt_size_request):
+	Updated.
+
+2017-01-09  Werner Lemberg  <wl@gnu.org>
+
+	[pcf] Disable long family names by default.
+
+	* include/freetype/config/ftoption.h
+	(PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): Comment out.
+
+2017-01-09  Werner Lemberg  <wl@gnu.org>
+
+	[pcf] Make long family names configurable.
+
+	The change from 2016-09-29 was too radical (except for people using
+	the openSuSE GNU/Linux distribution).  To ameliorate the situation,
+	PCF_CONFIG_OPTION_LONG_FAMILY_NAMES gets introduced which controls
+	the feature; if set, a new PCF property option
+	`no-long-family-names' can be used to switch this feature off.
+
+	* include/freetype/config/ftoption.h, devel/ftoption.h
+	(PCF_CONFIG_OPTION_LONG_FAMILY_NAMES): New option.
+
+	* include/freetype/ftpcfdrv.h: New header file (only containing
+	comments currently, used for building the documentation).
+
+	* include/freetype/config/ftheader.h (FT_PCF_DRIVER_H): New macro.
+
+	* src/pcf/pcf.h (PCF_Driver): Add `no_long_family_names' field.
+
+	* src/pcf/pcfdrivr.c: Include FT_SERVICE_PROPERTIES_H and
+	FT_PCF_DRIVER_H.
+	(pcf_property_set, pcf_property_get): New functions.
+	(pcf_service_properties): New service.
+	(pcf_services): Updated.
+	(pcf_driver_init) [PCF_CONFIG_OPTION_LONG_FAMILY_NAMES]: Handle
+	`no_long_family_names'.
+
+	* src/pcf/pcfread.c (pcf_load_font): Handle `no_long_family_names'
+	and PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
+
+	* docs/CHANGES: Updated.
+
+2017-01-09  Werner Lemberg  <wl@gnu.org>
+
+	[pcf] Introduce a driver structure.
+
+	To be filled later on with something useful.
+
+	* src/pcf/pcf.h (PCF_Driver): New structure.
+
+	* src/pcf/pcfdrivr.c (pcf_driver_init, pcf_driver_done): New dummy
+	functions.
+	(pcf_driver_class): Updated.
+
+2017-01-08  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Again some GX code shuffling.
+
+	We need this later on for MVAR also.
+
+	* src/truetype/ttgxvar.c (tt_hadvance_adjust): Split off computing
+	an item store variation delta into...
+	(ft_var_get_item_delta): ...new function.
+
+2017-01-08  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Adjust font variation flags for MVAR.
+
+	* include/freetype/internal/tttypes.h (TT_FACE_FLAG_VAR_XXX):
+	Remove all flags related to MVAR; replace it with...
+	(TT_FACE_FLAG_VAR_MVAR): ...this new macro.
+	(TT_Face): Remove `mvar_support' field (which was still unused).
+
+2017-01-06  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] More GX code shuffling.
+
+	We need this later on for MVAR also.
+
+	* src/truetype/ttgxvar.c (tt_done_blend): Split off handling of item
+	variation store into...
+	(ft_var_done_item_variation_store): ...new function.
+
+2017-01-06  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] More generalization of GX stuff.
+
+	We need this later on for MVAR also.
+
+	* src/truetype/ttgxvar.c (ft_var_load_delta_set_index_mapping): Add
+	parameters for delta-set index mapping and item variation store.
+	(ft_var_load_item_variation_store): Add parameter for item variation
+	store.
+	s/hvarData/varData/.
+	Move allocation of `hvar_table' to...
+	(ft_var_load_hvar): ...this function.
+	Updated.
+
+2017-01-06  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Some GX structure renames for generalization.
+
+	We need this later on for MVAR also.
+
+	* src/truetype/ttgxvar.h (GX_HVarData): Renamed to...
+	(GX_ItemVarData): ...this.
+	(GX_HVarRegion): Renamed to...
+	(GX_VarRegion): ...this.
+	(GX_HVStore): Renamed to...
+	(GX_ItemVarStore): ...this.
+	(GX_WidthMap): Renamed to...
+	(GX_DeltaSetIdxMap): ...this.
+
+	(GX_HVarTable): Updated.
+
+	* src/truetype/ttgxvar.c: Updated.
+
+2017-01-06  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Code shuffling.
+
+	* src/truetype/ttgxvar.c (ft_var_load_hvar): Split off loading of
+	item variation store and delta set index mapping into...
+	(ft_var_load_item_variation_store,
+	ft_var_load_delta_set_index_mapping): ...new functions.
+
+2017-01-06  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Add HVAR access without advance width map.
+
+	* src/truetype/ttgxvar.c (ft_var_load_hvar): Handle case where
+	`offsetToAdvanceWidthMapping' is zero.
+	(tt_hadvance_adjust): Implement direct deltaSet access by glyph
+	index.
+
+2017-01-06  Werner Lemberg  <wl@gnu.org>
+
+	[pcf] Revise driver.
+
+	This commit improves tracing and handling of malformed fonts.  In
+	particular, the changes to `pcf_get_properties' fix
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=379
+
+	* src/pcf/pcfread.c (tableNames): Use long names for better
+	readability.
+	(pcf_read_TOC): Allow at most 9 tables.
+	(pcf_get_properties): Allow at most 256 properties.
+	Limit strings array length to 256 * (65536 + 1) bytes.
+	Better tracing.
+	(pcf_get_metric): Trace metric data.
+	(pcf_get_metrics): Allow at most 65536 metrics.
+	Fix comparison of `metrics->ascent' and `metrics->descent' to avoid
+	potential overflow.
+	Better tracing.
+	(pcf_get_bitmaps): Allow at most 65536 bitmaps.
+	Better tracing.
+	(pcf_get_encodings, pcf_get_accel): Better tracing.
+
+	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Don't trace `format' details.
+	These are now shown by `pcf_get_bitmaps'.
+
+2017-01-04  Werner Lemberg  <wl@gnu.org>
+
+	* src/pcf/pcfdrivr.c (PCF_Face_Init): Trace compression format.
+
+2017-01-04  Werner Lemberg  <wl@gnu.org>
+
+	[cff] More consistency checks for pure CFFs.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=378
+
+	* src/cff/cffload.c (cff_font_load): Check element number and size
+	of Name and Top DICT indices.
+
+2017-01-04  Werner Lemberg  <wl@gnu.org>
+
+	[cff, truetype] Minor tracing improvement.
+
+	* src/cff/cffobjs.c (cff_face_init), src/truetype/ttobjs.c
+	(tt_face_init): Indent first tracing message from SFNT driver.
+
+2017-01-03  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Various minor fixes.
+
+	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Check instruction
+	size only if we do native hinting.
+	(TT_Load_Glyph): Trace returned error code.
+
+	* src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Trace
+	returned error code.
+	(tt_size_ready_bytecode): Don't run `prep' table if `fpgm' table is
+	invalid.
+
+2017-01-03  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Don't fail if PCLT, EBLC (and similar tables) are invalid.
+
+	These tables are optional.
+
+	* src/sfnt/sfobjs.c (sfnt_load_face): Implement it.
+
+2017-01-03  Werner Lemberg  <wl@gnu.org>
+
+	* src/cff/cffparse.c (cff_parse_num): Simplify.
+
+2017-01-03  Werner Lemberg  <wl@gnu.org>
+
+	Various fixes for clang's undefined behaviour sanitizer.
+
+	* src/cff/cffload.c (FT_fdot14ToFixed): Fix casting.
+	(cff_blend_doBlend): Don't left-shift negative numbers.
+	Handle 5-byte numbers byte by byte to avoid alignment issues.
+
+	* src/cff/cffparse.c (cff_parse_num): Handle 5-byte numbers byte by
+	byte to avoid alignment issues.
+
+	* src/cid/cidload (cid_read_subrs): Do nothing if we don't have any
+	subrs.
+
+	* src/psaux/t1decode.c (t1_decode_parse_charstring): Fix tracing.
+
+	* src/tools/glnames.py (main): Put `DEFINE_PSTABLES' guard around
+	definition of `ft_get_adobe_glyph_index'.
+
+	* src/psnames/pstables.h: Regenerated.
+
+	* src/psnames/psmodule.c: Include `pstables.h' twice to get both
+	declaration and definition.
+
+	* src/truetype/ttgxvar.c (FT_fdot14ToFixed, FT_intToFixed): Fix
+	casting.
+
+2017-01-01  Werner Lemberg  <wl@gnu.org>
+
+	[cff] Handle multiple `blend' operators in a row correctly.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=368
+
+	* src/cff/cffload.c (cff_blend_doBlend): Adjust `parser->stack'
+	pointers into `subFont->blend_stack' after reallocation.
+
+2017-01-01  Werner Lemberg  <wl@gnu.org>
+
+	[sfnt] Return correct number of named instances for TTCs.
+
+	Without this patch, requesting information for face index N returned
+	the data for face index N+1 (or index 0).
+
+	* src/sfnt/sfobjs.c (sfnt_init_face): Correctly adjust `face_index'
+	for negative `face_instance_index' values.
+
+2016-12-31  Werner Lemberg  <wl@gnu.org>
+
+	*/*: Use hex numbers for errors in tracing messages.
+
+2016-12-31  Werner Lemberg  <wl@gnu.org>
+
+	[truetype] Check axis count in HVAR table.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=362
+
+	* src/truetype/ttgxvar.c (ft_var_load_hvar): Check axis count.
+	(ft_var_load_avar): Fix tracing message.
+
+
+----------------------------------------------------------------------------
+
+Copyright 2016-2018 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This file is part of the FreeType project, and may only be used, modified,
+and distributed under the terms of the FreeType project license,
+LICENSE.TXT.  By continuing to use, modify, or distribute this file you
+indicate that you have read the license and understand and accept it
+fully.
+
+
+Local Variables:
+version-control: never
+coding: utf-8
+End:
diff --git a/Jamfile b/Jamfile
index a9eb396..9078a5f 100644
--- a/Jamfile
+++ b/Jamfile
@@ -210,7 +210,7 @@
 {
   python $(FT2_SRC)/tools/docmaker/docmaker.py
          --prefix=ft2
-         --title=FreeType-2.9
+         --title=FreeType-2.9.1
          --output=$(DOC_DIR)
          $(FT2_INCLUDE)/freetype/*.h
          $(FT2_INCLUDE)/freetype/config/*.h
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..6d97d66
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,18 @@
+name: "freetype"
+description: "FreeType is a freely available software library to render fonts."
+third_party {
+  url {
+    type: HOMEPAGE
+    value: "https://www.freetype.org/"
+  }
+  url {
+    type: GIT
+    value: "git://git.sv.nongnu.org/freetype/freetype2.git"
+  }
+  version: "96b5e500909cfce39ff78feabefd8063a229b951"
+  last_upgrade_date {
+    year: 2018
+    month: 7
+    day: 27
+  }
+}
diff --git a/README b/README
index 1e7ea97..c23b99e 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
-  FreeType 2.9
-  ============
+  FreeType 2.9.1
+  ==============
 
   Homepage: https://www.freetype.org
 
@@ -24,9 +24,9 @@
 
   and download one of the following files.
 
-    freetype-doc-2.9.tar.bz2
-    freetype-doc-2.9.tar.gz
-    ftdoc29.zip
+    freetype-doc-2.9.1.tar.bz2
+    freetype-doc-2.9.1.tar.gz
+    ftdoc291.zip
 
   To view the documentation online, go to
 
diff --git a/README.android b/README.android
index 4684866..a2f5020 100644
--- a/README.android
+++ b/README.android
@@ -3,8 +3,6 @@
 There are the following local modifications:
 
 The following modules are disabled in include/freetype/config/ftmodule.h:
-  t1
-  t1cid
   pfr
   t42
   winfnt
@@ -31,3 +29,8 @@
 * Upload the changes.
   ex: git push origin HEAD:refs/for/master
 * Gerrit will run the text related tests.
+
+NOTE:
+ Since Chromium updates FreeType more frequently, you can check the following URL for their changes
+ and latest merges:
+ https://chromium.googlesource.com/chromium/src/+log/master/third_party/freetype
diff --git a/README.version b/README.version
index 1051688..f0f1f78 100644
--- a/README.version
+++ b/README.version
@@ -1,3 +1,3 @@
-URL: http://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=036bdc0c9a4fb55b4fe5a7276e97b70b95c8a260
-Version: 036bdc0c9a4fb55b4fe5a7276e97b70b95c8a260
+URL: http://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=96b5e500909cfce39ff78feabefd8063a229b951
+Version: 2.9.1 ..96b5e500909cfce39ff78feabefd8063a229b951 
 BugComponent: 75970
diff --git a/builds/amiga/makefile b/builds/amiga/makefile
index 6367438..6a7700a 100644
--- a/builds/amiga/makefile
+++ b/builds/amiga/makefile
@@ -96,9 +96,6 @@
 ftcid.ppc.o: $(FTSRC)/base/ftcid.c
 	$(CC) -c $(CFLAGS) -o $@ $<
 
-ftfntfmt.ppc.o: $(FTSRC)/base/ftfntfmt.c
-	$(CC) -c $(CFLAGS) -o $@ $<
-
 ftfstype.ppc.o: $(FTSRC)/base/ftfstype.c
 	$(CC) -c $(CFLAGS) -o $@ $<
 
@@ -111,9 +108,6 @@
 ftgxval.ppc.o: $(FTSRC)/base/ftgxval.c
 	$(CC) -c $(CFLAGS) -o $@ $<
 
-ftlcdfil.ppc.o: $(FTSRC)/base/ftlcdfil.c
-	$(CC) -c $(CFLAGS) -o $@ $<
-
 ftmm.ppc.o: $(FTSRC)/base/ftmm.c
 	$(CC) -c $(CFLAGS) -o $@ $<
 
@@ -270,8 +264,8 @@
 	$(CC) -c $(CFLAGS) -o $@ $<
 
 BASEPPC = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \
-	  ftfntfmt.ppc.oftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o          \
-	  ftgxval.ppc.o ftlcdfil.ppc.o ftmm.ppc.o ftotval.ppc.o            \
+	  oftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o                       \
+	  ftgxval.ppc.o ftmm.ppc.o ftotval.ppc.o                           \
 	  ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o          \
 	  fttype1.ppc.o ftwinfnt.ppc.o
 
diff --git a/builds/amiga/makefile.os4 b/builds/amiga/makefile.os4
index c07e181..0d340cf 100644
--- a/builds/amiga/makefile.os4
+++ b/builds/amiga/makefile.os4
@@ -99,9 +99,6 @@
 ftdebugpure.ppc.o: src/base/ftdebug.c
 	$(CC) -c $(CFLAGS) -o $@ src/base/ftdebug.c
 
-ftfntfmt.ppc.o: FT:src/base/ftfntfmt.c
-	$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfntfmt.c
-
 ftfstype.ppc.o: FT:src/base/ftfstype.c
 	$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfstype.c
 
@@ -114,9 +111,6 @@
 ftgxval.ppc.o: FT:src/base/ftgxval.c
 	$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgxval.c
 
-ftlcdfil.ppc.o: FT:src/base/ftlcdfil.c
-	$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftlcdfil.c
-
 ftmm.ppc.o: FT:src/base/ftmm.c
 	$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftmm.c
 
@@ -274,8 +268,8 @@
 	$(CC) -c $(CFLAGS) -o $@ /FT/src/otvalid/otvalid.c
 
 BASE = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \
-       ftfntfmt.ppc.o ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o         \
-       ftgxval.ppc.o ftlcdfil.ppc.o ftmm.ppc.o ftotval.ppc.o            \
+       ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o                        \
+       ftgxval.ppc.o ftmm.ppc.o ftotval.ppc.o                           \
        ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o          \
        fttype1.ppc.o ftwinfnt.ppc.o
 
diff --git a/builds/amiga/smakefile b/builds/amiga/smakefile
index 29a31e4..f5de308 100644
--- a/builds/amiga/smakefile
+++ b/builds/amiga/smakefile
@@ -42,8 +42,8 @@
 # (and either ftdebug.o or ftdebugpure.o if you enabled FT_DEBUG_LEVEL_ERROR or
 # FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h).
 
-OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfntfmt.o ftfstype.o \
-	  ftgasp.o ftglyph.o ftgxval.o ftlcdfil.o ftmm.o ftotval.o           \
+OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfstype.o      \
+	  ftgasp.o ftglyph.o ftgxval.o ftmm.o ftotval.o                \
 	  ftpatent.o ftpfr.o ftstroke.o ftsynth.o fttype1.o ftwinfnt.o
 
 OBJSYSTEM = ftsystem.o ftsystempure.o
@@ -133,8 +133,6 @@
 	sc $(SCFLAGS) objname=$@ $<
 ftcid.o: $(CORE)base/ftcid.c
 	sc $(SCFLAGS) objname=$@ $<
-ftfntfmt.o: $(CORE)base/ftfntfmt.c
-	sc $(SCFLAGS) objname=$@ $<
 ftfstype.o: $(CORE)base/ftfstype.c
 	sc $(SCFLAGS) objname=$@ $<
 ftgasp.o: $(CORE)base/ftgasp.c
@@ -143,8 +141,6 @@
 	sc $(SCFLAGS) objname=$@ $<
 ftgxval.o: $(CORE)base/ftgxval.c
 	sc $(SCFLAGS) objname=$@ $<
-ftlcdfil.o: $(CORE)base/ftlcdfil.c
-	sc $(SCFLAGS) objname=$@ $<
 ftmm.o: $(CORE)base/ftmm.c
 	sc $(SCFLAGS) objname=$@ $<
 ftotval.o: $(CORE)base/ftotval.c
diff --git a/builds/cmake/FindHarfBuzz.cmake b/builds/cmake/FindHarfBuzz.cmake
index f394b82..ee0d52e 100644
--- a/builds/cmake/FindHarfBuzz.cmake
+++ b/builds/cmake/FindHarfBuzz.cmake
@@ -31,42 +31,51 @@
 # HARFBUZZ_LIBRARIES - containg the HarfBuzz library
 
 include(FindPkgConfig)
+pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz)
 
-pkg_check_modules(PC_HARFBUZZ harfbuzz>=0.9.7)
-
-find_path(HARFBUZZ_INCLUDE_DIRS NAMES hb.h
-    HINTS ${PC_HARFBUZZ_INCLUDE_DIRS} ${PC_HARFBUZZ_INCLUDEDIR}
+find_path(HARFBUZZ_INCLUDE_DIRS
+    NAMES hb.h
+    HINTS ${PC_HARFBUZZ_INCLUDEDIR}
+          ${PC_HARFBUZZ_INCLUDE_DIRS}
+    PATH_SUFFIXES harfbuzz
 )
 
 find_library(HARFBUZZ_LIBRARIES NAMES harfbuzz
-    HINTS ${PC_HARFBUZZ_LIBRARY_DIRS} ${PC_HARFBUZZ_LIBDIR}
+    HINTS ${PC_HARFBUZZ_LIBDIR}
+          ${PC_HARFBUZZ_LIBRARY_DIRS}
 )
 
-# HarfBuzz 0.9.18 split ICU support into a separate harfbuzz-icu library.
-if ("${PC_HARFBUZZ_VERSION}" VERSION_GREATER "0.9.17")
-    if (HarfBuzz_FIND_REQUIRED)
-        set(_HARFBUZZ_REQUIRED REQUIRED)
-    else ()
-        set(_HARFBUZZ_REQUIRED "")
+if (HARFBUZZ_INCLUDE_DIRS)
+    if (EXISTS "${HARFBUZZ_INCLUDE_DIRS}/hb-version.h")
+        file(READ "${HARFBUZZ_INCLUDE_DIRS}/hb-version.h" _harfbuzz_version_content)
+
+        string(REGEX MATCH "#define +HB_VERSION_STRING +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _dummy "${_harfbuzz_version_content}")
+        set(HARFBUZZ_VERSION "${CMAKE_MATCH_1}")
     endif ()
-    pkg_check_modules(PC_HARFBUZZ_ICU harfbuzz-icu>=0.9.18 ${_HARFBUZZ_REQUIRED})
-    find_library(HARFBUZZ_ICU_LIBRARIES NAMES harfbuzz-icu
-        HINTS ${PC_HARFBUZZ_ICU_LIBRARY_DIRS} ${PC_HARFBUZZ_ICU_LIBDIR}
-    )
-    if (HARFBUZZ_ICU_LIBRARIES)
-        list(APPEND HARFBUZZ_LIBRARIES "${HARFBUZZ_ICU_LIBRARIES}")
-    endif ()
-    set(_HARFBUZZ_EXTRA_REQUIRED_VAR "HARFBUZZ_ICU_LIBRARIES")
-else ()
-    set(_HARFBUZZ_EXTRA_REQUIRED_VAR "")
+endif ()
+
+if ("${harfbuzz_FIND_VERSION}" VERSION_GREATER "${HARFBUZZ_VERSION}")
+    message(FATAL_ERROR "Required version (" ${harfbuzz_FIND_VERSION} ") is higher than found version (" ${HARFBUZZ_VERSION} ")")
 endif ()
 
 include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(HarfBuzz DEFAULT_MSG HARFBUZZ_INCLUDE_DIRS
-    HARFBUZZ_LIBRARIES ${_HARFBUZZ_EXTRA_REQUIRED_VAR})
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+    harfbuzz 
+        REQUIRED_VARS HARFBUZZ_INCLUDE_DIRS HARFBUZZ_LIBRARIES
+        VERSION_VAR HARFBUZZ_VERSION)
 
 mark_as_advanced(
-    HARFBUZZ_ICU_LIBRARIES
     HARFBUZZ_INCLUDE_DIRS
     HARFBUZZ_LIBRARIES
 )
+
+# Allows easy linking as in 
+#   target_link_libraries(freetype PRIVATE Harfbuzz::Harfbuzz)
+if (NOT CMAKE_VERSION VERSION_LESS 3.1)
+    if (HARFBUZZ_FOUND AND NOT TARGET Harfbuzz::Harfbuzz)
+        add_library(Harfbuzz::Harfbuzz INTERFACE IMPORTED)
+        set_target_properties(
+            Harfbuzz::Harfbuzz PROPERTIES
+                INTERFACE_INCLUDE_DIRECTORIES "${HARFBUZZ_INCLUDE_DIRS}")
+    endif ()
+endif ()
diff --git a/builds/detect.mk b/builds/detect.mk
index 771fc31..eb7f797 100644
--- a/builds/detect.mk
+++ b/builds/detect.mk
@@ -101,57 +101,28 @@
   .PHONY: setup
 endif
 
-# The following targets are equivalent, with the exception that they use
-# a slightly different syntax for the `echo' command.
+# Flash out and copy rules.
 #
-# std_setup: defined for most (i.e. Unix-like) platforms
-# dos_setup: defined for Dos-ish platforms like Dos, Windows & OS/2
-#
-.PHONY: std_setup dos_setup
+.PHONY: std_setup
 
 std_setup:
-	@echo ""
-	@echo "$(PROJECT_TITLE) build system -- automatic system detection"
-	@echo ""
-	@echo "The following settings are used:"
-	@echo ""
-	@echo "  platform                    $(PLATFORM)"
-	@echo "  compiler                    $(CC)"
-	@echo "  configuration directory     $(BUILD_DIR)"
-	@echo "  configuration rules         $(CONFIG_RULES)"
-	@echo ""
-	@echo "If this does not correspond to your system or settings please remove the file"
-	@echo "\`$(CONFIG_MK)' from this directory then read the INSTALL file for help."
-	@echo ""
-	@echo "Otherwise, simply type \`$(MAKE)' again to build the library,"
-	@echo "or \`$(MAKE) refdoc' to build the API reference (this needs python >= 2.6)."
-	@echo ""
-	@$(COPY) $(CONFIG_RULES) $(CONFIG_MK)
-
-
-# Special case for Dos, Windows, OS/2, where echo "" doesn't work correctly!
-#
-# For `cmd.exe', we use 0xFF as a replacement character for a protected
-# space.
-#
-dos_setup:
-	@type builds$(SEP)newline
-	@echo $(PROJECT_TITLE) build system -- automatic system detection
-	@type builds$(SEP)newline
-	@echo The following settings are used:
-	@type builds$(SEP)newline
-	@echo   platformÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$(PLATFORM)
-	@echo   compilerÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$(CC)
-	@echo   configuration directoryÿÿÿÿÿÿ$(subst /,$(SEP),$(BUILD_DIR))
-	@echo   configuration rulesÿÿÿÿÿÿÿÿÿÿ$(subst /,$(SEP),$(CONFIG_RULES))
-	@type builds$(SEP)newline
-	@echo If this does not correspond to your system or settings please remove the file
-	@echo '$(CONFIG_MK)' from this directory then read the INSTALL file for help.
-	@type builds$(SEP)newline
-	@echo Otherwise, simply type 'make' again to build the library.
-	@echo or 'make refdoc' to build the API reference (this needs at least python 2.6).
-	@type builds$(SEP)newline
-	@$(COPY) $(subst /,$(SEP),$(CONFIG_RULES) $(CONFIG_MK)) > nul
+	$(info )
+	$(info $(PROJECT_TITLE) build system -- automatic system detection)
+	$(info )
+	$(info The following settings are used:)
+	$(info )
+	$(info $(empty)  platform                    $(PLATFORM))
+	$(info $(empty)  compiler                    $(CC))
+	$(info $(empty)  configuration directory     $(subst /,$(SEP),$(BUILD_DIR)))
+	$(info $(empty)  configuration rules         $(subst /,$(SEP),$(CONFIG_RULES)))
+	$(info )
+	$(info If this does not correspond to your system or settings please remove the file)
+	$(info `$(CONFIG_MK)' from this directory then read the INSTALL file for help.)
+	$(info )
+	$(info Otherwise, simply type `$(MAKE)' again to build the library,)
+	$(info or `$(MAKE) refdoc' to build the API reference (this needs python >= 2.6).)
+	$(info )
+	@$(COPY) $(subst /,$(SEP),$(CONFIG_RULES) $(CONFIG_MK))
 
 
 # EOF
diff --git a/builds/dos/detect.mk b/builds/dos/detect.mk
index 55b0e76..14d8c03 100644
--- a/builds/dos/detect.mk
+++ b/builds/dos/detect.mk
@@ -80,36 +80,46 @@
   ifneq ($(findstring emx,$(MAKECMDGOALS)),)        # EMX gcc
     CONFIG_FILE := dos-emx.mk
     CC          := gcc
-    emx: setup
+
     .PHONY: emx
+    emx: setup
+	    @cd .
   endif
 
   ifneq ($(findstring turboc,$(MAKECMDGOALS)),)     # Turbo C
     CONFIG_FILE := dos-tcc.mk
     CC          := tcc
-    turboc: setup
+
     .PHONY: turboc
+    turboc: setup
+	    @cd .
   endif
 
   ifneq ($(findstring watcom,$(MAKECMDGOALS)),)     # Watcom C/C++
     CONFIG_FILE := dos-wat.mk
     CC          := wcc386
-    watcom: setup
+
     .PHONY: watcom
+    watcom: setup
+	    @cd .
   endif
 
   ifneq ($(findstring borlandc,$(MAKECMDGOALS)),)   # Borland C/C++ 32-bit
     CONFIG_FILE := dos-bcc.mk
     CC          := bcc32
-    borlandc: setup
+
     .PHONY: borlandc
+    borlandc: setup
+	    @cd .
   endif
 
   ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit
     CONFIG_FILE := dos-bcc.mk
     CC          := bcc
-    borlandc16: setup
+
     .PHONY: borlandc16
+    borlandc16: setup
+	    @cd .
   endif
 
   ifneq ($(findstring bash,$(SHELL)),)              # check for bash
@@ -133,7 +143,7 @@
       COPY := copy
     endif  # test NT
 
-    setup: dos_setup
+    setup: std_setup
   endif
 
 endif     # test PLATFORM dos
diff --git a/builds/mac/FreeType.m68k_cfm.make.txt b/builds/mac/FreeType.m68k_cfm.make.txt
index c0a55f5..b74565f 100644
--- a/builds/mac/FreeType.m68k_cfm.make.txt
+++ b/builds/mac/FreeType.m68k_cfm.make.txt
@@ -38,7 +38,6 @@
 				  :src:base:ftbdf.c \xB6
 				  :src:base:ftbitmap.c \xB6
 				  :src:base:ftdebug.c \xB6
-				  :src:base:ftfntfmt.c \xB6
 				  :src:base:ftfstype.c \xB6
 				  :src:base:ftglyph.c \xB6
 				  :src:base:ftgxval.c \xB6
@@ -83,7 +82,6 @@
 				  "{ObjDir}ftbdf.c.o" \xB6
 				  "{ObjDir}ftbitmap.c.o" \xB6
 				  "{ObjDir}ftdebug.c.o" \xB6
-				  "{ObjDir}ftfntfmt.c.o" \xB6
 				  "{ObjDir}ftfstype.c.o" \xB6
 				  "{ObjDir}ftglyph.c.o" \xB6
 				  "{ObjDir}ftgxval.c.o" \xB6
@@ -161,7 +159,6 @@
 "{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c
 "{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c
 "{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c
-"{ObjDir}ftfntfmt.c.o" \xC4 :src:base:ftfntfmt.c
 "{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c
 "{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c
 "{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c
diff --git a/builds/mac/FreeType.m68k_far.make.txt b/builds/mac/FreeType.m68k_far.make.txt
index e9b7f6f..d880ddb 100644
--- a/builds/mac/FreeType.m68k_far.make.txt
+++ b/builds/mac/FreeType.m68k_far.make.txt
@@ -37,7 +37,6 @@
 				  :src:base:ftbdf.c \xB6
 				  :src:base:ftbitmap.c \xB6
 				  :src:base:ftdebug.c \xB6
-				  :src:base:ftfntfmt.c \xB6
 				  :src:base:ftfstype.c \xB6
 				  :src:base:ftglyph.c \xB6
 				  :src:base:ftgxval.c \xB6
@@ -82,7 +81,6 @@
 				  "{ObjDir}ftbdf.c.o" \xB6
 				  "{ObjDir}ftbitmap.c.o" \xB6
 				  "{ObjDir}ftdebug.c.o" \xB6
-				  "{ObjDir}ftfntfmt.c.o" \xB6
 				  "{ObjDir}ftfstype.c.o" \xB6
 				  "{ObjDir}ftglyph.c.o" \xB6
 				  "{ObjDir}ftgxval.c.o" \xB6
@@ -160,7 +158,6 @@
 "{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c
 "{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c
 "{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c
-"{ObjDir}ftfntfmt.c.o" \xC4 :src:base:ftfntfmt.c
 "{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c
 "{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c
 "{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c
diff --git a/builds/mac/FreeType.ppc_carbon.make.txt b/builds/mac/FreeType.ppc_carbon.make.txt
index 9eb1dac..1fa8c30 100644
--- a/builds/mac/FreeType.ppc_carbon.make.txt
+++ b/builds/mac/FreeType.ppc_carbon.make.txt
@@ -38,7 +38,6 @@
 				  :src:base:ftbdf.c \xB6
 				  :src:base:ftbitmap.c \xB6
 				  :src:base:ftdebug.c \xB6
-				  :src:base:ftfntfmt.c \xB6
 				  :src:base:ftfstype.c \xB6
 				  :src:base:ftglyph.c \xB6
 				  :src:base:ftgxval.c \xB6
@@ -83,7 +82,6 @@
 				  "{ObjDir}ftbdf.c.x" \xB6
 				  "{ObjDir}ftbitmap.c.x" \xB6
 				  "{ObjDir}ftdebug.c.x" \xB6
-				  "{ObjDir}ftfntfmt.c.x" \xB6
 				  "{ObjDir}ftfstype.c.x" \xB6
 				  "{ObjDir}ftglyph.c.x" \xB6
 				  "{ObjDir}ftgxval.c.x" \xB6
@@ -164,7 +162,6 @@
 "{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c
 "{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c
 "{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c
-"{ObjDir}ftfntfmt.c.x" \xC4 :src:base:ftfntfmt.c
 "{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c
 "{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c
 "{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c
diff --git a/builds/mac/FreeType.ppc_classic.make.txt b/builds/mac/FreeType.ppc_classic.make.txt
index 0627eea..2550190 100644
--- a/builds/mac/FreeType.ppc_classic.make.txt
+++ b/builds/mac/FreeType.ppc_classic.make.txt
@@ -38,7 +38,6 @@
 				  :src:base:ftbdf.c \xB6
 				  :src:base:ftbitmap.c \xB6
 				  :src:base:ftdebug.c \xB6
-				  :src:base:ftfntfmt.c \xB6
 				  :src:base:ftfstype.c \xB6
 				  :src:base:ftglyph.c \xB6
 				  :src:base:ftgxval.c \xB6
@@ -83,7 +82,6 @@
 				  "{ObjDir}ftbdf.c.x" \xB6
 				  "{ObjDir}ftbitmap.c.x" \xB6
 				  "{ObjDir}ftdebug.c.x" \xB6
-				  "{ObjDir}ftfntfmt.c.x" \xB6
 				  "{ObjDir}ftfstype.c.x" \xB6
 				  "{ObjDir}ftglyph.c.x" \xB6
 				  "{ObjDir}ftgxval.c.x" \xB6
@@ -164,7 +162,6 @@
 "{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c
 "{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c
 "{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c
-"{ObjDir}ftfntfmt.c.x" \xC4 :src:base:ftfntfmt.c
 "{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c
 "{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c
 "{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c
diff --git a/builds/modules.mk b/builds/modules.mk
index e1edb17..9a7a4a0 100644
--- a/builds/modules.mk
+++ b/builds/modules.mk
@@ -41,7 +41,7 @@
 
 define FTMODULE_H_INIT
 $(REMOVE_MODULE)
-@-echo Generating modules list in $(FTMODULE_H)...
+$(info Generating modules list in $(FTMODULE_H)...)
 $(OPEN_MODULE)/* This is a generated file. */$(CLOSE_MODULE)
 endef
 
@@ -56,7 +56,7 @@
 
 define FTMODULE_H_DONE
 $(OPEN_MODULE)/* EOF */$(CLOSE_MODULE)
-@echo done.
+$(info done.)
 endef
 
 
diff --git a/builds/newline b/builds/newline
deleted file mode 100644
index 8b13789..0000000
--- a/builds/newline
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/builds/os2/detect.mk b/builds/os2/detect.mk
index 2edb8d4..5a80a22 100644
--- a/builds/os2/detect.mk
+++ b/builds/os2/detect.mk
@@ -40,32 +40,40 @@
   ifneq ($(findstring visualage,$(MAKECMDGOALS)),)     # Visual Age C++
     CONFIG_FILE := os2-icc.mk
     CC          := icc
-    visualage: setup
+
     .PHONY: visualage
+    visualage: setup
+	    @cd .
   endif
 
   ifneq ($(findstring watcom,$(MAKECMDGOALS)),)        # Watcom C/C++
     CONFIG_FILE := os2-wat.mk
     CC          := wcc386
-    watcom: setup
+
     .PHONY: watcom
+    watcom: setup
+	    @cd .
   endif
 
   ifneq ($(findstring borlandc,$(MAKECMDGOALS)),)      # Borland C++ 32-bit
     CONFIG_FILE := os2-bcc.mk
     CC          := bcc32
-    borlandc: setup
+
     .PHONY: borlandc
+    borlandc: setup
+	    @cd .
   endif
 
   ifneq ($(findstring devel,$(MAKECMDGOALS)),)         # development target
     CONFIG_FILE := os2-dev.mk
     CC          := gcc
-    devel: setup
+
     .PHONY: devel
+    devel: setup
+	    @cd .
   endif
 
-  setup: dos_setup
+  setup: std_setup
 
 endif   # test PLATFORM os2
 
diff --git a/builds/symbian/freetype.mmp b/builds/symbian/freetype.mmp
index d3b95ef..4e4a041 100644
--- a/builds/symbian/freetype.mmp
+++ b/builds/symbian/freetype.mmp
@@ -28,13 +28,11 @@
 source ftbdf.c
 source ftbitmap.c
 source ftcid.c
-source ftfntfmt.c
 source ftfstype.c
 source ftgasp.c
 source ftglyph.c
 source ftgxval.c
 source ftinit.c
-source ftlcdfil.c
 source ftmm.c
 source ftotval.c
 source ftpatent.c
diff --git a/builds/toplevel.mk b/builds/toplevel.mk
index f51ad16..7ce0ed8 100644
--- a/builds/toplevel.mk
+++ b/builds/toplevel.mk
@@ -172,7 +172,8 @@
 # get FreeType version string, using a
 # poor man's `sed' emulation with make's built-in string functions
 #
-work := $(strip $(shell $(CAT) $(TOP_DIR)/include/freetype/freetype.h))
+work := $(strip $(shell $(CAT) \
+                  $(subst /,$(SEP),$(TOP_DIR)/include/freetype/freetype.h)))
 work := $(subst |,x,$(work))
 work := $(subst $(space),|,$(work))
 work := $(subst \#define|FREETYPE_MAJOR|,$(space),$(work))
diff --git a/builds/unix/configure.raw b/builds/unix/configure.raw
index d76c324..f18bb3d 100644
--- a/builds/unix/configure.raw
+++ b/builds/unix/configure.raw
@@ -17,7 +17,7 @@
 
 # Don't forget to update `docs/VERSIONS.TXT'!
 
-version_info='22:0:16'
+version_info='22:1:16'
 AC_SUBST([version_info])
 ft_version=`echo $version_info | tr : .`
 AC_SUBST([ft_version])
@@ -177,6 +177,15 @@
 
 CPPFLAGS="${orig_CPPFLAGS}"
 
+AC_ARG_ENABLE([freetype-config],
+  AS_HELP_STRING([--enable-freetype-config], [install freetype-config]),
+  [case "${enableval}" in
+    yes) enable_freetype_config="TRUE" ;;
+    no)  enable_freetype_config="FALSE" ;;
+    *)   AC_MSG_ERROR([unknown value '${enableval}' passed with --enable-freetype-config]) ;;
+   esac], [enable_freetype_config="FALSE"])
+
+AC_SUBST(INSTALL_FT2_CONFIG, [$enable_freetype_config])
 
 # checks for library functions
 
@@ -299,6 +308,30 @@
 AC_SUBST([XX_ANSIFLAGS])
 
 
+# It is recommended that shared libraries hide symbols except those with
+# explicit __attribute__((visibility("default"))).
+#
+found_visibility_flag=no
+AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
+orig_CFLAGS="${CFLAGS}"
+CFLAGS="${CFLAGS} -fvisibility=hidden"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+               [found_visibility_flag=yes
+                AC_MSG_RESULT(yes)],
+               [CFLAGS="${orig_CFLAGS}"
+                AC_MSG_RESULT(no)])
+
+if test "${found_visibility_flag}" = "no"; then
+  AC_MSG_CHECKING([for -xldscope=hidden compiler flag])
+  orig_CFLAGS="${CFLAGS}"
+  CFLAGS="${CFLAGS} -xldscope=hidden"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+                 [found_visibility_flag=yes
+                  AC_MSG_RESULT(yes)],
+                 [CFLAGS="${orig_CFLAGS}"
+                  AC_MSG_RESULT(no)])
+fi
+
 # All library tests below try `pkg-config' first.  If that fails, a function
 # from the library is tested in the traditional autoconf way (zlib, bzip2),
 # or a config script is called (libpng).
@@ -475,7 +508,7 @@
 
 have_harfbuzz=no
 if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then
-  harfbuzz_pkg="harfbuzz >= 0.9.21"
+  harfbuzz_pkg="harfbuzz >= 1.3.0"
   have_harfbuzz_pkg=no
 
   if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then
diff --git a/builds/unix/detect.mk b/builds/unix/detect.mk
index 54daa07..5f9b9e2 100644
--- a/builds/unix/detect.mk
+++ b/builds/unix/detect.mk
@@ -40,8 +40,10 @@
   ifneq ($(findstring devel,$(MAKECMDGOALS)),)
     CONFIG_FILE := unix-dev.mk
     CC          := gcc
-    devel: setup
+
     .PHONY: devel
+    devel: setup
+	    @:
   else
 
     # If `lcc' is the requested target, we use a special configuration
@@ -50,8 +52,10 @@
     ifneq ($(findstring lcc,$(MAKECMDGOALS)),)
       CONFIG_FILE := unix-lcc.mk
       CC          := lcc
-      lcc: setup
+
       .PHONY: lcc
+      lcc: setup
+	      @:
     else
 
       # If a Unix platform is detected, the configure script is called and
@@ -68,9 +72,11 @@
       # platform).
       #
       CONFIG_FILE := unix.mk
-      unix: setup
       must_configure := 1
+
       .PHONY: unix
+      unix: setup
+	      @:
     endif
   endif
 
diff --git a/builds/unix/ftconfig.in b/builds/unix/ftconfig.in
index ca90588..cdb7f22 100644
--- a/builds/unix/ftconfig.in
+++ b/builds/unix/ftconfig.in
@@ -454,9 +454,9 @@
 #endif /* !FT_BASE_DEF */
 
 
-  /*   When compiling FreeType as a DLL, some systems/compilers need a     */
-  /*   special attribute in front OR after the return type of function     */
-  /*   declarations.                                                       */
+  /*   When compiling FreeType as a DLL or DSO with hidden visibility      */
+  /*   some systems/compilers need a special attribute in front OR after   */
+  /*   the return type of function declarations.                           */
   /*                                                                       */
   /*   Two macros are used within the FreeType source code to define       */
   /*   exported library functions: FT_EXPORT and FT_EXPORT_DEF.            */
@@ -487,21 +487,30 @@
   /*                                                                       */
 #ifndef FT_EXPORT
 
-#ifdef __cplusplus
+#ifdef FT2_BUILD_LIBRARY
+
+#if defined( _WIN32 ) && defined( DLL_EXPORT )
+#define FT_EXPORT( x )  __declspec( dllexport )  x
+#elif defined( __GNUC__ ) && __GNUC__ >= 4
+#define FT_EXPORT( x )  __attribute__(( visibility( "default" ) ))  x
+#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550
+#define FT_EXPORT( x )  __global  x
+#elif defined( __cplusplus )
 #define FT_EXPORT( x )  extern "C"  x
 #else
 #define FT_EXPORT( x )  extern  x
 #endif
 
-#ifdef _WIN32
-#if defined( FT2_BUILD_LIBRARY ) && \
-    ( defined( _DLL ) || defined( DLL_EXPORT ) )
-#undef FT_EXPORT
-#define FT_EXPORT( x )  __declspec( dllexport )  x
-#elif defined( FT2_DLLIMPORT )
-#undef FT_EXPORT
+#else
+
+#if defined( _WIN32 ) && defined( DLL_IMPORT )
 #define FT_EXPORT( x )  __declspec( dllimport )  x
+#elif defined( __cplusplus )
+#define FT_EXPORT( x )  extern "C"  x
+#else
+#define FT_EXPORT( x )  extern  x
 #endif
+
 #endif
 
 #endif /* !FT_EXPORT */
diff --git a/builds/unix/install.mk b/builds/unix/install.mk
index d89064e..c08c3b7 100644
--- a/builds/unix/install.mk
+++ b/builds/unix/install.mk
@@ -39,9 +39,11 @@
 	$(MKINSTALLDIRS) $(DESTDIR)$(libdir)                               \
                          $(DESTDIR)$(libdir)/pkgconfig                     \
                          $(DESTDIR)$(includedir)/freetype2/freetype/config \
-                         $(DESTDIR)$(bindir)                               \
-                         $(DESTDIR)$(datadir)/aclocal                      \
+                         $(DESTDIR)$(datadir)/aclocal
+ifeq ($(INSTALL_FT2_CONFIG),TRUE)
+	$(MKINSTALLDIRS) $(DESTDIR)$(bindir)                               \
                          $(DESTDIR)$(mandir)/man1
+endif
 	$(LIBTOOL) --mode=install $(INSTALL)                             \
                                   $(PROJECT_LIBRARY) $(DESTDIR)$(libdir)
 	-for P in $(PUBLIC_H) ; do                           \
@@ -52,7 +54,7 @@
           $(INSTALL_DATA)                                           \
             $$P $(DESTDIR)$(includedir)/freetype2/freetype/config ; \
         done
-	$(INSTALL_DATA) $(TOP_DIR)/include/ft2build.h  \
+	$(INSTALL_DATA) $(TOP_DIR)/include/ft2build.h                  \
           $(DESTDIR)$(includedir)/freetype2/ft2build.h
 	$(INSTALL_DATA) $(OBJ_BUILD)/ftconfig.h                        \
           $(DESTDIR)$(includedir)/freetype2/freetype/config/ftconfig.h
@@ -60,14 +62,16 @@
           $(DESTDIR)$(includedir)/freetype2/freetype/config/ftmodule.h
 	$(INSTALL_DATA) $(OBJ_BUILD)/ftoption.h                        \
           $(DESTDIR)$(includedir)/freetype2/freetype/config/ftoption.h
-	$(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \
-          $(DESTDIR)$(bindir)/freetype-config
-	$(INSTALL_SCRIPT) -m 644 $(BUILD_DIR)/freetype2.m4 \
+	$(INSTALL_SCRIPT) -m 644 $(BUILD_DIR)/freetype2.m4             \
           $(DESTDIR)$(datadir)/aclocal/freetype2.m4
-	$(INSTALL_SCRIPT) -m 644 $(OBJ_BUILD)/freetype2.pc \
+	$(INSTALL_SCRIPT) -m 644 $(OBJ_BUILD)/freetype2.pc             \
           $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc
-	$(INSTALL_DATA) $(TOP_DIR)/docs/freetype-config.1 \
+ifeq ($(INSTALL_FT2_CONFIG),TRUE)
+	$(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config          \
+          $(DESTDIR)$(bindir)/freetype-config
+	$(INSTALL_DATA) $(TOP_DIR)/docs/freetype-config.1              \
           $(DESTDIR)$(mandir)/man1/freetype-config.1
+endif
 
 
 uninstall:
@@ -80,7 +84,7 @@
 
 
 check:
-	@echo There is no validation suite for this package.
+	$(info There is no validation suite for this package.)
 
 
 .PHONY: clean_project_unix distclean_project_unix
diff --git a/builds/unix/unix-def.in b/builds/unix/unix-def.in
index 059a061..6957053 100644
--- a/builds/unix/unix-def.in
+++ b/builds/unix/unix-def.in
@@ -145,6 +145,9 @@
 	chmod a-w $@.tmp
 	mv $@.tmp $@
 
+# defines whether we should install `freetype-config' or not
+INSTALL_FT2_CONFIG = @INSTALL_FT2_CONFIG@
+
 all install: $(OBJ_BUILD)/freetype-config \
      $(OBJ_BUILD)/freetype2.pc
 
diff --git a/builds/vms/ftconfig.h b/builds/vms/ftconfig.h
index d87ea69..733b09b 100644
--- a/builds/vms/ftconfig.h
+++ b/builds/vms/ftconfig.h
@@ -406,9 +406,9 @@
 #endif /* !FT_BASE_DEF */
 
 
-  /*   When compiling FreeType as a DLL, some systems/compilers need a     */
-  /*   special attribute in front OR after the return type of function     */
-  /*   declarations.                                                       */
+  /*   When compiling FreeType as a DLL or DSO with hidden visibility      */
+  /*   some systems/compilers need a special attribute in front OR after   */
+  /*   the return type of function declarations.                           */
   /*                                                                       */
   /*   Two macros are used within the FreeType source code to define       */
   /*   exported library functions: FT_EXPORT and FT_EXPORT_DEF.            */
@@ -439,21 +439,30 @@
   /*                                                                       */
 #ifndef FT_EXPORT
 
-#ifdef __cplusplus
+#ifdef FT2_BUILD_LIBRARY
+
+#if defined( _WIN32 ) && defined( DLL_EXPORT )
+#define FT_EXPORT( x )  __declspec( dllexport )  x
+#elif defined( __GNUC__ ) && __GNUC__ >= 4
+#define FT_EXPORT( x )  __attribute__(( visibility( "default" ) ))  x
+#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550
+#define FT_EXPORT( x )  __global  x
+#elif defined( __cplusplus )
 #define FT_EXPORT( x )  extern "C"  x
 #else
 #define FT_EXPORT( x )  extern  x
 #endif
 
-#ifdef _WIN32
-#if defined( FT2_BUILD_LIBRARY ) && \
-    ( defined( _DLL ) || defined( DLL_EXPORT ) )
-#undef FT_EXPORT
-#define FT_EXPORT( x )  __declspec( dllexport )  x
-#elif defined( FT2_DLLIMPORT )
-#undef FT_EXPORT
+#else
+
+#if defined( _WIN32 ) && defined( DLL_IMPORT )
 #define FT_EXPORT( x )  __declspec( dllimport )  x
+#elif defined( __cplusplus )
+#define FT_EXPORT( x )  extern "C"  x
+#else
+#define FT_EXPORT( x )  extern  x
 #endif
+
 #endif
 
 #endif /* !FT_EXPORT */
diff --git a/builds/wince/vc2005-ce/freetype.vcproj b/builds/wince/vc2005-ce/freetype.vcproj
index 215028a..1ca45a8 100644
--- a/builds/wince/vc2005-ce/freetype.vcproj
+++ b/builds/wince/vc2005-ce/freetype.vcproj
@@ -21,7 +21,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -41,7 +41,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -61,7 +61,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -81,7 +81,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -101,7 +101,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -121,7 +121,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -141,7 +141,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -161,7 +161,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -181,7 +181,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -201,7 +201,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -221,7 +221,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -241,7 +241,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -261,7 +261,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST.lib" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST.lib" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -281,7 +281,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST.lib" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST.lib" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -301,7 +301,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST.lib" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST.lib" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -321,7 +321,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST.lib" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST.lib" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -341,7 +341,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST.lib" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST.lib" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -361,7 +361,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST.lib" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST.lib" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -381,7 +381,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -401,7 +401,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -421,7 +421,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -441,7 +441,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -461,7 +461,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -481,7 +481,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -501,7 +501,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -521,7 +521,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -541,7 +541,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -561,7 +561,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -581,7 +581,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -601,7 +601,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29ST_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291ST_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -621,7 +621,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -641,7 +641,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -661,7 +661,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -681,7 +681,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -701,7 +701,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -721,7 +721,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -741,7 +741,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -758,7 +758,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype29MT_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype291MT_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -773,585 +773,18 @@
       <File RelativePath="..\..\..\src\autofit\autofit.c">

       </File>

       <File RelativePath="..\..\..\src\bdf\bdf.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\cff\cff.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftbase.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftbitmap.c">

       </File>

       <File RelativePath="..\..\..\src\cache\ftcache.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\ftdebug.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" />

+        <FileConfiguration>

+          <Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />

         </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftfstype.c">

@@ -1359,774 +792,18 @@
       <File RelativePath="..\..\..\src\base\ftgasp.c">

       </File>

       <File RelativePath="..\..\..\src\base\ftglyph.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\gzip\ftgzip.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftinit.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\lzw\ftlzw.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftstroke.c">

       </File>

       <File RelativePath="..\..\..\src\base\ftsystem.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\smooth\smooth.c">

-        <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <Filter Name="FT_MODULES">

         <File RelativePath="..\..\..\src\base\ftbbox.c">

@@ -2135,139 +812,9 @@
         </File>

         <File RelativePath="..\..\..\src\base\ftcid.c">

         </File>

-        <File RelativePath="..\..\..\src\base\ftfntfmt.c">

-        </File>

         <File RelativePath="..\..\..\src\base\ftgxval.c">

         </File>

-        <File RelativePath="..\..\..\src\base\ftlcdfil.c">

-        </File>

         <File RelativePath="..\..\..\src\base\ftmm.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\base\ftotval.c">

         </File>

@@ -2282,1540 +829,28 @@
         <File RelativePath="..\..\..\src\base\ftwinfnt.c">

         </File>

         <File RelativePath="..\..\..\src\pcf\pcf.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\pfr\pfr.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\psaux\psaux.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\pshinter\pshinter.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\psnames\psmodule.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\raster\raster.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\sfnt\sfnt.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\truetype\truetype.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\type1\type1.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\cid\type1cid.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\type42\type42.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\winfonts\winfnt.c">

-          <FileConfiguration Name="Release|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Smartphone 2003 (ARMV4)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

       </Filter>

     </Filter>

@@ -3836,4 +871,4 @@
   </Files>

   <Globals>

   </Globals>

-</VisualStudioProject>
\ No newline at end of file
+</VisualStudioProject>

diff --git a/builds/wince/vc2005-ce/index.html b/builds/wince/vc2005-ce/index.html
index 2672415..02a1caf 100644
--- a/builds/wince/vc2005-ce/index.html
+++ b/builds/wince/vc2005-ce/index.html
@@ -21,14 +21,14 @@
   <li>PPC/SP WM6 (Windows Mobile 6)</li>
 </ul>
 
-It compiles the following libraries from the FreeType 2.9 sources:</p>
+It compiles the following libraries from the FreeType 2.9.1 sources:</p>
 
 <ul>
   <pre>
-    freetype29.lib     - release build; single threaded
-    freetype29_D.lib   - debug build;   single threaded
-    freetype29MT.lib   - release build; multi-threaded
-    freetype29MT_D.lib - debug build;   multi-threaded</pre>
+    freetype291.lib     - release build; single threaded
+    freetype291_D.lib   - debug build;   single threaded
+    freetype291MT.lib   - release build; multi-threaded
+    freetype291MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
diff --git a/builds/wince/vc2008-ce/freetype.vcproj b/builds/wince/vc2008-ce/freetype.vcproj
index 9be8588..7a5445e 100644
--- a/builds/wince/vc2008-ce/freetype.vcproj
+++ b/builds/wince/vc2008-ce/freetype.vcproj
@@ -88,7 +88,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -177,7 +177,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -266,7 +266,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -355,7 +355,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -444,7 +444,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -533,7 +533,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -621,7 +621,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -709,7 +709,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -797,7 +797,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -885,7 +885,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -973,7 +973,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1061,7 +1061,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1149,7 +1149,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -1236,7 +1236,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -1323,7 +1323,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -1410,7 +1410,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -1497,7 +1497,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -1584,7 +1584,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -1668,7 +1668,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1753,7 +1753,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1838,7 +1838,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1923,7 +1923,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2008,7 +2008,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2093,7 +2093,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2178,7 +2178,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2263,7 +2263,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2348,7 +2348,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2433,7 +2433,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2518,7 +2518,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2603,7 +2603,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2689,7 +2689,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2775,7 +2775,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2861,7 +2861,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2947,7 +2947,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3033,7 +3033,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3119,7 +3119,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3205,7 +3205,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3279,7 +3279,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\wince\vc2008-ce\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3313,1115 +3313,14 @@
 			<File

 				RelativePath="..\..\..\src\bdf\bdf.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\cff\cff.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftbase.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftbitmap.c"

@@ -4430,854 +3329,13 @@
 			<File

 				RelativePath="..\..\..\src\cache\ftcache.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\ftdebug.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

+				<FileConfiguration>

 					<Tool

 						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

 						DisableLanguageExtensions="false"

 					/>

 				</FileConfiguration>

@@ -5293,1710 +3351,18 @@
 			<File

 				RelativePath="..\..\..\src\base\ftglyph.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\gzip\ftgzip.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftinit.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\lzw\ftlzw.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftstroke.c"

@@ -7005,856 +3371,10 @@
 			<File

 				RelativePath="..\..\..\src\base\ftsystem.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\smooth\smooth.c"

 				>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<Filter

 				Name="FT_MODULES"

@@ -7872,443 +3392,12 @@
 					>

 				</File>

 				<File

-					RelativePath="..\..\..\src\base\ftfntfmt.c"

-					>

-				</File>

-				<File

 					RelativePath="..\..\..\src\base\ftgxval.c"

 					>

 				</File>

 				<File

-					RelativePath="..\..\..\src\base\ftlcdfil.c"

-					>

-				</File>

-				<File

 					RelativePath="..\..\..\src\base\ftmm.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\base\ftotval.c"

@@ -8337,5126 +3426,50 @@
 				<File

 					RelativePath="..\..\..\src\pcf\pcf.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\pfr\pfr.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\psaux\psaux.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\pshinter\pshinter.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\psnames\psmodule.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\raster\raster.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\sfnt\sfnt.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\truetype\truetype.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\type1\type1.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\cid\type1cid.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\type42\type42.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\winfonts\winfnt.c"

 					>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 			</Filter>

 		</Filter>

diff --git a/builds/wince/vc2008-ce/index.html b/builds/wince/vc2008-ce/index.html
index 18f2a48..f7a3583 100644
--- a/builds/wince/vc2008-ce/index.html
+++ b/builds/wince/vc2008-ce/index.html
@@ -21,14 +21,14 @@
   <li>PPC/SP WM6 (Windows Mobile 6)</li>
 </ul>
 
-It compiles the following libraries from the FreeType 2.9 sources:</p>
+It compiles the following libraries from the FreeType 2.9.1 sources:</p>
 
 <ul>
   <pre>
-    freetype29.lib     - release build; single threaded
-    freetype29_D.lib   - debug build;   single threaded
-    freetype29MT.lib   - release build; multi-threaded
-    freetype29MT_D.lib - debug build;   multi-threaded</pre>
+    freetype291.lib     - release build; single threaded
+    freetype291_D.lib   - debug build;   single threaded
+    freetype291MT.lib   - release build; multi-threaded
+    freetype291MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
diff --git a/builds/windows/detect.mk b/builds/windows/detect.mk
index b047e02..05b0e6a 100644
--- a/builds/windows/detect.mk
+++ b/builds/windows/detect.mk
@@ -95,22 +95,22 @@
 
   ifneq ($(findstring list,$(MAKECMDGOALS)),)  # test for the "list" target
     dump_target_list:
-	    @echo ÿ
-	    @echo $(PROJECT_TITLE) build system -- supported compilers
-	    @echo ÿ
-	    @echo Several command-line compilers are supported on Win32:
-	    @echo ÿ
-	    @echo ÿÿmake setupÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgcc (with Mingw)
-	    @echo ÿÿmake setup visualcÿÿÿÿÿÿÿÿÿÿÿÿÿMicrosoft Visual C++
-	    @echo ÿÿmake setup bcc32ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBorland C/C++
-	    @echo ÿÿmake setup lccÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWin32-LCC
-	    @echo ÿÿmake setup intelcÿÿÿÿÿÿÿÿÿÿÿÿÿÿIntel C/C++
-	    @echo ÿ
+	    $(info )
+	    $(info $(PROJECT_TITLE) build system -- supported compilers)
+	    $(info )
+	    $(info Several command-line compilers are supported on Win32:)
+	    $(info )
+	    $(info $(empty)  make setup                     gcc (with Mingw))
+	    $(info $(empty)  make setup visualc             Microsoft Visual C++)
+	    $(info $(empty)  make setup bcc32               Borland C/C++)
+	    $(info $(empty)  make setup lcc                 Win32-LCC)
+	    $(info $(empty)  make setup intelc              Intel C/C++)
+	    $(info )
 
     setup: dump_target_list
     .PHONY: dump_target_list list
   else
-    setup: dos_setup
+    setup: std_setup
   endif
 
   # additionally, we provide hooks for various other compilers
@@ -118,64 +118,82 @@
   ifneq ($(findstring visualc,$(MAKECMDGOALS)),)     # Visual C/C++
     CONFIG_FILE := w32-vcc.mk
     CC          := cl
-    visualc: setup
+
     .PHONY: visualc
+    visualc: setup
+	    @cd .
   endif
 
   ifneq ($(findstring intelc,$(MAKECMDGOALS)),)      # Intel C/C++
     CONFIG_FILE := w32-intl.mk
     CC          := cl
-    visualc: setup
+
     .PHONY: intelc
+    visualc: setup
+	    @cd .
   endif
 
   ifneq ($(findstring watcom,$(MAKECMDGOALS)),)      # Watcom C/C++
     CONFIG_FILE := w32-wat.mk
     CC          := wcc386
-    watcom: setup
+
     .PHONY: watcom
+    watcom: setup
+	    @cd .
   endif
 
   ifneq ($(findstring visualage,$(MAKECMDGOALS)),)   # Visual Age C++
     CONFIG_FILE := w32-icc.mk
     CC          := icc
-    visualage: setup
+
     .PHONY: visualage
+    visualage: setup
+	    @cd .
   endif
 
   ifneq ($(findstring lcc,$(MAKECMDGOALS)),)         # LCC-Win32
     CONFIG_FILE := w32-lcc.mk
     CC          := lcc
-    lcc: setup
+
     .PHONY: lcc
+    lcc: setup
+	    @cd .
   endif
 
   ifneq ($(findstring mingw32,$(MAKECMDGOALS)),)     # mingw32
     CONFIG_FILE := w32-mingw32.mk
     CC          := gcc
-    mingw32: setup
+
     .PHONY: mingw32
+    mingw32: setup
+	    @cd .
   endif
 
   ifneq ($(findstring bcc32,$(MAKECMDGOALS)),)       # Borland C++
     CONFIG_FILE := w32-bcc.mk
     CC          := bcc32
-    bcc32: setup
+
     .PHONY: bcc32
+    bcc32: setup
+	    @cd .
   endif
 
   ifneq ($(findstring devel-bcc,$(MAKECMDGOALS)),)   # development target
     CONFIG_FILE := w32-bccd.mk
     CC          := bcc32
-    devel-bcc: setup
+
     .PHONY: devel-bcc
+    devel-bcc: setup
+	    @cd .
   endif
 
   ifneq ($(findstring devel-gcc,$(MAKECMDGOALS)),)   # development target
     CONFIG_FILE := w32-dev.mk
     CC          := gcc
-    devel-gcc: setup
+
     .PHONY: devel-gcc
+    devel-gcc: setup
+	    @cd .
   endif
 
 endif   # test PLATFORM windows
diff --git a/builds/windows/vc2005/freetype.vcproj b/builds/windows/vc2005/freetype.vcproj
index 386d79d..b1e2ae6 100644
--- a/builds/windows/vc2005/freetype.vcproj
+++ b/builds/windows/vc2005/freetype.vcproj
@@ -16,7 +16,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype29.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -33,7 +33,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype29MT.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291MT.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -50,7 +50,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype29ST.lib" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291ST.lib" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -67,7 +67,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype29_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -84,7 +84,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype29ST_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291ST_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -101,7 +101,7 @@
       <Tool Name="VCManagedResourceCompilerTool" />

       <Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />

       <Tool Name="VCPreLinkEventTool" />

-      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype29MT_D.lib" SuppressStartupBanner="true" />

+      <Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype291MT_D.lib" SuppressStartupBanner="true" />

       <Tool Name="VCALinkTool" />

       <Tool Name="VCXDCMakeTool" />

       <Tool Name="VCBscMakeTool" />

@@ -116,105 +116,18 @@
       <File RelativePath="..\..\..\src\autofit\autofit.c">

       </File>

       <File RelativePath="..\..\..\src\bdf\bdf.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\cff\cff.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftbase.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftbitmap.c">

       </File>

       <File RelativePath="..\..\..\src\cache\ftcache.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\ftdebug.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" DisableLanguageExtensions="false" />

+        <FileConfiguration>

+          <Tool Name="VCCLCompilerTool" DisableLanguageExtensions="false" />

         </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftfstype.c">

@@ -222,126 +135,18 @@
       <File RelativePath="..\..\..\src\base\ftgasp.c">

       </File>

       <File RelativePath="..\..\..\src\base\ftglyph.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\gzip\ftgzip.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftinit.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\lzw\ftlzw.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\base\ftstroke.c">

       </File>

       <File RelativePath="..\..\..\src\base\ftsystem.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <File RelativePath="..\..\..\src\smooth\smooth.c">

-        <FileConfiguration Name="Release|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Release Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Singlethreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

-        <FileConfiguration Name="Debug Multithreaded|Win32">

-          <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-        </FileConfiguration>

       </File>

       <Filter Name="FT_MODULES">

         <File RelativePath="..\..\..\src\base\ftbdf.c">

@@ -350,27 +155,7 @@
         </File>

         <File RelativePath="..\..\..\src\base\ftcid.c">

         </File>

-        <File RelativePath="..\..\..\src\base\ftfntfmt.c">

-        </File>

         <File RelativePath="..\..\..\src\base\ftmm.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\base\ftpfr.c">

         </File>

@@ -380,8 +165,6 @@
         </File>

         <File RelativePath="..\..\..\src\base\ftwinfnt.c">

         </File>

-        <File RelativePath="..\..\..\src\base\ftlcdfil.c">

-        </File>

         <File RelativePath="..\..\..\src\base\ftgxval.c">

         </File>

         <File RelativePath="..\..\..\src\base\ftotval.c">

@@ -389,244 +172,28 @@
         <File RelativePath="..\..\..\src\base\ftpatent.c">

         </File>

         <File RelativePath="..\..\..\src\pcf\pcf.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\pfr\pfr.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\psaux\psaux.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\pshinter\pshinter.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\psnames\psmodule.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\raster\raster.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\sfnt\sfnt.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\truetype\truetype.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\type1\type1.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\cid\type1cid.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\type42\type42.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

         <File RelativePath="..\..\..\src\winfonts\winfnt.c">

-          <FileConfiguration Name="Release|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Release Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="2" AdditionalIncludeDirectories="" PreprocessorDefinitions="" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Singlethreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

-          <FileConfiguration Name="Debug Multithreaded|Win32">

-            <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" PreprocessorDefinitions="" BasicRuntimeChecks="3" />

-          </FileConfiguration>

         </File>

       </Filter>

     </Filter>

@@ -647,4 +214,4 @@
   </Files>

   <Globals>

   </Globals>

-</VisualStudioProject>
\ No newline at end of file
+</VisualStudioProject>

diff --git a/builds/windows/vc2005/index.html b/builds/windows/vc2005/index.html
index a25e674..c5e182e 100644
--- a/builds/windows/vc2005/index.html
+++ b/builds/windows/vc2005/index.html
@@ -11,14 +11,14 @@
 
 <p>This directory contains project files for Visual C++, named
 <tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>.  It
-compiles the following libraries from the FreeType 2.9 sources:</p>
+compiles the following libraries from the FreeType 2.9.1 sources:</p>
 
 <ul>
   <pre>
-    freetype29.lib     - release build; single threaded
-    freetype29_D.lib   - debug build;   single threaded
-    freetype29MT.lib   - release build; multi-threaded
-    freetype29MT_D.lib - debug build;   multi-threaded</pre>
+    freetype291.lib     - release build; single threaded
+    freetype291_D.lib   - debug build;   single threaded
+    freetype291MT.lib   - release build; multi-threaded
+    freetype291MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
diff --git a/builds/windows/vc2008/freetype.vcproj b/builds/windows/vc2008/freetype.vcproj
index f2d1fe7..f526cd2 100644
--- a/builds/windows/vc2008/freetype.vcproj
+++ b/builds/windows/vc2008/freetype.vcproj
@@ -70,7 +70,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\win32\vc2008\freetype29.lib"

+				OutputFile="..\..\..\objs\win32\vc2008\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -145,7 +145,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\win32\vc2008\freetype29MT.lib"

+				OutputFile="..\..\..\objs\win32\vc2008\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -220,7 +220,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\win32\vc2008\freetype29ST.lib"

+				OutputFile="..\..\..\objs\win32\vc2008\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -292,7 +292,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\win32\vc2008\freetype29_D.lib"

+				OutputFile="..\..\..\objs\win32\vc2008\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -365,7 +365,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\win32\vc2008\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\win32\vc2008\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -439,7 +439,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\win32\vc2008\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\win32\vc2008\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -473,203 +473,14 @@
 			<File

 				RelativePath="..\..\..\src\bdf\bdf.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\cff\cff.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftbase.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftbitmap.c"

@@ -678,139 +489,13 @@
 			<File

 				RelativePath="..\..\..\src\cache\ftcache.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\ftdebug.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

+				<FileConfiguration>

 					<Tool

 						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

 						DisableLanguageExtensions="false"

 					/>

 				</FileConfiguration>

@@ -826,270 +511,18 @@
 			<File

 				RelativePath="..\..\..\src\base\ftglyph.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\gzip\ftgzip.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftinit.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\lzw\ftlzw.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftstroke.c"

@@ -1098,136 +531,10 @@
 			<File

 				RelativePath="..\..\..\src\base\ftsystem.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\smooth\smooth.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<Filter

 				Name="FT_MODULES"

@@ -1245,75 +552,8 @@
 					>

 				</File>

 				<File

-					RelativePath="..\..\..\src\base\ftfntfmt.c"

-					>

-				</File>

-				<File

 					RelativePath="..\..\..\src\base\ftmm.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\base\ftpfr.c"

@@ -1332,10 +572,6 @@
 					>

 				</File>

 				<File

-					RelativePath="..\..\..\src\base\ftlcdfil.c"

-					>

-				</File>

-				<File

 					RelativePath="..\..\..\src\base\ftgxval.c"

 					>

 				</File>

@@ -1350,806 +586,50 @@
 				<File

 					RelativePath="..\..\..\src\pcf\pcf.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\pfr\pfr.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\psaux\psaux.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\pshinter\pshinter.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\psnames\psmodule.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\raster\raster.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\sfnt\sfnt.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\truetype\truetype.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\type1\type1.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\cid\type1cid.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\type42\type42.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\winfonts\winfnt.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 			</Filter>

 		</Filter>

diff --git a/builds/windows/vc2008/index.html b/builds/windows/vc2008/index.html
index e0fdf2d..25c6f9b 100644
--- a/builds/windows/vc2008/index.html
+++ b/builds/windows/vc2008/index.html
@@ -11,14 +11,14 @@
 
 <p>This directory contains project files for Visual C++, named
 <tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>.  It
-compiles the following libraries from the FreeType 2.9 sources:</p>
+compiles the following libraries from the FreeType 2.9.1 sources:</p>
 
 <ul>
   <pre>
-    freetype29.lib     - release build; single threaded
-    freetype29_D.lib   - debug build;   single threaded
-    freetype29MT.lib   - release build; multi-threaded
-    freetype29MT_D.lib - debug build;   multi-threaded</pre>
+    freetype291.lib     - release build; single threaded
+    freetype291_D.lib   - debug build;   single threaded
+    freetype291MT.lib   - release build; multi-threaded
+    freetype291MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
diff --git a/builds/windows/vc2010/freetype.vcxproj b/builds/windows/vc2010/freetype.vcxproj
index eaddcfd..7052c6c 100644
--- a/builds/windows/vc2010/freetype.vcxproj
+++ b/builds/windows/vc2010/freetype.vcxproj
@@ -34,35 +34,35 @@
       <Platform>x64</Platform>

     </ProjectConfiguration>

   </ItemGroup>

-    <!--

+  <!--

     Switch the PlatformToolset based on the Visual Studio Version

 -->

-<PropertyGroup>

+  <PropertyGroup>

     <!-- Assume Visual Studio 2010 / 4.0 as the default -->

     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">4.0</VisualStudioVersion>

-</PropertyGroup>

-<!-- Visual Studio 2010 (4.0) -->

-<PropertyGroup Condition="'$(VisualStudioVersion)' == '4.0'">

+  </PropertyGroup>

+  <!-- Visual Studio 2010 (4.0) -->

+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '4.0'">

     <PlatformToolset>v100</PlatformToolset>

-</PropertyGroup>

-<!-- Visual Studio 2013 (12.0) -->

-<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'">

+  </PropertyGroup>

+  <!-- Visual Studio 2013 (12.0) -->

+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'">

     <PlatformToolset>v120</PlatformToolset>

-</PropertyGroup>

-<!-- Visual Studio 2015 (14.0) -->

-<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'">

+  </PropertyGroup>

+  <!-- Visual Studio 2015 (14.0) -->

+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'">

     <PlatformToolset>v140</PlatformToolset>

-</PropertyGroup>

-<!-- Visual Studio 2017 (15.0) -->

-<PropertyGroup Condition="'$(VisualStudioVersion)' == '15.0'">

+  </PropertyGroup>

+  <!-- Visual Studio 2017 (15.0) -->

+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '15.0'">

     <PlatformToolset>v141</PlatformToolset>

-</PropertyGroup>

-<!--

+  </PropertyGroup>

+  <!--

     End of: Switch the PlatformToolset based on the Visual Studio Version

 -->

   <PropertyGroup Label="Globals">

-     <ProjectGuid>{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}</ProjectGuid>

-     <RootNamespace>FreeType</RootNamespace>

+    <ProjectGuid>{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}</ProjectGuid>

+    <RootNamespace>FreeType</RootNamespace>

   </PropertyGroup>

   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

@@ -121,7 +121,7 @@
     <ClCompile>

       <Optimization>Disabled</Optimization>

       <AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <DisableLanguageExtensions>true</DisableLanguageExtensions>

@@ -135,7 +135,7 @@
       <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <ResourceCompile>

-      <PreprocessorDefinitions>_DEBUG;_DLL;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>_DEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <Culture>0x0409</Culture>

     </ResourceCompile>

     <Lib>

@@ -149,7 +149,7 @@
     <ClCompile>

       <Optimization>Disabled</Optimization>

       <AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>

       <DisableLanguageExtensions>true</DisableLanguageExtensions>

@@ -163,7 +163,7 @@
       <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>

     </ClCompile>

     <ResourceCompile>

-      <PreprocessorDefinitions>_DEBUG;_DLL;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>_DEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <Culture>0x0409</Culture>

     </ResourceCompile>

     <Lib>

@@ -234,7 +234,7 @@
       <Optimization>MaxSpeed</Optimization>

       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>

       <AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <StringPooling>true</StringPooling>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

       <FunctionLevelLinking>true</FunctionLevelLinking>

@@ -258,7 +258,7 @@
       <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <ResourceCompile>

-      <PreprocessorDefinitions>NDEBUG;_DLL;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <Culture>0x0409</Culture>

     </ResourceCompile>

     <Lib>

@@ -274,7 +274,7 @@
       <Optimization>MaxSpeed</Optimization>

       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>

       <AdditionalIncludeDirectories>$(UserOptionDirectory);..\..\..\include;$(UserIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FT2_BUILD_LIBRARY;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <StringPooling>true</StringPooling>

       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>

       <FunctionLevelLinking>true</FunctionLevelLinking>

@@ -298,7 +298,7 @@
       <OmitFramePointers>true</OmitFramePointers>

     </ClCompile>

     <ResourceCompile>

-      <PreprocessorDefinitions>NDEBUG;_DLL;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

+      <PreprocessorDefinitions>NDEBUG;DLL_EXPORT;$(UserDefines);%(PreprocessorDefinitions)</PreprocessorDefinitions>

       <Culture>0x0409</Culture>

     </ResourceCompile>

     <Lib>

@@ -398,13 +398,11 @@
     <ClCompile Include="..\..\..\src\base\ftbdf.c" />

     <ClCompile Include="..\..\..\src\base\ftbitmap.c" />

     <ClCompile Include="..\..\..\src\base\ftcid.c" />

-    <ClCompile Include="..\..\..\src\base\ftfntfmt.c" />

     <ClCompile Include="..\..\..\src\base\ftfstype.c" />

     <ClCompile Include="..\..\..\src\base\ftgasp.c" />

     <ClCompile Include="..\..\..\src\base\ftglyph.c" />

     <ClCompile Include="..\..\..\src\base\ftgxval.c" />

     <ClCompile Include="..\..\..\src\base\ftinit.c" />

-    <ClCompile Include="..\..\..\src\base\ftlcdfil.c" />

     <ClCompile Include="..\..\..\src\base\ftmm.c" />

     <ClCompile Include="..\..\..\src\base\ftotval.c" />

     <ClCompile Include="..\..\..\src\base\ftpatent.c" />

diff --git a/builds/windows/vc2010/freetype.vcxproj.filters b/builds/windows/vc2010/freetype.vcxproj.filters
index 0be176b..345e1f1 100644
--- a/builds/windows/vc2010/freetype.vcxproj.filters
+++ b/builds/windows/vc2010/freetype.vcxproj.filters
@@ -95,9 +95,6 @@
     <ClCompile Include="..\..\..\src\base\ftcid.c">

       <Filter>Source Files\FT_MODULES</Filter>

     </ClCompile>

-    <ClCompile Include="..\..\..\src\base\ftfntfmt.c">

-      <Filter>Source Files\FT_MODULES</Filter>

-    </ClCompile>

     <ClCompile Include="..\..\..\src\base\ftfstype.c">

       <Filter>Source Files\FT_MODULES</Filter>

     </ClCompile>

@@ -110,9 +107,6 @@
     <ClCompile Include="..\..\..\src\base\ftgxval.c">

       <Filter>Source Files\FT_MODULES</Filter>

     </ClCompile>

-    <ClCompile Include="..\..\..\src\base\ftlcdfil.c">

-      <Filter>Source Files\FT_MODULES</Filter>

-    </ClCompile>

     <ClCompile Include="..\..\..\src\base\ftmm.c">

       <Filter>Source Files\FT_MODULES</Filter>

     </ClCompile>

@@ -139,23 +133,8 @@
     </ClCompile>

   </ItemGroup>

   <ItemGroup>

-    <ClInclude Include="..\..\..\include\ft2build.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\..\..\include\freetype\config\ftconfig.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\..\..\include\freetype\config\ftheader.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\..\..\include\freetype\config\ftmodule.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\..\..\include\freetype\config\ftoption.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

-    <ClInclude Include="..\..\..\include\freetype\config\ftstdlib.h">

-      <Filter>Header Files</Filter>

-    </ClInclude>

+    <ResourceCompile Include="..\..\..\src\base\ftver.rc">

+      <Filter>Source Files</Filter>

+    </ResourceCompile>

   </ItemGroup>

-</Project>

+</Project>
\ No newline at end of file
diff --git a/builds/windows/vc2010/index.html b/builds/windows/vc2010/index.html
index 8677511..634ea93 100644
--- a/builds/windows/vc2010/index.html
+++ b/builds/windows/vc2010/index.html
@@ -12,7 +12,7 @@
 <p>This directory contains solution and project files for
 Visual&nbsp;C++&nbsp;2010 or newer, named <tt>freetype.sln</tt>,
 and <tt>freetype.vcxproj</tt>.  It compiles the following libraries
-from the FreeType 2.9 sources:</p>
+from the FreeType 2.9.1 sources:</p>
 
 <ul>
   <li>freetype.dll using 'Release' or 'Debug' configurations</li>
@@ -33,7 +33,7 @@
 href="http://msdn.microsoft.com/library/dd393574%28v=vs.100%29.aspx">msbuild</a>.</p>
 
 <p>To link your executable with FreeType DLL, you may want to define
-FT2_DLLIMPORT so that the imported functions are appropriately
+DLL_IMPORT so that the imported functions are appropriately
 attributed with <tt>dllimport<tt>.</p>
 
 </body>
diff --git a/builds/windows/visualc/freetype.dsp b/builds/windows/visualc/freetype.dsp
index 76d6e91..dac3d25 100644
--- a/builds/windows/visualc/freetype.dsp
+++ b/builds/windows/visualc/freetype.dsp
@@ -54,7 +54,7 @@
 # ADD BSC32 /nologo

 LIB32=link.exe -lib

 # ADD BASE LIB32 /nologo

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291.lib"

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Debug"

 

@@ -78,7 +78,7 @@
 # ADD BSC32 /nologo

 LIB32=link.exe -lib

 # ADD BASE LIB32 /nologo

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29_D.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291_D.lib"

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Debug Multithreaded"

 

@@ -102,8 +102,8 @@
 # ADD BASE BSC32 /nologo

 # ADD BSC32 /nologo

 LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo /out:"lib\freetype29_D.lib"

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29MT_D.lib"

+# ADD BASE LIB32 /nologo /out:"lib\freetype291_D.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291MT_D.lib"

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Release Multithreaded"

 

@@ -126,8 +126,8 @@
 # ADD BASE BSC32 /nologo

 # ADD BSC32 /nologo

 LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo /out:"lib\freetype29.lib"

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29MT.lib"

+# ADD BASE LIB32 /nologo /out:"lib\freetype291.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291MT.lib"

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Release Singlethreaded"

 

@@ -151,8 +151,8 @@
 # ADD BASE BSC32 /nologo

 # ADD BSC32 /nologo

 LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype29.lib"

-# ADD LIB32 /out:"..\..\..\objs\freetype29ST.lib"

+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype291.lib"

+# ADD LIB32 /out:"..\..\..\objs\freetype291ST.lib"

 # SUBTRACT LIB32 /nologo

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Debug Singlethreaded"

@@ -177,8 +177,8 @@
 # ADD BASE BSC32 /nologo

 # ADD BSC32 /nologo

 LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype29_D.lib"

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29ST_D.lib"

+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype291_D.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291ST_D.lib"

 

 !ENDIF

 

@@ -200,17 +200,14 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\bdf\bdf.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\cff\cff.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftbase.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -230,14 +227,6 @@
 # End Source File

 # Begin Source File

 

-SOURCE=..\..\..\src\base\ftfntfmt.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\..\src\base\ftlcdfil.c

-# End Source File

-# Begin Source File

-

 SOURCE=..\..\..\src\base\ftpatent.c

 # End Source File

 # Begin Source File

@@ -251,18 +240,15 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\cache\ftcache.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\ftdebug.c

 # ADD CPP /Ze

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftglyph.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -275,7 +261,6 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftinit.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -284,7 +269,6 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftmm.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -305,7 +289,6 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftsystem.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -318,7 +301,6 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\pcf\pcf.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -327,57 +309,46 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\psaux\psaux.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\pshinter\pshinter.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\psnames\psmodule.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\raster\raster.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\sfnt\sfnt.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\smooth\smooth.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\truetype\truetype.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\type1\type1.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\cid\type1cid.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\type42\type42.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\winfonts\winfnt.c

-# SUBTRACT CPP /Fr

 # End Source File

 # End Group

 # Begin Group "Header Files"

diff --git a/builds/windows/visualc/freetype.vcproj b/builds/windows/visualc/freetype.vcproj
index 6c0b761..dd0c418 100644
--- a/builds/windows/visualc/freetype.vcproj
+++ b/builds/windows/visualc/freetype.vcproj
@@ -69,7 +69,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29.lib"

+				OutputFile="..\..\..\objs\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -144,7 +144,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT.lib"

+				OutputFile="..\..\..\objs\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -219,7 +219,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST.lib"

+				OutputFile="..\..\..\objs\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -291,7 +291,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29_D.lib"

+				OutputFile="..\..\..\objs\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -364,7 +364,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -438,7 +438,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -472,203 +472,14 @@
 			<File

 				RelativePath="..\..\..\src\bdf\bdf.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\cff\cff.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftbase.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftbitmap.c"

@@ -685,139 +496,13 @@
 			<File

 				RelativePath="..\..\..\src\cache\ftcache.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\ftdebug.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

+				<FileConfiguration>

 					<Tool

 						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

 						DisableLanguageExtensions="false"

 					/>

 				</FileConfiguration>

@@ -825,270 +510,18 @@
 			<File

 				RelativePath="..\..\..\src\base\ftglyph.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\gzip\ftgzip.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftinit.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\lzw\ftlzw.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftstroke.c"

@@ -1097,136 +530,10 @@
 			<File

 				RelativePath="..\..\..\src\base\ftsystem.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\smooth\smooth.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

 			</File>

 			<Filter

 				Name="FT_MODULES"

@@ -1244,75 +551,8 @@
 					>

 				</File>

 				<File

-					RelativePath="..\..\..\src\base\ftfntfmt.c"

-					>

-				</File>

-				<File

 					RelativePath="..\..\..\src\base\ftmm.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\base\ftpfr.c"

@@ -1331,10 +571,6 @@
 					>

 				</File>

 				<File

-					RelativePath="..\..\..\src\base\ftlcdfil.c"

-					>

-				</File>

-				<File

 					RelativePath="..\..\..\src\base\ftgxval.c"

 					>

 				</File>

@@ -1349,806 +585,50 @@
 				<File

 					RelativePath="..\..\..\src\pcf\pcf.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\pfr\pfr.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\psaux\psaux.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\pshinter\pshinter.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\psnames\psmodule.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\raster\raster.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\sfnt\sfnt.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\truetype\truetype.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\type1\type1.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\cid\type1cid.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\type42\type42.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\winfonts\winfnt.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

 				</File>

 			</Filter>

 		</Filter>

diff --git a/builds/windows/visualc/index.html b/builds/windows/visualc/index.html
index 32cebc6..c0611d2 100644
--- a/builds/windows/visualc/index.html
+++ b/builds/windows/visualc/index.html
@@ -11,14 +11,14 @@
 
 <p>This directory contains project files for Visual C++, named
 <tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt>.  It
-compiles the following libraries from the FreeType 2.9 sources:</p>
+compiles the following libraries from the FreeType 2.9.1 sources:</p>
 
 <ul>
   <pre>
-    freetype29.lib     - release build; single threaded
-    freetype29_D.lib   - debug build;   single threaded
-    freetype29MT.lib   - release build; multi-threaded
-    freetype29MT_D.lib - debug build;   multi-threaded</pre>
+    freetype291.lib     - release build; single threaded
+    freetype291_D.lib   - debug build;   single threaded
+    freetype291MT.lib   - release build; multi-threaded
+    freetype291MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
diff --git a/builds/windows/visualce/freetype.dsp b/builds/windows/visualce/freetype.dsp
index 19d7c45..5fe2b5a 100644
--- a/builds/windows/visualce/freetype.dsp
+++ b/builds/windows/visualce/freetype.dsp
@@ -54,7 +54,7 @@
 # ADD BSC32 /nologo

 LIB32=link.exe -lib

 # ADD BASE LIB32 /nologo

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291.lib"

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Debug"

 

@@ -78,7 +78,7 @@
 # ADD BSC32 /nologo

 LIB32=link.exe -lib

 # ADD BASE LIB32 /nologo

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29_D.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291_D.lib"

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Debug Multithreaded"

 

@@ -102,8 +102,8 @@
 # ADD BASE BSC32 /nologo

 # ADD BSC32 /nologo

 LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo /out:"lib\freetype29_D.lib"

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29MT_D.lib"

+# ADD BASE LIB32 /nologo /out:"lib\freetype291_D.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291MT_D.lib"

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Release Multithreaded"

 

@@ -126,8 +126,8 @@
 # ADD BASE BSC32 /nologo

 # ADD BSC32 /nologo

 LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo /out:"lib\freetype29.lib"

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29MT.lib"

+# ADD BASE LIB32 /nologo /out:"lib\freetype291.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291MT.lib"

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Release Singlethreaded"

 

@@ -151,8 +151,8 @@
 # ADD BASE BSC32 /nologo

 # ADD BSC32 /nologo

 LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype29.lib"

-# ADD LIB32 /out:"..\..\..\objs\freetype29ST.lib"

+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype291.lib"

+# ADD LIB32 /out:"..\..\..\objs\freetype291ST.lib"

 # SUBTRACT LIB32 /nologo

 

 !ELSEIF  "$(CFG)" == "freetype - Win32 Debug Singlethreaded"

@@ -177,8 +177,8 @@
 # ADD BASE BSC32 /nologo

 # ADD BSC32 /nologo

 LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype29_D.lib"

-# ADD LIB32 /nologo /out:"..\..\..\objs\freetype29ST_D.lib"

+# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype291_D.lib"

+# ADD LIB32 /nologo /out:"..\..\..\objs\freetype291ST_D.lib"

 

 !ENDIF

 

@@ -200,17 +200,14 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\bdf\bdf.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\cff\cff.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftbase.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -230,10 +227,6 @@
 # End Source File

 # Begin Source File

 

-SOURCE=..\..\..\src\base\ftfntfmt.c

-# End Source File

-# Begin Source File

-

 SOURCE=..\..\..\src\base\ftfstype.c

 # End Source File

 # Begin Source File

@@ -243,18 +236,15 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\cache\ftcache.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\ftdebug.c

 # ADD CPP /Ze

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftglyph.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -267,11 +257,6 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftinit.c

-# SUBTRACT CPP /Fr

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\..\src\base\ftlcdfil.c

 # End Source File

 # Begin Source File

 

@@ -280,7 +265,6 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftmm.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -305,7 +289,6 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\base\ftsystem.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -318,7 +301,6 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\pcf\pcf.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

@@ -327,57 +309,46 @@
 # Begin Source File

 

 SOURCE=..\..\..\src\psaux\psaux.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\pshinter\pshinter.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\psnames\psmodule.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\raster\raster.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\sfnt\sfnt.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\smooth\smooth.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\truetype\truetype.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\type1\type1.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\cid\type1cid.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\type42\type42.c

-# SUBTRACT CPP /Fr

 # End Source File

 # Begin Source File

 

 SOURCE=..\..\..\src\winfonts\winfnt.c

-# SUBTRACT CPP /Fr

 # End Source File

 # End Group

 # Begin Group "Header Files"

diff --git a/builds/windows/visualce/freetype.vcproj b/builds/windows/visualce/freetype.vcproj
index d08cd8e..b797311 100644
--- a/builds/windows/visualce/freetype.vcproj
+++ b/builds/windows/visualce/freetype.vcproj
@@ -87,7 +87,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29.lib"

+				OutputFile="..\..\..\objs\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -162,7 +162,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT.lib"

+				OutputFile="..\..\..\objs\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -237,7 +237,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST.lib"

+				OutputFile="..\..\..\objs\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -309,7 +309,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29_D.lib"

+				OutputFile="..\..\..\objs\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -382,7 +382,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -456,7 +456,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -534,7 +534,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29.lib"

+				OutputFile="..\..\..\objs\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -619,7 +619,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT.lib"

+				OutputFile="..\..\..\objs\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -704,7 +704,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST.lib"

+				OutputFile="..\..\..\objs\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -785,7 +785,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29_D.lib"

+				OutputFile="..\..\..\objs\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -867,7 +867,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -950,7 +950,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1036,7 +1036,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29.lib"

+				OutputFile="..\..\..\objs\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1121,7 +1121,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT.lib"

+				OutputFile="..\..\..\objs\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1206,7 +1206,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST.lib"

+				OutputFile="..\..\..\objs\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -1287,7 +1287,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29_D.lib"

+				OutputFile="..\..\..\objs\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1369,7 +1369,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1452,7 +1452,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1538,7 +1538,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29.lib"

+				OutputFile="..\..\..\objs\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1623,7 +1623,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT.lib"

+				OutputFile="..\..\..\objs\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1708,7 +1708,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST.lib"

+				OutputFile="..\..\..\objs\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -1789,7 +1789,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29_D.lib"

+				OutputFile="..\..\..\objs\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1871,7 +1871,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -1954,7 +1954,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2040,7 +2040,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29.lib"

+				OutputFile="..\..\..\objs\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2125,7 +2125,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT.lib"

+				OutputFile="..\..\..\objs\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2210,7 +2210,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST.lib"

+				OutputFile="..\..\..\objs\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -2291,7 +2291,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29_D.lib"

+				OutputFile="..\..\..\objs\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2373,7 +2373,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2456,7 +2456,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2542,7 +2542,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29.lib"

+				OutputFile="..\..\..\objs\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2627,7 +2627,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT.lib"

+				OutputFile="..\..\..\objs\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2712,7 +2712,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST.lib"

+				OutputFile="..\..\..\objs\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -2793,7 +2793,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29_D.lib"

+				OutputFile="..\..\..\objs\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2875,7 +2875,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -2958,7 +2958,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3044,7 +3044,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29.lib"

+				OutputFile="..\..\..\objs\freetype291.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3129,7 +3129,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT.lib"

+				OutputFile="..\..\..\objs\freetype291MT.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3214,7 +3214,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST.lib"

+				OutputFile="..\..\..\objs\freetype291ST.lib"

 			/>

 			<Tool

 				Name="VCALinkTool"

@@ -3295,7 +3295,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29_D.lib"

+				OutputFile="..\..\..\objs\freetype291_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3377,7 +3377,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29ST_D.lib"

+				OutputFile="..\..\..\objs\freetype291ST_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3460,7 +3460,7 @@
 			/>

 			<Tool

 				Name="VCLibrarianTool"

-				OutputFile="..\..\..\objs\freetype29MT_D.lib"

+				OutputFile="..\..\..\objs\freetype291MT_D.lib"

 				SuppressStartupBanner="true"

 			/>

 			<Tool

@@ -3502,1283 +3502,14 @@
 			<File

 				RelativePath="..\..\..\src\bdf\bdf.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\cff\cff.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftbase.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftbitmap.c"

@@ -4791,895 +3522,13 @@
 			<File

 				RelativePath="..\..\..\src\cache\ftcache.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\ftdebug.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

+				<FileConfiguration>

 					<Tool

 						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						DisableLanguageExtensions="false"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

 						DisableLanguageExtensions="false"

 					/>

 				</FileConfiguration>

@@ -5691,1710 +3540,18 @@
 			<File

 				RelativePath="..\..\..\src\base\ftglyph.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\gzip\ftgzip.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftinit.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\lzw\ftlzw.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\base\ftstroke.c"

@@ -7403,856 +3560,10 @@
 			<File

 				RelativePath="..\..\..\src\base\ftsystem.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<File

 				RelativePath="..\..\..\src\smooth\smooth.c"

 				>

-				<FileConfiguration

-					Name="Release|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Win32"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-						BasicRuntimeChecks="3"

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="2"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

-				<FileConfiguration

-					Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-					>

-					<Tool

-						Name="VCCLCompilerTool"

-						Optimization="0"

-						AdditionalIncludeDirectories=""

-						PreprocessorDefinitions=""

-					/>

-				</FileConfiguration>

 			</File>

 			<Filter

 				Name="FT_MODULES"

@@ -8270,435 +3581,8 @@
 					>

 				</File>

 				<File

-					RelativePath="..\..\..\src\base\ftfntfmt.c"

-					>

-				</File>

-				<File

 					RelativePath="..\..\..\src\base\ftmm.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\base\ftpfr.c"

@@ -8717,10 +3601,6 @@
 					>

 				</File>

 				<File

-					RelativePath="..\..\..\src\base\ftlcdfil.c"

-					>

-				</File>

-				<File

 					RelativePath="..\..\..\src\base\ftgxval.c"

 					>

 				</File>

@@ -8735,5126 +3615,50 @@
 				<File

 					RelativePath="..\..\..\src\pcf\pcf.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\pfr\pfr.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\psaux\psaux.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\pshinter\pshinter.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\psnames\psmodule.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\raster\raster.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\sfnt\sfnt.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\truetype\truetype.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\type1\type1.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\cid\type1cid.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\type42\type42.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 				<File

 					RelativePath="..\..\..\src\winfonts\winfnt.c"

 					>

-					<FileConfiguration

-						Name="Release|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Win32"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-							BasicRuntimeChecks="3"

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Pocket PC 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Smartphone 2003 (ARMV4)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Professional SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Release Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="2"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Singlethreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

-					<FileConfiguration

-						Name="Debug Multithreaded|Windows Mobile 6 Standard SDK (ARMV4I)"

-						>

-						<Tool

-							Name="VCCLCompilerTool"

-							Optimization="0"

-							AdditionalIncludeDirectories=""

-							PreprocessorDefinitions=""

-						/>

-					</FileConfiguration>

 				</File>

 			</Filter>

 		</Filter>

diff --git a/builds/windows/visualce/index.html b/builds/windows/visualce/index.html
index 3b3390a..d5a3ca3 100644
--- a/builds/windows/visualce/index.html
+++ b/builds/windows/visualce/index.html
@@ -21,14 +21,14 @@
   <li>PPC/SP WM6 (Windows Mobile 6)</li>
 </ul>
 
-It compiles the following libraries from the FreeType 2.9 sources:</p>
+It compiles the following libraries from the FreeType 2.9.1 sources:</p>
 
 <ul>
   <pre>
-    freetype29.lib     - release build; single threaded
-    freetype29_D.lib   - debug build;   single threaded
-    freetype29MT.lib   - release build; multi-threaded
-    freetype29MT_D.lib - debug build;   multi-threaded</pre>
+    freetype291.lib     - release build; single threaded
+    freetype291_D.lib   - debug build;   single threaded
+    freetype291MT.lib   - release build; multi-threaded
+    freetype291MT_D.lib - debug build;   multi-threaded</pre>
 </ul>
 
 <p>Be sure to extract the files with the Windows (CR+LF) line endings.  ZIP
diff --git a/configure b/configure
index 8ee0d40..f9d2186 100755
--- a/configure
+++ b/configure
@@ -29,7 +29,7 @@
 fi
 
 if test "x`$MAKE -v 2>/dev/null | egrep 'GNU|makepp'`" = x; then
-  echo "GNU make (>= 3.80) or makepp (>= 1.19) is required to build FreeType2." >&2
+  echo "GNU make (>= 3.81) or makepp (>= 2.0) is required to build FreeType2." >&2
   echo "Please try" >&2
   echo >&2
   echo "  MAKE=<GNU make command name> $0" >&2
diff --git a/devel/ft2build.h b/devel/ft2build.h
index 1d17141..bd4dddb 100644
--- a/devel/ft2build.h
+++ b/devel/ft2build.h
@@ -1,29 +1,29 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ft2build.h                                                             */
-/*                                                                         */
-/*    FreeType 2 build and setup macros (development version).             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ft2build.h
+ *
+ *   FreeType 2 build and setup macros (development version).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
  /*
-  *  This is a development version of <ft2build.h> to build the library in
-  *  debug mode.  Its only difference to the default version is that it
-  *  includes a local `ftoption.h' header file with different settings for
-  *  many configuration macros.
+  * This is a development version of <ft2build.h> to build the library in
+  * debug mode.  Its only difference to the default version is that it
+  * includes a local `ftoption.h' header file with different settings for
+  * many configuration macros.
   *
-  *  To use it, simply ensure that the directory containing this file is
-  *  scanned by the compiler before the default FreeType header directory.
+  * To use it, simply ensure that the directory containing this file is
+  * scanned by the compiler before the default FreeType header directory.
   *
   */
 
diff --git a/devel/ftoption.h b/devel/ftoption.h
index 1b4619e..c434ac1 100644
--- a/devel/ftoption.h
+++ b/devel/ftoption.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftoption.h (for development)                                           */
-/*                                                                         */
-/*    User-selectable configuration macros (specification only).           */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftoption.h (for development)
+ *
+ *   User-selectable configuration macros (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTOPTION_H_
@@ -25,45 +25,47 @@
 
 FT_BEGIN_HEADER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* This file contains the default configuration macro definitions for    */
-  /* a standard build of the FreeType library.  There are three ways to    */
-  /* use this file to build project-specific versions of the library:      */
-  /*                                                                       */
-  /*  - You can modify this file by hand, but this is not recommended in   */
-  /*    cases where you would like to build several versions of the        */
-  /*    library from a single source directory.                            */
-  /*                                                                       */
-  /*  - You can put a copy of this file in your build directory, more      */
-  /*    precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD'   */
-  /*    is the name of a directory that is included _before_ the FreeType  */
-  /*    include path during compilation.                                   */
-  /*                                                                       */
-  /*    The default FreeType Makefiles and Jamfiles use the build          */
-  /*    directory `builds/<system>' by default, but you can easily change  */
-  /*    that for your own projects.                                        */
-  /*                                                                       */
-  /*  - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it    */
-  /*    slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to       */
-  /*    locate this file during the build.  For example,                   */
-  /*                                                                       */
-  /*      #define FT_CONFIG_OPTIONS_H  <myftoptions.h>                     */
-  /*      #include <freetype/config/ftheader.h>                            */
-  /*                                                                       */
-  /*    will use `$BUILD/myftoptions.h' instead of this file for macro     */
-  /*    definitions.                                                       */
-  /*                                                                       */
-  /*    Note also that you can similarly pre-define the macro              */
-  /*    FT_CONFIG_MODULES_H used to locate the file listing of the modules */
-  /*    that are statically linked to the library at compile time.  By     */
-  /*    default, this file is <freetype/config/ftmodule.h>.                */
-  /*                                                                       */
-  /* We highly recommend using the third method whenever possible.         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                USER-SELECTABLE CONFIGURATION MACROS
+   *
+   * This file contains the default configuration macro definitions for
+   * a standard build of the FreeType library.  There are three ways to
+   * use this file to build project-specific versions of the library:
+   *
+   * - You can modify this file by hand, but this is not recommended in
+   *   cases where you would like to build several versions of the
+   *   library from a single source directory.
+   *
+   * - You can put a copy of this file in your build directory, more
+   *   precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD'
+   *   is the name of a directory that is included _before_ the FreeType
+   *   include path during compilation.
+   *
+   *   The default FreeType Makefiles and Jamfiles use the build
+   *   directory `builds/<system>' by default, but you can easily change
+   *   that for your own projects.
+   *
+   * - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it
+   *   slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to
+   *   locate this file during the build.  For example,
+   *
+   *   {
+   *     #define FT_CONFIG_OPTIONS_H  <myftoptions.h>
+   *     #include <freetype/config/ftheader.h>
+   *   }
+   *
+   *   will use `$BUILD/myftoptions.h' instead of this file for macro
+   *   definitions.
+   *
+   *   Note also that you can similarly pre-define the macro
+   *   FT_CONFIG_MODULES_H used to locate the file listing of the modules
+   *   that are statically linked to the library at compile time.  By
+   *   default, this file is <freetype/config/ftmodule.h>.
+   *
+   * We highly recommend using the third method whenever possible.
+   *
+   */
 
 
   /*************************************************************************/
@@ -75,428 +77,427 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* If you enable this configuration option, FreeType recognizes an       */
-  /* environment variable called `FREETYPE_PROPERTIES', which can be used  */
-  /* to control the various font drivers and modules.  The controllable    */
-  /* properties are listed in the section `Controlling FreeType Modules'   */
-  /* in the reference's table of contents; currently there are properties  */
-  /* for the auto-hinter (file `ftautoh.h'), CFF (file `ftcffdrv.h'),      */
-  /* TrueType (file `ftttdrv.h'), and PCF (file `ftpcfdrv.h').             */
-  /*                                                                       */
-  /* `FREETYPE_PROPERTIES' has the following syntax form (broken here into */
-  /* multiple lines for better readability).                               */
-  /*                                                                       */
-  /*   <optional whitespace>                                               */
-  /*   <module-name1> ':'                                                  */
-  /*   <property-name1> '=' <property-value1>                              */
-  /*   <whitespace>                                                        */
-  /*   <module-name2> ':'                                                  */
-  /*   <property-name2> '=' <property-value2>                              */
-  /*   ...                                                                 */
-  /*                                                                       */
-  /* Example:                                                              */
-  /*                                                                       */
-  /*   FREETYPE_PROPERTIES=truetype:interpreter-version=35 \               */
-  /*                       cff:no-stem-darkening=1 \                       */
-  /*                       autofitter:warping=1                            */
-  /*                                                                       */
+  /*#************************************************************************
+   *
+   * If you enable this configuration option, FreeType recognizes an
+   * environment variable called `FREETYPE_PROPERTIES', which can be used to
+   * control the various font drivers and modules.  The controllable
+   * properties are listed in the section @properties.
+   *
+   * You have to undefine this configuration option on platforms that lack
+   * the concept of environment variables (and thus don't have the `getenv'
+   * function), for example Windows CE.
+   *
+   * `FREETYPE_PROPERTIES' has the following syntax form (broken here into
+   * multiple lines for better readability).
+   *
+   * {
+   *   <optional whitespace>
+   *   <module-name1> ':'
+   *   <property-name1> '=' <property-value1>
+   *   <whitespace>
+   *   <module-name2> ':'
+   *   <property-name2> '=' <property-value2>
+   *   ...
+   * }
+   *
+   * Example:
+   *
+   * {
+   *   FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
+   *                       cff:no-stem-darkening=1 \
+   *                       autofitter:warping=1
+   * }
+   *
+   */
 #define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Uncomment the line below if you want to activate LCD rendering        */
-  /* technology similar to ClearType in this build of the library.  This   */
-  /* technology triples the resolution in the direction color subpixels.   */
-  /* To mitigate color fringes inherent to this technology, you also need  */
-  /* to explicitly set up LCD filtering.                                   */
-  /*                                                                       */
-  /* Note that this feature is covered by several Microsoft patents        */
-  /* and should not be activated in any default build of the library.      */
-  /* When this macro is not defined, FreeType offers alternative LCD       */
-  /* rendering technology that produces excellent output without LCD       */
-  /* filtering.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Uncomment the line below if you want to activate LCD rendering
+   * technology similar to ClearType in this build of the library.  This
+   * technology triples the resolution in the direction color subpixels.
+   * To mitigate color fringes inherent to this technology, you also need
+   * to explicitly set up LCD filtering.
+   *
+   * Note that this feature is covered by several Microsoft patents
+   * and should not be activated in any default build of the library.
+   * When this macro is not defined, FreeType offers alternative LCD
+   * rendering technology that produces excellent output without LCD
+   * filtering.
+   */
 /* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Many compilers provide a non-ANSI 64-bit data type that can be used   */
-  /* by FreeType to speed up some computations.  However, this will create */
-  /* some problems when compiling the library in strict ANSI mode.         */
-  /*                                                                       */
-  /* For this reason, the use of 64-bit integers is normally disabled when */
-  /* the __STDC__ macro is defined.  You can however disable this by       */
-  /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here.                 */
-  /*                                                                       */
-  /* For most compilers, this will only create compilation warnings when   */
-  /* building the library.                                                 */
-  /*                                                                       */
-  /* ObNote: The compiler-specific 64-bit integers are detected in the     */
-  /*         file `ftconfig.h' either statically or through the            */
-  /*         `configure' script on supported platforms.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Many compilers provide a non-ANSI 64-bit data type that can be used
+   * by FreeType to speed up some computations.  However, this will create
+   * some problems when compiling the library in strict ANSI mode.
+   *
+   * For this reason, the use of 64-bit integers is normally disabled when
+   * the __STDC__ macro is defined.  You can however disable this by
+   * defining the macro FT_CONFIG_OPTION_FORCE_INT64 here.
+   *
+   * For most compilers, this will only create compilation warnings when
+   * building the library.
+   *
+   * ObNote: The compiler-specific 64-bit integers are detected in the
+   *         file `ftconfig.h' either statically or through the
+   *         `configure' script on supported platforms.
+   */
 #undef FT_CONFIG_OPTION_FORCE_INT64
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* If this macro is defined, do not try to use an assembler version of   */
-  /* performance-critical functions (e.g. FT_MulFix).  You should only do  */
-  /* that to verify that the assembler function works properly, or to      */
-  /* execute benchmark tests of the various implementations.               */
+  /**************************************************************************
+   *
+   * If this macro is defined, do not try to use an assembler version of
+   * performance-critical functions (e.g. FT_MulFix).  You should only do
+   * that to verify that the assembler function works properly, or to
+   * execute benchmark tests of the various implementations.
+   */
 /* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* If this macro is defined, try to use an inlined assembler version of  */
-  /* the `FT_MulFix' function, which is a `hotspot' when loading and       */
-  /* hinting glyphs, and which should be executed as fast as possible.     */
-  /*                                                                       */
-  /* Note that if your compiler or CPU is not supported, this will default */
-  /* to the standard and portable implementation found in `ftcalc.c'.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * If this macro is defined, try to use an inlined assembler version of
+   * the `FT_MulFix' function, which is a `hotspot' when loading and
+   * hinting glyphs, and which should be executed as fast as possible.
+   *
+   * Note that if your compiler or CPU is not supported, this will default
+   * to the standard and portable implementation found in `ftcalc.c'.
+   */
 #define FT_CONFIG_OPTION_INLINE_MULFIX
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* LZW-compressed file support.                                          */
-  /*                                                                       */
-  /*   FreeType now handles font files that have been compressed with the  */
-  /*   `compress' program.  This is mostly used to parse many of the PCF   */
-  /*   files that come with various X11 distributions.  The implementation */
-  /*   uses NetBSD's `zopen' to partially uncompress the file on the fly   */
-  /*   (see src/lzw/ftgzip.c).                                             */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * LZW-compressed file support.
+   *
+   *   FreeType now handles font files that have been compressed with the
+   *   `compress' program.  This is mostly used to parse many of the PCF
+   *   files that come with various X11 distributions.  The implementation
+   *   uses NetBSD's `zopen' to partially uncompress the file on the fly
+   *   (see src/lzw/ftgzip.c).
+   *
+   *   Define this macro if you want to enable this `feature'.
+   */
 #define FT_CONFIG_OPTION_USE_LZW
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Gzip-compressed file support.                                         */
-  /*                                                                       */
-  /*   FreeType now handles font files that have been compressed with the  */
-  /*   `gzip' program.  This is mostly used to parse many of the PCF files */
-  /*   that come with XFree86.  The implementation uses `zlib' to          */
-  /*   partially uncompress the file on the fly (see src/gzip/ftgzip.c).   */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.  See also   */
-  /*   the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Gzip-compressed file support.
+   *
+   *   FreeType now handles font files that have been compressed with the
+   *   `gzip' program.  This is mostly used to parse many of the PCF files
+   *   that come with XFree86.  The implementation uses `zlib' to
+   *   partially uncompress the file on the fly (see src/gzip/ftgzip.c).
+   *
+   *   Define this macro if you want to enable this `feature'.  See also
+   *   the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below.
+   */
 #define FT_CONFIG_OPTION_USE_ZLIB
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ZLib library selection                                                */
-  /*                                                                       */
-  /*   This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined.  */
-  /*   It allows FreeType's `ftgzip' component to link to the system's     */
-  /*   installation of the ZLib library.  This is useful on systems like   */
-  /*   Unix or VMS where it generally is already available.                */
-  /*                                                                       */
-  /*   If you let it undefined, the component will use its own copy        */
-  /*   of the zlib sources instead.  These have been modified to be        */
-  /*   included directly within the component and *not* export external    */
-  /*   function names.  This allows you to link any program with FreeType  */
-  /*   _and_ ZLib without linking conflicts.                               */
-  /*                                                                       */
-  /*   Do not #undef this macro here since the build system might define   */
-  /*   it for certain configurations only.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ZLib library selection
+   *
+   *   This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined.
+   *   It allows FreeType's `ftgzip' component to link to the system's
+   *   installation of the ZLib library.  This is useful on systems like
+   *   Unix or VMS where it generally is already available.
+   *
+   *   If you let it undefined, the component will use its own copy
+   *   of the zlib sources instead.  These have been modified to be
+   *   included directly within the component and *not* export external
+   *   function names.  This allows you to link any program with FreeType
+   *   _and_ ZLib without linking conflicts.
+   *
+   *   Do not #undef this macro here since the build system might define
+   *   it for certain configurations only.
+   *
+   *   If you use a build system like cmake or the `configure' script,
+   *   options set by those programs have precendence, overwriting the
+   *   value here with the configured one.
+   */
 /* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Bzip2-compressed file support.                                        */
-  /*                                                                       */
-  /*   FreeType now handles font files that have been compressed with the  */
-  /*   `bzip2' program.  This is mostly used to parse many of the PCF      */
-  /*   files that come with XFree86.  The implementation uses `libbz2' to  */
-  /*   partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */
-  /*   Contrary to gzip, bzip2 currently is not included and need to use   */
-  /*   the system available bzip2 implementation.                          */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Bzip2-compressed file support.
+   *
+   *   FreeType now handles font files that have been compressed with the
+   *   `bzip2' program.  This is mostly used to parse many of the PCF
+   *   files that come with XFree86.  The implementation uses `libbz2' to
+   *   partially uncompress the file on the fly (see src/bzip2/ftbzip2.c).
+   *   Contrary to gzip, bzip2 currently is not included and need to use
+   *   the system available bzip2 implementation.
+   *
+   *   Define this macro if you want to enable this `feature'.
+   *
+   *   If you use a build system like cmake or the `configure' script,
+   *   options set by those programs have precendence, overwriting the
+   *   value here with the configured one.
+   */
 #define FT_CONFIG_OPTION_USE_BZIP2
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define to disable the use of file stream functions and types, FILE,   */
-  /* fopen() etc.  Enables the use of smaller system libraries on embedded */
-  /* systems that have multiple system libraries, some with or without     */
-  /* file stream support, in the cases where file stream support is not    */
-  /* necessary such as memory loading of font files.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define to disable the use of file stream functions and types, FILE,
+   * fopen() etc.  Enables the use of smaller system libraries on embedded
+   * systems that have multiple system libraries, some with or without
+   * file stream support, in the cases where file stream support is not
+   * necessary such as memory loading of font files.
+   */
 /* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PNG bitmap support.                                                   */
-  /*                                                                       */
-  /*   FreeType now handles loading color bitmap glyphs in the PNG format. */
-  /*   This requires help from the external libpng library.  Uncompressed  */
-  /*   color bitmaps do not need any external libraries and will be        */
-  /*   supported regardless of this configuration.                         */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * PNG bitmap support.
+   *
+   *   FreeType now handles loading color bitmap glyphs in the PNG format.
+   *   This requires help from the external libpng library.  Uncompressed
+   *   color bitmaps do not need any external libraries and will be
+   *   supported regardless of this configuration.
+   *
+   *   Define this macro if you want to enable this `feature'.
+   *
+   *   If you use a build system like cmake or the `configure' script,
+   *   options set by those programs have precendence, overwriting the
+   *   value here with the configured one.
+   */
 #define FT_CONFIG_OPTION_USE_PNG
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* HarfBuzz support.                                                     */
-  /*                                                                       */
-  /*   FreeType uses the HarfBuzz library to improve auto-hinting of       */
-  /*   OpenType fonts.  If available, many glyphs not directly addressable */
-  /*   by a font's character map will be hinted also.                      */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * HarfBuzz support.
+   *
+   *   FreeType uses the HarfBuzz library to improve auto-hinting of
+   *   OpenType fonts.  If available, many glyphs not directly addressable
+   *   by a font's character map will be hinted also.
+   *
+   *   Define this macro if you want to enable this `feature'.
+   *
+   *   If you use a build system like cmake or the `configure' script,
+   *   options set by those programs have precendence, overwriting the
+   *   value here with the configured one.
+   */
 #define FT_CONFIG_OPTION_USE_HARFBUZZ
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Glyph Postscript Names handling                                       */
-  /*                                                                       */
-  /*   By default, FreeType 2 is compiled with the `psnames' module.  This */
-  /*   module is in charge of converting a glyph name string into a        */
-  /*   Unicode value, or return a Macintosh standard glyph name for the    */
-  /*   use with the TrueType `post' table.                                 */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want `psnames' compiled in your   */
-  /*   build of FreeType.  This has the following effects:                 */
-  /*                                                                       */
-  /*   - The TrueType driver will provide its own set of glyph names,      */
-  /*     if you build it to support postscript names in the TrueType       */
-  /*     `post' table, but will not synthesize a missing Unicode charmap.  */
-  /*                                                                       */
-  /*   - The Type 1 driver will not be able to synthesize a Unicode        */
-  /*     charmap out of the glyphs found in the fonts.                     */
-  /*                                                                       */
-  /*   You would normally undefine this configuration macro when building  */
-  /*   a version of FreeType that doesn't contain a Type 1 or CFF driver.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Glyph Postscript Names handling
+   *
+   *   By default, FreeType 2 is compiled with the `psnames' module.  This
+   *   module is in charge of converting a glyph name string into a
+   *   Unicode value, or return a Macintosh standard glyph name for the
+   *   use with the TrueType `post' table.
+   *
+   *   Undefine this macro if you do not want `psnames' compiled in your
+   *   build of FreeType.  This has the following effects:
+   *
+   *   - The TrueType driver will provide its own set of glyph names,
+   *     if you build it to support postscript names in the TrueType
+   *     `post' table, but will not synthesize a missing Unicode charmap.
+   *
+   *   - The Type 1 driver will not be able to synthesize a Unicode
+   *     charmap out of the glyphs found in the fonts.
+   *
+   *   You would normally undefine this configuration macro when building
+   *   a version of FreeType that doesn't contain a Type 1 or CFF driver.
+   */
 #define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Postscript Names to Unicode Values support                            */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the `PSNames' module compiled  */
-  /*   in.  Among other things, the module is used to convert a glyph name */
-  /*   into a Unicode value.  This is especially useful in order to        */
-  /*   synthesize on the fly a Unicode charmap from the CFF/Type 1 driver  */
-  /*   through a big table named the `Adobe Glyph List' (AGL).             */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the Adobe Glyph List         */
-  /*   compiled in your `PSNames' module.  The Type 1 driver will not be   */
-  /*   able to synthesize a Unicode charmap out of the glyphs found in the */
-  /*   fonts.                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Postscript Names to Unicode Values support
+   *
+   *   By default, FreeType 2 is built with the `PSNames' module compiled
+   *   in.  Among other things, the module is used to convert a glyph name
+   *   into a Unicode value.  This is especially useful in order to
+   *   synthesize on the fly a Unicode charmap from the CFF/Type 1 driver
+   *   through a big table named the `Adobe Glyph List' (AGL).
+   *
+   *   Undefine this macro if you do not want the Adobe Glyph List
+   *   compiled in your `PSNames' module.  The Type 1 driver will not be
+   *   able to synthesize a Unicode charmap out of the glyphs found in the
+   *   fonts.
+   */
 #define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Support for Mac fonts                                                 */
-  /*                                                                       */
-  /*   Define this macro if you want support for outline fonts in Mac      */
-  /*   format (mac dfont, mac resource, macbinary containing a mac         */
-  /*   resource) on non-Mac platforms.                                     */
-  /*                                                                       */
-  /*   Note that the `FOND' resource isn't checked.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Support for Mac fonts
+   *
+   *   Define this macro if you want support for outline fonts in Mac
+   *   format (mac dfont, mac resource, macbinary containing a mac
+   *   resource) on non-Mac platforms.
+   *
+   *   Note that the `FOND' resource isn't checked.
+   */
 #define FT_CONFIG_OPTION_MAC_FONTS
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Guessing methods to access embedded resource forks                    */
-  /*                                                                       */
-  /*   Enable extra Mac fonts support on non-Mac platforms (e.g.           */
-  /*   GNU/Linux).                                                         */
-  /*                                                                       */
-  /*   Resource forks which include fonts data are stored sometimes in     */
-  /*   locations which users or developers don't expected.  In some cases, */
-  /*   resource forks start with some offset from the head of a file.  In  */
-  /*   other cases, the actual resource fork is stored in file different   */
-  /*   from what the user specifies.  If this option is activated,         */
-  /*   FreeType tries to guess whether such offsets or different file      */
-  /*   names must be used.                                                 */
-  /*                                                                       */
-  /*   Note that normal, direct access of resource forks is controlled via */
-  /*   the FT_CONFIG_OPTION_MAC_FONTS option.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Guessing methods to access embedded resource forks
+   *
+   *   Enable extra Mac fonts support on non-Mac platforms (e.g., GNU/Linux).
+   *
+   *   Resource forks which include fonts data are stored sometimes in
+   *   locations which users or developers don't expected.  In some cases,
+   *   resource forks start with some offset from the head of a file.  In
+   *   other cases, the actual resource fork is stored in file different
+   *   from what the user specifies.  If this option is activated,
+   *   FreeType tries to guess whether such offsets or different file
+   *   names must be used.
+   *
+   *   Note that normal, direct access of resource forks is controlled via
+   *   the FT_CONFIG_OPTION_MAC_FONTS option.
+   */
 #ifdef FT_CONFIG_OPTION_MAC_FONTS
 #define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Allow the use of FT_Incremental_Interface to load typefaces that      */
-  /* contain no glyph data, but supply it via a callback function.         */
-  /* This is required by clients supporting document formats which         */
-  /* supply font data incrementally as the document is parsed, such        */
-  /* as the Ghostscript interpreter for the PostScript language.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Allow the use of FT_Incremental_Interface to load typefaces that
+   * contain no glyph data, but supply it via a callback function.
+   * This is required by clients supporting document formats which
+   * supply font data incrementally as the document is parsed, such
+   * as the Ghostscript interpreter for the PostScript language.
+   */
 #define FT_CONFIG_OPTION_INCREMENTAL
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The size in bytes of the render pool used by the scan-line converter  */
-  /* to do all of its work.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The size in bytes of the render pool used by the scan-line converter
+   * to do all of its work.
+   */
 #define FT_RENDER_POOL_SIZE  16384L
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FT_MAX_MODULES                                                        */
-  /*                                                                       */
-  /*   The maximum number of modules that can be registered in a single    */
-  /*   FreeType library object.  32 is the default.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FT_MAX_MODULES
+   *
+   *   The maximum number of modules that can be registered in a single
+   *   FreeType library object.  32 is the default.
+   */
 #define FT_MAX_MODULES  32
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Debug level                                                           */
-  /*                                                                       */
-  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
-  /*   errors are reported through the `ftdebug' component.  In trace      */
-  /*   mode, additional messages are sent to the standard output during    */
-  /*   execution.                                                          */
-  /*                                                                       */
-  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
-  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
-  /*                                                                       */
-  /*   Don't define any of these macros to compile in `release' mode!      */
-  /*                                                                       */
-  /*   Do not #undef these macros here since the build system might define */
-  /*   them for certain configurations only.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Debug level
+   *
+   *   FreeType can be compiled in debug or trace mode.  In debug mode,
+   *   errors are reported through the `ftdebug' component.  In trace
+   *   mode, additional messages are sent to the standard output during
+   *   execution.
+   *
+   *   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.
+   *   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.
+   *
+   *   Don't define any of these macros to compile in `release' mode!
+   *
+   *   Do not #undef these macros here since the build system might define
+   *   them for certain configurations only.
+   */
 #define FT_DEBUG_LEVEL_ERROR
 #define FT_DEBUG_LEVEL_TRACE
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Autofitter debugging                                                  */
-  /*                                                                       */
-  /*   If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to     */
-  /*   control the autofitter behaviour for debugging purposes with global */
-  /*   boolean variables (consequently, you should *never* enable this     */
-  /*   while compiling in `release' mode):                                 */
-  /*                                                                       */
-  /*     _af_debug_disable_horz_hints                                      */
-  /*     _af_debug_disable_vert_hints                                      */
-  /*     _af_debug_disable_blue_hints                                      */
-  /*                                                                       */
-  /*   Additionally, the following functions provide dumps of various      */
-  /*   internal autofit structures to stdout (using `printf'):             */
-  /*                                                                       */
-  /*     af_glyph_hints_dump_points                                        */
-  /*     af_glyph_hints_dump_segments                                      */
-  /*     af_glyph_hints_dump_edges                                         */
-  /*     af_glyph_hints_get_num_segments                                   */
-  /*     af_glyph_hints_get_segment_offset                                 */
-  /*                                                                       */
-  /*   As an argument, they use another global variable:                   */
-  /*                                                                       */
-  /*     _af_debug_hints                                                   */
-  /*                                                                       */
-  /*   Please have a look at the `ftgrid' demo program to see how those    */
-  /*   variables and macros should be used.                                */
-  /*                                                                       */
-  /*   Do not #undef these macros here since the build system might define */
-  /*   them for certain configurations only.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Autofitter debugging
+   *
+   *   If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to
+   *   control the autofitter behaviour for debugging purposes with global
+   *   boolean variables (consequently, you should *never* enable this
+   *   while compiling in `release' mode):
+   *
+   *   {
+   *     _af_debug_disable_horz_hints
+   *     _af_debug_disable_vert_hints
+   *     _af_debug_disable_blue_hints
+   *   }
+   *
+   *   Additionally, the following functions provide dumps of various
+   *   internal autofit structures to stdout (using `printf'):
+   *
+   *   {
+   *     af_glyph_hints_dump_points
+   *     af_glyph_hints_dump_segments
+   *     af_glyph_hints_dump_edges
+   *     af_glyph_hints_get_num_segments
+   *     af_glyph_hints_get_segment_offset
+   *   }
+   *
+   *   As an argument, they use another global variable:
+   *
+   *   {
+   *     _af_debug_hints
+   *   }
+   *
+   *   Please have a look at the `ftgrid' demo program to see how those
+   *   variables and macros should be used.
+   *
+   *   Do not #undef these macros here since the build system might define
+   *   them for certain configurations only.
+   */
 #define FT_DEBUG_AUTOFIT
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Memory Debugging                                                      */
-  /*                                                                       */
-  /*   FreeType now comes with an integrated memory debugger that is       */
-  /*   capable of detecting simple errors like memory leaks or double      */
-  /*   deletes.  To compile it within your build of the library, you       */
-  /*   should define FT_DEBUG_MEMORY here.                                 */
-  /*                                                                       */
-  /*   Note that the memory debugger is only activated at runtime when     */
-  /*   when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */
-  /*                                                                       */
-  /*   Do not #undef this macro here since the build system might define   */
-  /*   it for certain configurations only.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Memory Debugging
+   *
+   *   FreeType now comes with an integrated memory debugger that is
+   *   capable of detecting simple errors like memory leaks or double
+   *   deletes.  To compile it within your build of the library, you
+   *   should define FT_DEBUG_MEMORY here.
+   *
+   *   Note that the memory debugger is only activated at runtime when
+   *   when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also!
+   *
+   *   Do not #undef this macro here since the build system might define
+   *   it for certain configurations only.
+   */
 #define FT_DEBUG_MEMORY
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Module errors                                                         */
-  /*                                                                       */
-  /*   If this macro is set (which is _not_ the default), the higher byte  */
-  /*   of an error code gives the module in which the error has occurred,  */
-  /*   while the lower byte is the real error code.                        */
-  /*                                                                       */
-  /*   Setting this macro makes sense for debugging purposes only, since   */
-  /*   it would break source compatibility of certain programs that use    */
-  /*   FreeType 2.                                                         */
-  /*                                                                       */
-  /*   More details can be found in the files ftmoderr.h and fterrors.h.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Module errors
+   *
+   *   If this macro is set (which is _not_ the default), the higher byte
+   *   of an error code gives the module in which the error has occurred,
+   *   while the lower byte is the real error code.
+   *
+   *   Setting this macro makes sense for debugging purposes only, since
+   *   it would break source compatibility of certain programs that use
+   *   FreeType 2.
+   *
+   *   More details can be found in the files ftmoderr.h and fterrors.h.
+   */
 #undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
 
 
   /*************************************************************************/
-  /*                                                                       */
-  /* Position Independent Code                                             */
-  /*                                                                       */
-  /*   If this macro is set (which is _not_ the default), FreeType2 will   */
-  /*   avoid creating constants that require address fixups.  Instead the  */
-  /*   constants will be moved into a struct and additional intialization  */
-  /*   code will be used.                                                  */
-  /*                                                                       */
-  /*   Setting this macro is needed for systems that prohibit address      */
-  /*   fixups, such as BREW.  [Note that standard compilers like gcc or    */
-  /*   clang handle PIC generation automatically; you don't have to set    */
-  /*   FT_CONFIG_OPTION_PIC, which is only necessary for very special      */
-  /*   compilers.]                                                         */
-  /*                                                                       */
-  /*   Note that FT_CONFIG_OPTION_PIC support is not available for all     */
-  /*   modules (see `modules.cfg' for a complete list).  For building with */
-  /*   FT_CONFIG_OPTION_PIC support, do the following.                     */
-  /*                                                                       */
-  /*     0. Clone the repository.                                          */
-  /*     1. Define FT_CONFIG_OPTION_PIC.                                   */
-  /*     2. Remove all subdirectories in `src' that don't have             */
-  /*        FT_CONFIG_OPTION_PIC support.                                  */
-  /*     3. Comment out the corresponding modules in `modules.cfg'.        */
-  /*     4. Compile.                                                       */
-  /*                                                                       */
-/* #define FT_CONFIG_OPTION_PIC */
-
-
-  /*************************************************************************/
   /*************************************************************************/
   /****                                                                 ****/
   /****        S F N T   D R I V E R    C O N F I G U R A T I O N       ****/
@@ -505,50 +506,60 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support       */
-  /* embedded bitmaps in all formats using the SFNT module (namely         */
-  /* TrueType & OpenType).                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support
+   * embedded bitmaps in all formats using the SFNT module (namely
+   * TrueType & OpenType).
+   */
 #define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to    */
-  /* load and enumerate the glyph Postscript names in a TrueType or        */
-  /* OpenType file.                                                        */
-  /*                                                                       */
-  /* Note that when you do not compile the `PSNames' module by undefining  */
-  /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will   */
-  /* contain additional code used to read the PS Names table from a font.  */
-  /*                                                                       */
-  /* (By default, the module uses `PSNames' to extract glyph names.)       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_COLOR_LAYERS if you want to support coloured
+   * outlines (from the COLR/CPAL tables) in all formats using the SFNT
+   * module (namely TrueType & OpenType).
+   */
+#define TT_CONFIG_OPTION_COLOR_LAYERS
+
+
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to
+   * load and enumerate the glyph Postscript names in a TrueType or
+   * OpenType file.
+   *
+   * Note that when you do not compile the `PSNames' module by undefining
+   * the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will
+   * contain additional code used to read the PS Names table from a font.
+   *
+   * (By default, the module uses `PSNames' to extract glyph names.)
+   */
 #define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to       */
-  /* access the internal name table in a SFNT-based format like TrueType   */
-  /* or OpenType.  The name table contains various strings used to         */
-  /* describe the font, like family name, copyright, version, etc.  It     */
-  /* does not contain any glyph name though.                               */
-  /*                                                                       */
-  /* Accessing SFNT names is done through the functions declared in        */
-  /* `ftsnames.h'.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to
+   * access the internal name table in a SFNT-based format like TrueType
+   * or OpenType.  The name table contains various strings used to
+   * describe the font, like family name, copyright, version, etc.  It
+   * does not contain any glyph name though.
+   *
+   * Accessing SFNT names is done through the functions declared in
+   * `ftsnames.h'.
+   */
 #define TT_CONFIG_OPTION_SFNT_NAMES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TrueType CMap support                                                 */
-  /*                                                                       */
-  /*   Here you can fine-tune which TrueType CMap table format shall be    */
-  /*   supported.                                                          */
+  /**************************************************************************
+   *
+   * TrueType CMap support
+   *
+   *   Here you can fine-tune which TrueType CMap table format shall be
+   *   supported.
+   */
 #define TT_CONFIG_CMAP_FORMAT_0
 #define TT_CONFIG_CMAP_FORMAT_2
 #define TT_CONFIG_CMAP_FORMAT_4
@@ -568,122 +579,131 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile   */
-  /* a bytecode interpreter in the TrueType driver.                        */
-  /*                                                                       */
-  /* By undefining this, you will only compile the code necessary to load  */
-  /* TrueType glyphs without hinting.                                      */
-  /*                                                                       */
-  /*   Do not #undef this macro here, since the build system might         */
-  /*   define it for certain configurations only.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile
+   * a bytecode interpreter in the TrueType driver.
+   *
+   * By undefining this, you will only compile the code necessary to load
+   * TrueType glyphs without hinting.
+   *
+   *   Do not #undef this macro here, since the build system might
+   *   define it for certain configurations only.
+   */
 #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile       */
-  /* subpixel hinting support into the TrueType driver.  This modifies the */
-  /* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is   */
-  /* requested.                                                            */
-  /*                                                                       */
-  /* In particular, it modifies the bytecode interpreter to interpret (or  */
-  /* not) instructions in a certain way so that all TrueType fonts look    */
-  /* like they do in a Windows ClearType (DirectWrite) environment.  See   */
-  /* [1] for a technical overview on what this means.  See `ttinterp.h'    */
-  /* for more details on the LEAN option.                                  */
-  /*                                                                       */
-  /* There are three options.                                              */
-  /*                                                                       */
-  /* 1. This option is associated with the `Infinality' moniker.           */
-  /*    Contributed by an individual nicknamed Infinality with the goal of */
-  /*    making TrueType fonts render better than on Windows.  A high       */
-  /*    amount of configurability and flexibility, down to rules for       */
-  /*    single glyphs in fonts, but also very slow.  Its experimental and  */
-  /*    slow nature and the original developer losing interest meant that  */
-  /*    this option was never enabled in default builds.                   */
-  /*                                                                       */
-  /* 2. The new default mode for the TrueType driver.  The Infinality code */
-  /*    base was stripped to the bare minimum and all configurability      */
-  /*    removed in the name of speed and simplicity.  The configurability  */
-  /*    was mainly aimed at legacy fonts like Arial, Times New Roman, or   */
-  /*    Courier.  Legacy fonts are fonts that modify vertical stems to     */
-  /*    achieve clean black-and-white bitmaps.  The new mode focuses on    */
-  /*    applying a minimal set of rules to all fonts indiscriminately so   */
-  /*    that modern and web fonts render well while legacy fonts render    */
-  /*    okay.                                                              */
-  /*                                                                       */
-  /* 3. Compile both.                                                      */
-  /*                                                                       */
-  /* By undefining these, you get rendering behavior like on Windows       */
-  /* without ClearType, i.e., Windows XP without ClearType enabled and     */
-  /* Win9x (interpreter version v35).  Or not, depending on how much       */
-  /* hinting blood and testing tears the font designer put into a given    */
-  /* font.  If you define one or both subpixel hinting options, you can    */
-  /* switch between between v35 and the ones you define.                   */
-  /*                                                                       */
-  /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be      */
-  /* defined.                                                              */
-  /*                                                                       */
-  /* [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile
+   * subpixel hinting support into the TrueType driver.  This modifies the
+   * TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is
+   * requested.
+   *
+   * In particular, it modifies the bytecode interpreter to interpret (or
+   * not) instructions in a certain way so that all TrueType fonts look
+   * like they do in a Windows ClearType (DirectWrite) environment.  See
+   * [1] for a technical overview on what this means.  See `ttinterp.h'
+   * for more details on the LEAN option.
+   *
+   * There are three possible values.
+   *
+   * Value 1:
+   *   This value is associated with the `Infinality' moniker,
+   *   contributed by an individual nicknamed Infinality with the goal of
+   *   making TrueType fonts render better than on Windows.  A high
+   *   amount of configurability and flexibility, down to rules for
+   *   single glyphs in fonts, but also very slow.  Its experimental and
+   *   slow nature and the original developer losing interest meant that
+   *   this option was never enabled in default builds.
+   *
+   *   The corresponding interpreter version is v38.
+   *
+   * Value 2:
+   *   The new default mode for the TrueType driver.  The Infinality code
+   *   base was stripped to the bare minimum and all configurability
+   *   removed in the name of speed and simplicity.  The configurability
+   *   was mainly aimed at legacy fonts like Arial, Times New Roman, or
+   *   Courier.  Legacy fonts are fonts that modify vertical stems to
+   *   achieve clean black-and-white bitmaps.  The new mode focuses on
+   *   applying a minimal set of rules to all fonts indiscriminately so
+   *   that modern and web fonts render well while legacy fonts render
+   *   okay.
+   *
+   *   The corresponding interpreter version is v40.
+   *
+   * Value 3:
+   *   Compile both, making both v38 and v40 available (the latter is the
+   *   default).
+   *
+   * By undefining these, you get rendering behavior like on Windows
+   * without ClearType, i.e., Windows XP without ClearType enabled and
+   * Win9x (interpreter version v35).  Or not, depending on how much
+   * hinting blood and testing tears the font designer put into a given
+   * font.  If you define one or both subpixel hinting options, you can
+   * switch between between v35 and the ones you define (using
+   * `FT_Property_Set').
+   *
+   * This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be
+   * defined.
+   *
+   * [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
+   */
 /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  1     */
 /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  2     */
 #define TT_CONFIG_OPTION_SUBPIXEL_HINTING     ( 1 | 2 )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the        */
-  /* TrueType glyph loader to use Apple's definition of how to handle      */
-  /* component offsets in composite glyphs.                                */
-  /*                                                                       */
-  /* Apple and MS disagree on the default behavior of component offsets    */
-  /* in composites.  Apple says that they should be scaled by the scaling  */
-  /* factors in the transformation matrix (roughly, it's more complex)     */
-  /* while MS says they should not.  OpenType defines two bits in the      */
-  /* composite flags array which can be used to disambiguate, but old      */
-  /* fonts will not have them.                                             */
-  /*                                                                       */
-  /*   https://www.microsoft.com/typography/otspec/glyf.htm                */
-  /*   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the
+   * TrueType glyph loader to use Apple's definition of how to handle
+   * component offsets in composite glyphs.
+   *
+   * Apple and MS disagree on the default behavior of component offsets
+   * in composites.  Apple says that they should be scaled by the scaling
+   * factors in the transformation matrix (roughly, it's more complex)
+   * while MS says they should not.  OpenType defines two bits in the
+   * composite flags array which can be used to disambiguate, but old
+   * fonts will not have them.
+   *
+   *   https://www.microsoft.com/typography/otspec/glyf.htm
+   *   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html
+   */
 #undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include         */
-  /* support for Apple's distortable font technology (fvar, gvar, cvar,    */
-  /* and avar tables).  This has many similarities to Type 1 Multiple      */
-  /* Masters support.                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include
+   * support for Apple's distortable font technology (fvar, gvar, cvar,
+   * and avar tables).  This has many similarities to Type 1 Multiple
+   * Masters support.
+   */
 #define TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_BDF if you want to include support for        */
-  /* an embedded `BDF ' table within SFNT-based bitmap formats.            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_BDF if you want to include support for
+   * an embedded `BDF ' table within SFNT-based bitmap formats.
+   */
 #define TT_CONFIG_OPTION_BDF
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum     */
-  /* number of bytecode instructions executed for a single run of the      */
-  /* bytecode interpreter, needed to prevent infinite loops.  You don't    */
-  /* want to change this except for very special situations (e.g., making  */
-  /* a library fuzzer spend less time to handle broken fonts).             */
-  /*                                                                       */
-  /* It is not expected that this value is ever modified by a configuring  */
-  /* script; instead, it gets surrounded with #ifndef ... #endif so that   */
-  /* the value can be set as a preprocessor option on the compiler's       */
-  /* command line.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum
+   * number of bytecode instructions executed for a single run of the
+   * bytecode interpreter, needed to prevent infinite loops.  You don't
+   * want to change this except for very special situations (e.g., making
+   * a library fuzzer spend less time to handle broken fonts).
+   *
+   * It is not expected that this value is ever modified by a configuring
+   * script; instead, it gets surrounded with #ifndef ... #endif so that
+   * the value can be set as a preprocessor option on the compiler's
+   * command line.
+   */
 #ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
 #define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES  1000000L
 #endif
@@ -698,59 +718,59 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and       */
-  /* arrays in the Type 1 stream (see t1load.c).  A minimum of 4 is        */
-  /* required.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and
+   * arrays in the Type 1 stream (see t1load.c).  A minimum of 4 is
+   * required.
+   */
 #define T1_MAX_DICT_DEPTH  5
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine   */
-  /* calls during glyph loading.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine
+   * calls during glyph loading.
+   */
 #define T1_MAX_SUBRS_CALLS  16
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A     */
-  /* minimum of 16 is required.                                            */
-  /*                                                                       */
-  /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A
+   * minimum of 16 is required.
+   *
+   * The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256.
+   */
 #define T1_MAX_CHARSTRINGS_OPERANDS  256
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro if you want to prevent the            */
-  /* compilation of `t1afm', which is in charge of reading Type 1 AFM      */
-  /* files into an existing face.  Note that if set, the T1 driver will be */
-  /* unable to produce kerning distances.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define this configuration macro if you want to prevent the
+   * compilation of `t1afm', which is in charge of reading Type 1 AFM
+   * files into an existing face.  Note that if set, the T1 driver will be
+   * unable to produce kerning distances.
+   */
 #undef T1_CONFIG_OPTION_NO_AFM
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro if you want to prevent the            */
-  /* compilation of the Multiple Masters font support in the Type 1        */
-  /* driver.                                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define this configuration macro if you want to prevent the
+   * compilation of the Multiple Masters font support in the Type 1
+   * driver.
+   */
 #undef T1_CONFIG_OPTION_NO_MM_SUPPORT
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe Type 1     */
-  /* engine gets compiled into FreeType.  If defined, it is possible to    */
-  /* switch between the two engines using the `hinting-engine' property of */
-  /* the type1 driver module.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe Type 1
+   * engine gets compiled into FreeType.  If defined, it is possible to
+   * switch between the two engines using the `hinting-engine' property of
+   * the type1 driver module.
+   */
 #define T1_CONFIG_OPTION_OLD_ENGINE
 
 
@@ -763,17 +783,17 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is      */
-  /* possible to set up the default values of the four control points that */
-  /* define the stem darkening behaviour of the (new) CFF engine.  For     */
-  /* more details please read the documentation of the                     */
-  /* `darkening-parameters' property of the cff driver module (file        */
-  /* `ftcffdrv.h'), which allows the control at run-time.                  */
-  /*                                                                       */
-  /* Do *not* undefine these macros!                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is
+   * possible to set up the default values of the four control points that
+   * define the stem darkening behaviour of the (new) CFF engine.  For
+   * more details please read the documentation of the
+   * `darkening-parameters' property (file `ftdriver.h'), which allows the
+   * control at run-time.
+   *
+   * Do *not* undefine these macros!
+   */
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1   500
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1   400
 
@@ -787,13 +807,13 @@
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4     0
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF       */
-  /* engine gets compiled into FreeType.  If defined, it is possible to    */
-  /* switch between the two engines using the `hinting-engine' property of */
-  /* the cff driver module.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF
+   * engine gets compiled into FreeType.  If defined, it is possible to
+   * switch between the two engines using the `hinting-engine' property of
+   * the cff driver module.
+   */
 #define CFF_CONFIG_OPTION_OLD_ENGINE
 
 
@@ -806,21 +826,21 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* There are many PCF fonts just called `Fixed' which look completely    */
-  /* different, and which have nothing to do with each other.  When        */
-  /* selecting `Fixed' in KDE or Gnome one gets results that appear rather */
-  /* random, the style changes often if one changes the size and one       */
-  /* cannot select some fonts at all.  This option makes the PCF module    */
-  /* prepend the foundry name (plus a space) to the family name.           */
-  /*                                                                       */
-  /* We also check whether we have `wide' characters; all put together, we */
-  /* get family names like `Sony Fixed' or `Misc Fixed Wide'.              */
-  /*                                                                       */
-  /* If this option is activated, it can be controlled with the            */
-  /* `no-long-family-names' property of the pcf driver module.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * There are many PCF fonts just called `Fixed' which look completely
+   * different, and which have nothing to do with each other.  When
+   * selecting `Fixed' in KDE or Gnome one gets results that appear rather
+   * random, the style changes often if one changes the size and one
+   * cannot select some fonts at all.  This option makes the PCF module
+   * prepend the foundry name (plus a space) to the family name.
+   *
+   * We also check whether we have `wide' characters; all put together, we
+   * get family names like `Sony Fixed' or `Misc Fixed Wide'.
+   *
+   * If this option is activated, it can be controlled with the
+   * `no-long-family-names' property of the pcf driver module.
+   */
 #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
 
 
@@ -833,34 +853,58 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with CJK (Chinese, Japanese, Korean) script    */
-  /* support.                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Compile autofit module with CJK (Chinese, Japanese, Korean) script
+   * support.
+   */
 #define AF_CONFIG_OPTION_CJK
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with Indic script support.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Compile autofit module with fallback Indic script support, covering
+   * some scripts that the `latin' submodule of the autofit module doesn't
+   * (yet) handle.
+   */
 #define AF_CONFIG_OPTION_INDIC
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with warp hinting.  The idea of the warping    */
-  /* code is to slightly scale and shift a glyph within a single dimension */
-  /* so that as much of its segments are aligned (more or less) on the     */
-  /* grid.  To find out the optimal scaling and shifting value, various    */
-  /* parameter combinations are tried and scored.                          */
-  /*                                                                       */
-  /* This experimental option is active only if the rendering mode is      */
-  /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the      */
-  /* `warping' property of the auto-hinter (see file `ftautoh.h' for more  */
-  /* information; by default it is switched off).                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Compile autofit module with warp hinting.  The idea of the warping
+   * code is to slightly scale and shift a glyph within a single dimension
+   * so that as much of its segments are aligned (more or less) on the
+   * grid.  To find out the optimal scaling and shifting value, various
+   * parameter combinations are tried and scored.
+   *
+   * This experimental option is active only if the rendering mode is
+   * FT_RENDER_MODE_LIGHT; you can switch warping on and off with the
+   * `warping' property of the auto-hinter (see file `ftdriver.h' for more
+   * information; by default it is switched off).
+   */
 #define AF_CONFIG_OPTION_USE_WARPER
 
+  /**************************************************************************
+   *
+   * Use TrueType-like size metrics for `light' auto-hinting.
+   *
+   * It is strongly recommended to avoid this option, which exists only to
+   * help some legacy applications retain its appearance and behaviour
+   * with respect to auto-hinted TrueType fonts.
+   *
+   * The very reason this option exists at all are GNU/Linux distributions
+   * like Fedora that did not un-patch the following change (which was
+   * present in FreeType between versions 2.4.6 and 2.7.1, inclusive).
+   *
+   * {
+   *   2011-07-16  Steven Chu  <steven.f.chu@gmail.com>
+   *
+   *     [truetype] Fix metrics on size request for scalable fonts.
+   * }
+   *
+   * This problematic commit is now reverted (more or less).
+   */
+/* #define AF_CONFIG_OPTION_TT_SIZE_METRICS */
+
   /* */
 
 
diff --git a/docs/CHANGES b/docs/CHANGES
index 9901e10..a6d088a 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -1,3 +1,50 @@
+CHANGES BETWEEN 2.9 and 2.9.1
+
+  I. IMPORTANT BUG FIXES
+
+    - Type  1  fonts  containing   flex  features  were  not  rendered
+      correctly (bug introduced in version 2.9).
+
+    - CVE-2018-6942: Older  FreeType versions  can crash  with certain
+      malformed variation fonts.
+
+        http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6942
+
+
+  II. MISCELLANEOUS
+
+    - Bug fix: Multiple calls to `FT_Get_MM_Var' returned garbage.
+
+    - The base  extensions `ftlcdfil' and  `ftfntfmt' are now  part of
+      the  base  module  (and  thus no  longer  configurable  in  file
+      `modules.cfg').
+
+    - Emboldening of bitmaps didn't work correctly sometimes,  showing
+      various artifacts (bug introduced in version 2.8.1).
+
+    - Use  of  the `freetype-config'  script  to  get compilation  and
+      linking  options   is  deprecated   since  it   doesn't  support
+      cross-compiling, among other  deficiencies.  Instead, you should
+      use the `pkg-config' interface.
+
+      The `configure'  script no longer installs  `freetype-config' by
+      default.  For  backwards compatibility,  a new  configure option
+      `--enable-freetype-config'   is  provided   that  reverts   this
+      decision.
+
+    - The auto-hinter script ranges have  been updated for Unicode 11.
+      No support  for new scripts  have been added, however,  with the
+      exception of Georgian Mtavruli.
+
+    - Support for cmake has been improved.
+
+    - The next  release will  remove support for  Position Independent
+      Code  as  needed  by  systems that  prohibit  automatic  address
+      fixups, such  as BREW.  [Compilation with  modern compilers that
+      use flags like `-fPIC' or `-fPIE' is not affected.]
+
+
+======================================================================
 
 CHANGES BETWEEN 2.8.1 and 2.9
 
@@ -86,6 +133,7 @@
       and switch  between hexadecimal and decimal  display of integers
       (key `I').
 
+
 ======================================================================
 
 CHANGES BETWEEN 2.8 and 2.8.1
@@ -286,7 +334,7 @@
     - FT_LOAD_TARGET_LCD  is now  a  variant of  FT_LOAD_TARGET_LIGHT;
       this should provide better rendering results.
 
-    - A mode to display  light auto-hinting with sub-pixel positioning
+    - A mode to display  light auto-hinting with  subpixel positioning
       has been added to `ftdiff'.
 
 
@@ -616,8 +664,8 @@
 
     - The smooth renderer has been made faster.
 
-    - The `ftstring'  demo program  now supports  sub-pixel rendering;
-      use key `l' to cycle through the LCD modes.
+    - The `ftstring' demo program now supports subpixel rendering; use
+      key `l' to cycle through the LCD modes.
 
     - The `ftstring'  demo program now supports  colour rendering; use
       the `space' key to cycle through various colour combinations.
@@ -3055,12 +3103,12 @@
         FT_LOAD_TARGET_MONO   :: Hint and render for 1-bit displays.
 
         FT_LOAD_TARGET_LCD    :: Hint and render for horizontal RGB or
-                                 BGR sub-pixel displays (like LCD
+                                 BGR subpixel displays (like LCD
                                  screens).  THIS IS STILL
                                  EXPERIMENTAL!
 
         FT_LOAD_TARGET_LCD_V  :: Same as FT_LOAD_TARGET_LCD, for
-                                 vertical sub-pixel displays (like
+                                 vertical subpixel displays (like
                                  rotated LCD screens).  THIS IS STILL
                                  EXPERIMENTAL!
 
diff --git a/docs/INSTALL b/docs/INSTALL
index fc24ea1..71d4a05 100644
--- a/docs/INSTALL
+++ b/docs/INSTALL
@@ -14,7 +14,7 @@
     compilation,  since other make tools won't work (this includes BSD
     Make).
 
-    GNU Make VERSION 3.80 OR NEWER IS NEEDED!
+    GNU Make VERSION 3.81 OR NEWER IS NEEDED!
 
     [For `cmake' see below.]
 
@@ -72,7 +72,7 @@
 
       http://makepp.sourceforge.net
 
-    for more information; you need version 1.19 or newer, and you must
+    for more information;  you need version 2.0 or newer, and you must
     pass option `--norc-substitution'.
 
 ----------------------------------------------------------------------
diff --git a/docs/INSTALL.ANY b/docs/INSTALL.ANY
index 47d080f..fddac9a 100644
--- a/docs/INSTALL.ANY
+++ b/docs/INSTALL.ANY
@@ -39,11 +39,9 @@
       src/base/ftbdf.c        -- optional, see <ftbdf.h>
       src/base/ftbitmap.c     -- optional, see <ftbitmap.h>
       src/base/ftcid.c        -- optional, see <ftcid.h>
-      src/base/ftfntfmt.c     -- optional, see <ftfntfmt.h>
       src/base/ftfstype.c     -- optional
       src/base/ftgasp.c       -- optional, see <ftgasp.h>
       src/base/ftgxval.c      -- optional, see <ftgxval.h>
-      src/base/ftlcdfil.c     -- optional, see <ftlcdfil.h>
       src/base/ftmm.c         -- optional, see <ftmm.h>
       src/base/ftotval.c      -- optional, see <ftotval.h>
       src/base/ftpatent.c     -- optional
diff --git a/docs/INSTALL.CROSS b/docs/INSTALL.CROSS
index e8977a1..239e1a9 100644
--- a/docs/INSTALL.CROSS
+++ b/docs/INSTALL.CROSS
@@ -9,7 +9,7 @@
   -----------------
 
     For self-building the FreeType library  on a Unix system, GNU Make
-    3.80 or newer  is required.  `INSTALL.UNIX' contains  hints how to
+    3.81 or newer  is required.  `INSTALL.UNIX' contains  hints how to
     check the installed `make'.
 
     The GNU C  compiler to cross-build the target  system is required.
diff --git a/docs/INSTALL.GNU b/docs/INSTALL.GNU
index 52645f1..e314ecf 100644
--- a/docs/INSTALL.GNU
+++ b/docs/INSTALL.GNU
@@ -25,7 +25,7 @@
 
       http://makepp.sourceforge.net
 
-    for more information; you need version 1.19 or newer, and you must
+    for more information;  you need version 2.0 or newer, and you must
     pass option `--norc-substitution'.
 
     Make sure that you are invoking GNU Make from the command line, by
@@ -35,7 +35,7 @@
 
     to display its version number.
 
-    VERSION 3.80 OR NEWER IS NEEDED!
+    VERSION 3.81 OR NEWER IS NEEDED!
 
 
   2. Invoke `make'
diff --git a/docs/INSTALL.UNIX b/docs/INSTALL.UNIX
index bb57836..f92d828 100644
--- a/docs/INSTALL.UNIX
+++ b/docs/INSTALL.UNIX
@@ -19,7 +19,7 @@
        GNU Make  <version number>
        Copyright (C) <year> Free Software Foundation Inc.
 
-    Note that version  3.80 or higher is *required* or the  build will
+    Note that version  3.81 or higher is *required* or the  build will
     fail.
 
     It is also fine to have GNU Make under another name (e.g. 'gmake')
diff --git a/docs/MAKEPP b/docs/MAKEPP
index 58eaf55..a4d44b7 100644
--- a/docs/MAKEPP
+++ b/docs/MAKEPP
@@ -1,5 +1,5 @@
 As a special  exception, FreeType can also be  built with the 'makepp'
 build tool, available from http://makepp.sourceforge.net.
 
-Note, however. that  you will need at least version  1.19 and pass the
+Note, however,  that  you will need at least version 2.0  and pass the
 option --norc-substitution to have it work correctly.
diff --git a/docs/VERSIONS.TXT b/docs/VERSIONS.TXT
index b0d25b5..3774157 100644
--- a/docs/VERSIONS.TXT
+++ b/docs/VERSIONS.TXT
@@ -52,6 +52,7 @@
 
     release     libtool     so
   -------------------------------
+     2.9.1      22.1.16   6.16.1
      2.9.0      22.0.16   6.16.0
      2.8.1      21.0.15   6.15.0
      2.8.0      20.0.14   6.14.0
diff --git a/docs/freetype-config.1 b/docs/freetype-config.1
index e060dcb..164b8ff 100644
--- a/docs/freetype-config.1
+++ b/docs/freetype-config.1
@@ -1,4 +1,4 @@
-.TH FREETYPE-CONFIG 1 "January 2018" "FreeType 2.9"
+.TH FREETYPE-CONFIG 1 "May 2018" "FreeType 2.9.1"
 .
 .
 .SH NAME
diff --git a/include/freetype/config/ftconfig.h b/include/freetype/config/ftconfig.h
index 8ff143e..3d127f8 100644
--- a/include/freetype/config/ftconfig.h
+++ b/include/freetype/config/ftconfig.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftconfig.h                                                             */
-/*                                                                         */
-/*    ANSI-specific configuration file (specification only).               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftconfig.h
+ *
+ *   ANSI-specific configuration file (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This header file contains a number of macro definitions that are used */
-  /* by the rest of the engine.  Most of the macros here are automatically */
-  /* determined at compile time, and you should not need to change it to   */
-  /* port FreeType, except to compile the library with a non-ANSI          */
-  /* compiler.                                                             */
-  /*                                                                       */
-  /* Note however that if some specific modifications are needed, we       */
-  /* advise you to place a modified copy in your build directory.          */
-  /*                                                                       */
-  /* The build directory is usually `builds/<system>', and contains        */
-  /* system-specific files that are always included first when building    */
-  /* the library.                                                          */
-  /*                                                                       */
-  /* This ANSI version should stay in `include/config/'.                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This header file contains a number of macro definitions that are used
+   * by the rest of the engine.  Most of the macros here are automatically
+   * determined at compile time, and you should not need to change it to
+   * port FreeType, except to compile the library with a non-ANSI
+   * compiler.
+   *
+   * Note however that if some specific modifications are needed, we
+   * advise you to place a modified copy in your build directory.
+   *
+   * The build directory is usually `builds/<system>', and contains
+   * system-specific files that are always included first when building
+   * the library.
+   *
+   * This ANSI version should stay in `include/config/'.
+   *
+   */
 
 #ifndef FTCONFIG_H_
 #define FTCONFIG_H_
@@ -46,16 +46,16 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*               PLATFORM-SPECIFIC CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled to suit a specific system.  The current   */
-  /* ones are defaults used to compile FreeType in an ANSI C environment   */
-  /* (16bit compilers are also supported).  Copy this file to your own     */
-  /* `builds/<system>' directory, and edit it to port the engine.          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *              PLATFORM-SPECIFIC CONFIGURATION MACROS
+   *
+   * These macros can be toggled to suit a specific system.  The current
+   * ones are defaults used to compile FreeType in an ANSI C environment
+   * (16bit compilers are also supported).  Copy this file to your own
+   * `builds/<system>' directory, and edit it to port the engine.
+   *
+   */
 
 
   /* There are systems (like the Texas Instruments 'C54x) where a `char' */
@@ -102,24 +102,24 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                     AUTOMATIC CONFIGURATION MACROS                    */
-  /*                                                                       */
-  /* These macros are computed from the ones defined above.  Don't touch   */
-  /* their definition, unless you know precisely what you are doing.  No   */
-  /* porter should need to mess with them.                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                    AUTOMATIC CONFIGURATION MACROS
+   *
+   * These macros are computed from the ones defined above.  Don't touch
+   * their definition, unless you know precisely what you are doing.  No
+   * porter should need to mess with them.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Mac support                                                           */
-  /*                                                                       */
-  /*   This is the only necessary change, so it is defined here instead    */
-  /*   providing a new configuration file.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Mac support
+   *
+   *   This is the only necessary change, so it is defined here instead
+   *   providing a new configuration file.
+   */
 #if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
   /* no Carbon frameworks for 64bit 10.4.x */
   /* AvailabilityMacros.h is available since Mac OS X 10.2,        */
@@ -151,33 +151,33 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    basic_types                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   basic_types
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int16                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 16bit signed integer type.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Int16
+   *
+   * @description:
+   *   A typedef for a 16bit signed integer type.
+   */
   typedef signed short  FT_Int16;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt16                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 16bit unsigned integer type.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UInt16
+   *
+   * @description:
+   *   A typedef for a 16bit unsigned integer type.
+   */
   typedef unsigned short  FT_UInt16;
 
   /* */
@@ -186,50 +186,50 @@
   /* this #if 0 ... #endif clause is for documentation purposes */
 #if 0
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int32                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 32bit signed integer type.  The size depends on    */
-  /*    the configuration.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Int32
+   *
+   * @description:
+   *   A typedef for a 32bit signed integer type.  The size depends on
+   *   the configuration.
+   */
   typedef signed XXX  FT_Int32;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt32                                                          */
-  /*                                                                       */
-  /*    A typedef for a 32bit unsigned integer type.  The size depends on  */
-  /*    the configuration.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UInt32
+   *
+   *   A typedef for a 32bit unsigned integer type.  The size depends on
+   *   the configuration.
+   */
   typedef unsigned XXX  FT_UInt32;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int64                                                           */
-  /*                                                                       */
-  /*    A typedef for a 64bit signed integer type.  The size depends on    */
-  /*    the configuration.  Only defined if there is real 64bit support;   */
-  /*    otherwise, it gets emulated with a structure (if necessary).       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Int64
+   *
+   *   A typedef for a 64bit signed integer type.  The size depends on
+   *   the configuration.  Only defined if there is real 64bit support;
+   *   otherwise, it gets emulated with a structure (if necessary).
+   */
   typedef signed XXX  FT_Int64;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt64                                                          */
-  /*                                                                       */
-  /*    A typedef for a 64bit unsigned integer type.  The size depends on  */
-  /*    the configuration.  Only defined if there is real 64bit support;   */
-  /*    otherwise, it gets emulated with a structure (if necessary).       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UInt64
+   *
+   *   A typedef for a 64bit unsigned integer type.  The size depends on
+   *   the configuration.  Only defined if there is real 64bit support;
+   *   otherwise, it gets emulated with a structure (if necessary).
+   */
   typedef unsigned XXX  FT_UInt64;
 
   /* */
@@ -274,13 +274,13 @@
 #define FT_INT64   long
 #define FT_UINT64  unsigned long
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* A 64-bit data type may create compilation problems if you compile     */
-  /* in strict ANSI mode.  To avoid them, we disable other 64-bit data     */
-  /* types if __STDC__ is defined.  You can however ignore this rule       */
-  /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * A 64-bit data type may create compilation problems if you compile
+   * in strict ANSI mode.  To avoid them, we disable other 64-bit data
+   * types if __STDC__ is defined.  You can however ignore this rule
+   * by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro.
+   */
 #elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
 
 #if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
@@ -342,11 +342,11 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* miscellaneous                                                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * miscellaneous
+   *
+   */
 
 
 #define FT_BEGIN_STMNT  do {
@@ -422,9 +422,9 @@
 #endif /* !FT_BASE_DEF */
 
 
-  /*   When compiling FreeType as a DLL, some systems/compilers need a     */
-  /*   special attribute in front OR after the return type of function     */
-  /*   declarations.                                                       */
+  /*   When compiling FreeType as a DLL or DSO with hidden visibility      */
+  /*   some systems/compilers need a special attribute in front OR after   */
+  /*   the return type of function declarations.                           */
   /*                                                                       */
   /*   Two macros are used within the FreeType source code to define       */
   /*   exported library functions: FT_EXPORT and FT_EXPORT_DEF.            */
@@ -455,21 +455,30 @@
   /*                                                                       */
 #ifndef FT_EXPORT
 
-#ifdef __cplusplus
+#ifdef FT2_BUILD_LIBRARY
+
+#if defined( _WIN32 ) && defined( DLL_EXPORT )
+#define FT_EXPORT( x )  __declspec( dllexport )  x
+#elif defined( __GNUC__ ) && __GNUC__ >= 4
+#define FT_EXPORT( x )  __attribute__(( visibility( "default" ) ))  x
+#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550
+#define FT_EXPORT( x )  __global  x
+#elif defined( __cplusplus )
 #define FT_EXPORT( x )  extern "C"  x
 #else
 #define FT_EXPORT( x )  extern  x
 #endif
 
-#ifdef _WIN32
-#if defined( FT2_BUILD_LIBRARY ) && \
-    ( defined( _DLL ) || defined( DLL_EXPORT ) )
-#undef FT_EXPORT
-#define FT_EXPORT( x )  __declspec( dllexport )  x
-#elif defined( FT2_DLLIMPORT )
-#undef FT_EXPORT
+#else
+
+#if defined( _WIN32 ) && defined( DLL_IMPORT )
 #define FT_EXPORT( x )  __declspec( dllimport )  x
+#elif defined( __cplusplus )
+#define FT_EXPORT( x )  extern "C"  x
+#else
+#define FT_EXPORT( x )  extern  x
 #endif
+
 #endif
 
 #endif /* !FT_EXPORT */
diff --git a/include/freetype/config/ftheader.h b/include/freetype/config/ftheader.h
index 702f77c..bb96837 100644
--- a/include/freetype/config/ftheader.h
+++ b/include/freetype/config/ftheader.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftheader.h                                                             */
-/*                                                                         */
-/*    Build macros of the FreeType 2 library.                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftheader.h
+ *
+ *   Build macros of the FreeType 2 library.
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #ifndef FTHEADER_H_
 #define FTHEADER_H_
@@ -55,43 +55,43 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Aliases for the FreeType 2 public and configuration files.            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Aliases for the FreeType 2 public and configuration files.
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    header_file_macros                                                 */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Header File Macros                                                 */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Macro definitions used to #include specific header files.          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The following macros are defined to the name of specific           */
-  /*    FreeType~2 header files.  They can be used directly in #include    */
-  /*    statements as in:                                                  */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      #include FT_FREETYPE_H                                           */
-  /*      #include FT_MULTIPLE_MASTERS_H                                   */
-  /*      #include FT_GLYPH_H                                              */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    There are several reasons why we are now using macros to name      */
-  /*    public header files.  The first one is that such macros are not    */
-  /*    limited to the infamous 8.3~naming rule required by DOS (and       */
-  /*    `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h').   */
-  /*                                                                       */
-  /*    The second reason is that it allows for more flexibility in the    */
-  /*    way FreeType~2 is installed on a given system.                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   header_file_macros
+   *
+   * @title:
+   *   Header File Macros
+   *
+   * @abstract:
+   *   Macro definitions used to #include specific header files.
+   *
+   * @description:
+   *   The following macros are defined to the name of specific
+   *   FreeType~2 header files.  They can be used directly in #include
+   *   statements as in:
+   *
+   *   {
+   *     #include FT_FREETYPE_H
+   *     #include FT_MULTIPLE_MASTERS_H
+   *     #include FT_GLYPH_H
+   *   }
+   *
+   *   There are several reasons why we are now using macros to name
+   *   public header files.  The first one is that such macros are not
+   *   limited to the infamous 8.3~naming rule required by DOS (and
+   *   `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h').
+   *
+   *   The second reason is that it allows for more flexibility in the
+   *   way FreeType~2 is installed on a given system.
+   *
+   */
 
 
   /* configuration files */
@@ -760,6 +760,18 @@
 #define FT_ADVANCES_H  <freetype/ftadvanc.h>
 
 
+  /*************************************************************************
+   *
+   * @macro:
+   *   FT_COLOR_H
+   *
+   * @description:
+   *   A macro used in #include statements to name the file containing the
+   *   FreeType~2 API which handles the OpenType CPAL table.
+   */
+#define FT_COLOR_H  <freetype/ftcolor.h>
+
+
   /* */
 
   /* These header files don't need to be included by the user. */
diff --git a/include/freetype/config/ftmodule.h b/include/freetype/config/ftmodule.h
index 92af593..e751509 100644
--- a/include/freetype/config/ftmodule.h
+++ b/include/freetype/config/ftmodule.h
@@ -1,12 +1,12 @@
 /*
- *  This file registers the FreeType modules compiled into the library.
+ * This file registers the FreeType modules compiled into the library.
  *
- *  If you use GNU make, this file IS NOT USED!  Instead, it is created in
- *  the objects directory (normally `<topdir>/objs/') based on information
- *  from `<topdir>/modules.cfg'.
+ * If you use GNU make, this file IS NOT USED!  Instead, it is created in
+ * the objects directory (normally `<topdir>/objs/') based on information
+ * from `<topdir>/modules.cfg'.
  *
- *  Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile
- *  FreeType without GNU make.
+ * Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile
+ * FreeType without GNU make.
  *
  */
 // ANDROID: commented out ones are not needed for android, previously they were deleted
diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
index fa0d661..b2e6685 100644
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftoption.h                                                             */
-/*                                                                         */
-/*    User-selectable configuration macros (specification only).           */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftoption.h
+ *
+ *   User-selectable configuration macros (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTOPTION_H_
@@ -25,45 +25,47 @@
 
 FT_BEGIN_HEADER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* This file contains the default configuration macro definitions for    */
-  /* a standard build of the FreeType library.  There are three ways to    */
-  /* use this file to build project-specific versions of the library:      */
-  /*                                                                       */
-  /*  - You can modify this file by hand, but this is not recommended in   */
-  /*    cases where you would like to build several versions of the        */
-  /*    library from a single source directory.                            */
-  /*                                                                       */
-  /*  - You can put a copy of this file in your build directory, more      */
-  /*    precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD'   */
-  /*    is the name of a directory that is included _before_ the FreeType  */
-  /*    include path during compilation.                                   */
-  /*                                                                       */
-  /*    The default FreeType Makefiles and Jamfiles use the build          */
-  /*    directory `builds/<system>' by default, but you can easily change  */
-  /*    that for your own projects.                                        */
-  /*                                                                       */
-  /*  - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it    */
-  /*    slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to       */
-  /*    locate this file during the build.  For example,                   */
-  /*                                                                       */
-  /*      #define FT_CONFIG_OPTIONS_H  <myftoptions.h>                     */
-  /*      #include <freetype/config/ftheader.h>                            */
-  /*                                                                       */
-  /*    will use `$BUILD/myftoptions.h' instead of this file for macro     */
-  /*    definitions.                                                       */
-  /*                                                                       */
-  /*    Note also that you can similarly pre-define the macro              */
-  /*    FT_CONFIG_MODULES_H used to locate the file listing of the modules */
-  /*    that are statically linked to the library at compile time.  By     */
-  /*    default, this file is <freetype/config/ftmodule.h>.                */
-  /*                                                                       */
-  /* We highly recommend using the third method whenever possible.         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                USER-SELECTABLE CONFIGURATION MACROS
+   *
+   * This file contains the default configuration macro definitions for
+   * a standard build of the FreeType library.  There are three ways to
+   * use this file to build project-specific versions of the library:
+   *
+   * - You can modify this file by hand, but this is not recommended in
+   *   cases where you would like to build several versions of the
+   *   library from a single source directory.
+   *
+   * - You can put a copy of this file in your build directory, more
+   *   precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD'
+   *   is the name of a directory that is included _before_ the FreeType
+   *   include path during compilation.
+   *
+   *   The default FreeType Makefiles and Jamfiles use the build
+   *   directory `builds/<system>' by default, but you can easily change
+   *   that for your own projects.
+   *
+   * - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it
+   *   slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to
+   *   locate this file during the build.  For example,
+   *
+   *   {
+   *     #define FT_CONFIG_OPTIONS_H  <myftoptions.h>
+   *     #include <freetype/config/ftheader.h>
+   *   }
+   *
+   *   will use `$BUILD/myftoptions.h' instead of this file for macro
+   *   definitions.
+   *
+   *   Note also that you can similarly pre-define the macro
+   *   FT_CONFIG_MODULES_H used to locate the file listing of the modules
+   *   that are statically linked to the library at compile time.  By
+   *   default, this file is <freetype/config/ftmodule.h>.
+   *
+   * We highly recommend using the third method whenever possible.
+   *
+   */
 
 
   /*************************************************************************/
@@ -75,445 +77,430 @@
   /*************************************************************************/
 
 
-  /*#***********************************************************************/
-  /*                                                                       */
-  /* If you enable this configuration option, FreeType recognizes an       */
-  /* environment variable called `FREETYPE_PROPERTIES', which can be used  */
-  /* to control the various font drivers and modules.  The controllable    */
-  /* properties are listed in the section @properties.                     */
-  /*                                                                       */
-  /* `FREETYPE_PROPERTIES' has the following syntax form (broken here into */
-  /* multiple lines for better readability).                               */
-  /*                                                                       */
-  /* {                                                                     */
-  /*   <optional whitespace>                                               */
-  /*   <module-name1> ':'                                                  */
-  /*   <property-name1> '=' <property-value1>                              */
-  /*   <whitespace>                                                        */
-  /*   <module-name2> ':'                                                  */
-  /*   <property-name2> '=' <property-value2>                              */
-  /*   ...                                                                 */
-  /* }                                                                     */
-  /*                                                                       */
-  /* Example:                                                              */
-  /*                                                                       */
-  /*   FREETYPE_PROPERTIES=truetype:interpreter-version=35 \               */
-  /*                       cff:no-stem-darkening=1 \                       */
-  /*                       autofitter:warping=1                            */
-  /*                                                                       */
-  /* ANDROID: disabled */
-  /* #define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES                       */
+  /*#************************************************************************
+   *
+   * If you enable this configuration option, FreeType recognizes an
+   * environment variable called `FREETYPE_PROPERTIES', which can be used to
+   * control the various font drivers and modules.  The controllable
+   * properties are listed in the section @properties.
+   *
+   * You have to undefine this configuration option on platforms that lack
+   * the concept of environment variables (and thus don't have the `getenv'
+   * function), for example Windows CE.
+   *
+   * `FREETYPE_PROPERTIES' has the following syntax form (broken here into
+   * multiple lines for better readability).
+   *
+   * {
+   *   <optional whitespace>
+   *   <module-name1> ':'
+   *   <property-name1> '=' <property-value1>
+   *   <whitespace>
+   *   <module-name2> ':'
+   *   <property-name2> '=' <property-value2>
+   *   ...
+   * }
+   *
+   * Example:
+   *
+   * {
+   *   FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
+   *                       cff:no-stem-darkening=1 \
+   *                       autofitter:warping=1
+   * }
+   *
+   */
+/* ANDROID: disabled */
+/* #define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES                       */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Uncomment the line below if you want to activate LCD rendering        */
-  /* technology similar to ClearType in this build of the library.  This   */
-  /* technology triples the resolution in the direction color subpixels.   */
-  /* To mitigate color fringes inherent to this technology, you also need  */
-  /* to explicitly set up LCD filtering.                                   */
-  /*                                                                       */
-  /* Note that this feature is covered by several Microsoft patents        */
-  /* and should not be activated in any default build of the library.      */
-  /* When this macro is not defined, FreeType offers alternative LCD       */
-  /* rendering technology that produces excellent output without LCD       */
-  /* filtering.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Uncomment the line below if you want to activate LCD rendering
+   * technology similar to ClearType in this build of the library.  This
+   * technology triples the resolution in the direction color subpixels.
+   * To mitigate color fringes inherent to this technology, you also need
+   * to explicitly set up LCD filtering.
+   *
+   * Note that this feature is covered by several Microsoft patents
+   * and should not be activated in any default build of the library.
+   * When this macro is not defined, FreeType offers alternative LCD
+   * rendering technology that produces excellent output without LCD
+   * filtering.
+   */
 /* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Many compilers provide a non-ANSI 64-bit data type that can be used   */
-  /* by FreeType to speed up some computations.  However, this will create */
-  /* some problems when compiling the library in strict ANSI mode.         */
-  /*                                                                       */
-  /* For this reason, the use of 64-bit integers is normally disabled when */
-  /* the __STDC__ macro is defined.  You can however disable this by       */
-  /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here.                 */
-  /*                                                                       */
-  /* For most compilers, this will only create compilation warnings when   */
-  /* building the library.                                                 */
-  /*                                                                       */
-  /* ObNote: The compiler-specific 64-bit integers are detected in the     */
-  /*         file `ftconfig.h' either statically or through the            */
-  /*         `configure' script on supported platforms.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Many compilers provide a non-ANSI 64-bit data type that can be used
+   * by FreeType to speed up some computations.  However, this will create
+   * some problems when compiling the library in strict ANSI mode.
+   *
+   * For this reason, the use of 64-bit integers is normally disabled when
+   * the __STDC__ macro is defined.  You can however disable this by
+   * defining the macro FT_CONFIG_OPTION_FORCE_INT64 here.
+   *
+   * For most compilers, this will only create compilation warnings when
+   * building the library.
+   *
+   * ObNote: The compiler-specific 64-bit integers are detected in the
+   *         file `ftconfig.h' either statically or through the
+   *         `configure' script on supported platforms.
+   */
 #undef FT_CONFIG_OPTION_FORCE_INT64
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* If this macro is defined, do not try to use an assembler version of   */
-  /* performance-critical functions (e.g. FT_MulFix).  You should only do  */
-  /* that to verify that the assembler function works properly, or to      */
-  /* execute benchmark tests of the various implementations.               */
+  /**************************************************************************
+   *
+   * If this macro is defined, do not try to use an assembler version of
+   * performance-critical functions (e.g. FT_MulFix).  You should only do
+   * that to verify that the assembler function works properly, or to
+   * execute benchmark tests of the various implementations.
+   */
 /* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* If this macro is defined, try to use an inlined assembler version of  */
-  /* the `FT_MulFix' function, which is a `hotspot' when loading and       */
-  /* hinting glyphs, and which should be executed as fast as possible.     */
-  /*                                                                       */
-  /* Note that if your compiler or CPU is not supported, this will default */
-  /* to the standard and portable implementation found in `ftcalc.c'.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * If this macro is defined, try to use an inlined assembler version of
+   * the `FT_MulFix' function, which is a `hotspot' when loading and
+   * hinting glyphs, and which should be executed as fast as possible.
+   *
+   * Note that if your compiler or CPU is not supported, this will default
+   * to the standard and portable implementation found in `ftcalc.c'.
+   */
 #define FT_CONFIG_OPTION_INLINE_MULFIX
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* LZW-compressed file support.                                          */
-  /*                                                                       */
-  /*   FreeType now handles font files that have been compressed with the  */
-  /*   `compress' program.  This is mostly used to parse many of the PCF   */
-  /*   files that come with various X11 distributions.  The implementation */
-  /*   uses NetBSD's `zopen' to partially uncompress the file on the fly   */
-  /*   (see src/lzw/ftgzip.c).                                             */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * LZW-compressed file support.
+   *
+   *   FreeType now handles font files that have been compressed with the
+   *   `compress' program.  This is mostly used to parse many of the PCF
+   *   files that come with various X11 distributions.  The implementation
+   *   uses NetBSD's `zopen' to partially uncompress the file on the fly
+   *   (see src/lzw/ftgzip.c).
+   *
+   *   Define this macro if you want to enable this `feature'.
+   */
 #define FT_CONFIG_OPTION_USE_LZW
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Gzip-compressed file support.                                         */
-  /*                                                                       */
-  /*   FreeType now handles font files that have been compressed with the  */
-  /*   `gzip' program.  This is mostly used to parse many of the PCF files */
-  /*   that come with XFree86.  The implementation uses `zlib' to          */
-  /*   partially uncompress the file on the fly (see src/gzip/ftgzip.c).   */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.  See also   */
-  /*   the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Gzip-compressed file support.
+   *
+   *   FreeType now handles font files that have been compressed with the
+   *   `gzip' program.  This is mostly used to parse many of the PCF files
+   *   that come with XFree86.  The implementation uses `zlib' to
+   *   partially uncompress the file on the fly (see src/gzip/ftgzip.c).
+   *
+   *   Define this macro if you want to enable this `feature'.  See also
+   *   the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below.
+   */
 #define FT_CONFIG_OPTION_USE_ZLIB
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ZLib library selection                                                */
-  /*                                                                       */
-  /*   This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined.  */
-  /*   It allows FreeType's `ftgzip' component to link to the system's     */
-  /*   installation of the ZLib library.  This is useful on systems like   */
-  /*   Unix or VMS where it generally is already available.                */
-  /*                                                                       */
-  /*   If you let it undefined, the component will use its own copy        */
-  /*   of the zlib sources instead.  These have been modified to be        */
-  /*   included directly within the component and *not* export external    */
-  /*   function names.  This allows you to link any program with FreeType  */
-  /*   _and_ ZLib without linking conflicts.                               */
-  /*                                                                       */
-  /*   Do not #undef this macro here since the build system might define   */
-  /*   it for certain configurations only.                                 */
-  /*                                                                       */
-  /*   If you use a build system like cmake or the `configure' script,     */
-  /*   options set by those programs have precendence, overwriting the     */
-  /*   value here with the configured one.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ZLib library selection
+   *
+   *   This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined.
+   *   It allows FreeType's `ftgzip' component to link to the system's
+   *   installation of the ZLib library.  This is useful on systems like
+   *   Unix or VMS where it generally is already available.
+   *
+   *   If you let it undefined, the component will use its own copy
+   *   of the zlib sources instead.  These have been modified to be
+   *   included directly within the component and *not* export external
+   *   function names.  This allows you to link any program with FreeType
+   *   _and_ ZLib without linking conflicts.
+   *
+   *   Do not #undef this macro here since the build system might define
+   *   it for certain configurations only.
+   *
+   *   If you use a build system like cmake or the `configure' script,
+   *   options set by those programs have precendence, overwriting the
+   *   value here with the configured one.
+   */
 /* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Bzip2-compressed file support.                                        */
-  /*                                                                       */
-  /*   FreeType now handles font files that have been compressed with the  */
-  /*   `bzip2' program.  This is mostly used to parse many of the PCF      */
-  /*   files that come with XFree86.  The implementation uses `libbz2' to  */
-  /*   partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */
-  /*   Contrary to gzip, bzip2 currently is not included and need to use   */
-  /*   the system available bzip2 implementation.                          */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
-  /*   If you use a build system like cmake or the `configure' script,     */
-  /*   options set by those programs have precendence, overwriting the     */
-  /*   value here with the configured one.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Bzip2-compressed file support.
+   *
+   *   FreeType now handles font files that have been compressed with the
+   *   `bzip2' program.  This is mostly used to parse many of the PCF
+   *   files that come with XFree86.  The implementation uses `libbz2' to
+   *   partially uncompress the file on the fly (see src/bzip2/ftbzip2.c).
+   *   Contrary to gzip, bzip2 currently is not included and need to use
+   *   the system available bzip2 implementation.
+   *
+   *   Define this macro if you want to enable this `feature'.
+   *
+   *   If you use a build system like cmake or the `configure' script,
+   *   options set by those programs have precendence, overwriting the
+   *   value here with the configured one.
+   */
 /* #define FT_CONFIG_OPTION_USE_BZIP2 */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define to disable the use of file stream functions and types, FILE,   */
-  /* fopen() etc.  Enables the use of smaller system libraries on embedded */
-  /* systems that have multiple system libraries, some with or without     */
-  /* file stream support, in the cases where file stream support is not    */
-  /* necessary such as memory loading of font files.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define to disable the use of file stream functions and types, FILE,
+   * fopen() etc.  Enables the use of smaller system libraries on embedded
+   * systems that have multiple system libraries, some with or without
+   * file stream support, in the cases where file stream support is not
+   * necessary such as memory loading of font files.
+   */
 /* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PNG bitmap support.                                                   */
-  /*                                                                       */
-  /*   FreeType now handles loading color bitmap glyphs in the PNG format. */
-  /*   This requires help from the external libpng library.  Uncompressed  */
-  /*   color bitmaps do not need any external libraries and will be        */
-  /*   supported regardless of this configuration.                         */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*   If you use a build system like cmake or the `configure' script,     */
-  /*   options set by those programs have precendence, overwriting the     */
-  /*   value here with the configured one.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * PNG bitmap support.
+   *
+   *   FreeType now handles loading color bitmap glyphs in the PNG format.
+   *   This requires help from the external libpng library.  Uncompressed
+   *   color bitmaps do not need any external libraries and will be
+   *   supported regardless of this configuration.
+   *
+   *   Define this macro if you want to enable this `feature'.
+   *
+   *   If you use a build system like cmake or the `configure' script,
+   *   options set by those programs have precendence, overwriting the
+   *   value here with the configured one.
+   */
   /* ANDROID: enabled */
 #define FT_CONFIG_OPTION_USE_PNG
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* HarfBuzz support.                                                     */
-  /*                                                                       */
-  /*   FreeType uses the HarfBuzz library to improve auto-hinting of       */
-  /*   OpenType fonts.  If available, many glyphs not directly addressable */
-  /*   by a font's character map will be hinted also.                      */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
-  /*   If you use a build system like cmake or the `configure' script,     */
-  /*   options set by those programs have precendence, overwriting the     */
-  /*   value here with the configured one.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * HarfBuzz support.
+   *
+   *   FreeType uses the HarfBuzz library to improve auto-hinting of
+   *   OpenType fonts.  If available, many glyphs not directly addressable
+   *   by a font's character map will be hinted also.
+   *
+   *   Define this macro if you want to enable this `feature'.
+   *
+   *   If you use a build system like cmake or the `configure' script,
+   *   options set by those programs have precendence, overwriting the
+   *   value here with the configured one.
+   */
 /* #define FT_CONFIG_OPTION_USE_HARFBUZZ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Glyph Postscript Names handling                                       */
-  /*                                                                       */
-  /*   By default, FreeType 2 is compiled with the `psnames' module.  This */
-  /*   module is in charge of converting a glyph name string into a        */
-  /*   Unicode value, or return a Macintosh standard glyph name for the    */
-  /*   use with the TrueType `post' table.                                 */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want `psnames' compiled in your   */
-  /*   build of FreeType.  This has the following effects:                 */
-  /*                                                                       */
-  /*   - The TrueType driver will provide its own set of glyph names,      */
-  /*     if you build it to support postscript names in the TrueType       */
-  /*     `post' table, but will not synthesize a missing Unicode charmap.  */
-  /*                                                                       */
-  /*   - The Type 1 driver will not be able to synthesize a Unicode        */
-  /*     charmap out of the glyphs found in the fonts.                     */
-  /*                                                                       */
-  /*   You would normally undefine this configuration macro when building  */
-  /*   a version of FreeType that doesn't contain a Type 1 or CFF driver.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Glyph Postscript Names handling
+   *
+   *   By default, FreeType 2 is compiled with the `psnames' module.  This
+   *   module is in charge of converting a glyph name string into a
+   *   Unicode value, or return a Macintosh standard glyph name for the
+   *   use with the TrueType `post' table.
+   *
+   *   Undefine this macro if you do not want `psnames' compiled in your
+   *   build of FreeType.  This has the following effects:
+   *
+   *   - The TrueType driver will provide its own set of glyph names,
+   *     if you build it to support postscript names in the TrueType
+   *     `post' table, but will not synthesize a missing Unicode charmap.
+   *
+   *   - The Type 1 driver will not be able to synthesize a Unicode
+   *     charmap out of the glyphs found in the fonts.
+   *
+   *   You would normally undefine this configuration macro when building
+   *   a version of FreeType that doesn't contain a Type 1 or CFF driver.
+   */
 #define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Postscript Names to Unicode Values support                            */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the `PSNames' module compiled  */
-  /*   in.  Among other things, the module is used to convert a glyph name */
-  /*   into a Unicode value.  This is especially useful in order to        */
-  /*   synthesize on the fly a Unicode charmap from the CFF/Type 1 driver  */
-  /*   through a big table named the `Adobe Glyph List' (AGL).             */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the Adobe Glyph List         */
-  /*   compiled in your `PSNames' module.  The Type 1 driver will not be   */
-  /*   able to synthesize a Unicode charmap out of the glyphs found in the */
-  /*   fonts.                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Postscript Names to Unicode Values support
+   *
+   *   By default, FreeType 2 is built with the `PSNames' module compiled
+   *   in.  Among other things, the module is used to convert a glyph name
+   *   into a Unicode value.  This is especially useful in order to
+   *   synthesize on the fly a Unicode charmap from the CFF/Type 1 driver
+   *   through a big table named the `Adobe Glyph List' (AGL).
+   *
+   *   Undefine this macro if you do not want the Adobe Glyph List
+   *   compiled in your `PSNames' module.  The Type 1 driver will not be
+   *   able to synthesize a Unicode charmap out of the glyphs found in the
+   *   fonts.
+   */
 #define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Support for Mac fonts                                                 */
-  /*                                                                       */
-  /*   Define this macro if you want support for outline fonts in Mac      */
-  /*   format (mac dfont, mac resource, macbinary containing a mac         */
-  /*   resource) on non-Mac platforms.                                     */
-  /*                                                                       */
-  /*   Note that the `FOND' resource isn't checked.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Support for Mac fonts
+   *
+   *   Define this macro if you want support for outline fonts in Mac
+   *   format (mac dfont, mac resource, macbinary containing a mac
+   *   resource) on non-Mac platforms.
+   *
+   *   Note that the `FOND' resource isn't checked.
+   */
 #define FT_CONFIG_OPTION_MAC_FONTS
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Guessing methods to access embedded resource forks                    */
-  /*                                                                       */
-  /*   Enable extra Mac fonts support on non-Mac platforms (e.g.           */
-  /*   GNU/Linux).                                                         */
-  /*                                                                       */
-  /*   Resource forks which include fonts data are stored sometimes in     */
-  /*   locations which users or developers don't expected.  In some cases, */
-  /*   resource forks start with some offset from the head of a file.  In  */
-  /*   other cases, the actual resource fork is stored in file different   */
-  /*   from what the user specifies.  If this option is activated,         */
-  /*   FreeType tries to guess whether such offsets or different file      */
-  /*   names must be used.                                                 */
-  /*                                                                       */
-  /*   Note that normal, direct access of resource forks is controlled via */
-  /*   the FT_CONFIG_OPTION_MAC_FONTS option.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Guessing methods to access embedded resource forks
+   *
+   *   Enable extra Mac fonts support on non-Mac platforms (e.g., GNU/Linux).
+   *
+   *   Resource forks which include fonts data are stored sometimes in
+   *   locations which users or developers don't expected.  In some cases,
+   *   resource forks start with some offset from the head of a file.  In
+   *   other cases, the actual resource fork is stored in file different
+   *   from what the user specifies.  If this option is activated,
+   *   FreeType tries to guess whether such offsets or different file
+   *   names must be used.
+   *
+   *   Note that normal, direct access of resource forks is controlled via
+   *   the FT_CONFIG_OPTION_MAC_FONTS option.
+   */
 #ifdef FT_CONFIG_OPTION_MAC_FONTS
 #define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Allow the use of FT_Incremental_Interface to load typefaces that      */
-  /* contain no glyph data, but supply it via a callback function.         */
-  /* This is required by clients supporting document formats which         */
-  /* supply font data incrementally as the document is parsed, such        */
-  /* as the Ghostscript interpreter for the PostScript language.           */
-  /*                                                                       */
-  /* ANDROID: disabled */
-  /* #define FT_CONFIG_OPTION_INCREMENTAL                                  */
+  /**************************************************************************
+   *
+   * Allow the use of FT_Incremental_Interface to load typefaces that
+   * contain no glyph data, but supply it via a callback function.
+   * This is required by clients supporting document formats which
+   * supply font data incrementally as the document is parsed, such
+   * as the Ghostscript interpreter for the PostScript language.
+   */
+/* ANDROID: disabled */
+/* #define FT_CONFIG_OPTION_INCREMENTAL                                  */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The size in bytes of the render pool used by the scan-line converter  */
-  /* to do all of its work.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The size in bytes of the render pool used by the scan-line converter
+   * to do all of its work.
+   */
 #define FT_RENDER_POOL_SIZE  16384L
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FT_MAX_MODULES                                                        */
-  /*                                                                       */
-  /*   The maximum number of modules that can be registered in a single    */
-  /*   FreeType library object.  32 is the default.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FT_MAX_MODULES
+   *
+   *   The maximum number of modules that can be registered in a single
+   *   FreeType library object.  32 is the default.
+   */
 #define FT_MAX_MODULES  32
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Debug level                                                           */
-  /*                                                                       */
-  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
-  /*   errors are reported through the `ftdebug' component.  In trace      */
-  /*   mode, additional messages are sent to the standard output during    */
-  /*   execution.                                                          */
-  /*                                                                       */
-  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
-  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
-  /*                                                                       */
-  /*   Don't define any of these macros to compile in `release' mode!      */
-  /*                                                                       */
-  /*   Do not #undef these macros here since the build system might define */
-  /*   them for certain configurations only.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Debug level
+   *
+   *   FreeType can be compiled in debug or trace mode.  In debug mode,
+   *   errors are reported through the `ftdebug' component.  In trace
+   *   mode, additional messages are sent to the standard output during
+   *   execution.
+   *
+   *   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.
+   *   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.
+   *
+   *   Don't define any of these macros to compile in `release' mode!
+   *
+   *   Do not #undef these macros here since the build system might define
+   *   them for certain configurations only.
+   */
 /* #define FT_DEBUG_LEVEL_ERROR */
 /* #define FT_DEBUG_LEVEL_TRACE */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Autofitter debugging                                                  */
-  /*                                                                       */
-  /*   If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to     */
-  /*   control the autofitter behaviour for debugging purposes with global */
-  /*   boolean variables (consequently, you should *never* enable this     */
-  /*   while compiling in `release' mode):                                 */
-  /*                                                                       */
-  /*     _af_debug_disable_horz_hints                                      */
-  /*     _af_debug_disable_vert_hints                                      */
-  /*     _af_debug_disable_blue_hints                                      */
-  /*                                                                       */
-  /*   Additionally, the following functions provide dumps of various      */
-  /*   internal autofit structures to stdout (using `printf'):             */
-  /*                                                                       */
-  /*     af_glyph_hints_dump_points                                        */
-  /*     af_glyph_hints_dump_segments                                      */
-  /*     af_glyph_hints_dump_edges                                         */
-  /*     af_glyph_hints_get_num_segments                                   */
-  /*     af_glyph_hints_get_segment_offset                                 */
-  /*                                                                       */
-  /*   As an argument, they use another global variable:                   */
-  /*                                                                       */
-  /*     _af_debug_hints                                                   */
-  /*                                                                       */
-  /*   Please have a look at the `ftgrid' demo program to see how those    */
-  /*   variables and macros should be used.                                */
-  /*                                                                       */
-  /*   Do not #undef these macros here since the build system might define */
-  /*   them for certain configurations only.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Autofitter debugging
+   *
+   *   If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to
+   *   control the autofitter behaviour for debugging purposes with global
+   *   boolean variables (consequently, you should *never* enable this
+   *   while compiling in `release' mode):
+   *
+   *   {
+   *     _af_debug_disable_horz_hints
+   *     _af_debug_disable_vert_hints
+   *     _af_debug_disable_blue_hints
+   *   }
+   *
+   *   Additionally, the following functions provide dumps of various
+   *   internal autofit structures to stdout (using `printf'):
+   *
+   *   {
+   *     af_glyph_hints_dump_points
+   *     af_glyph_hints_dump_segments
+   *     af_glyph_hints_dump_edges
+   *     af_glyph_hints_get_num_segments
+   *     af_glyph_hints_get_segment_offset
+   *   }
+   *
+   *   As an argument, they use another global variable:
+   *
+   *   {
+   *     _af_debug_hints
+   *   }
+   *
+   *   Please have a look at the `ftgrid' demo program to see how those
+   *   variables and macros should be used.
+   *
+   *   Do not #undef these macros here since the build system might define
+   *   them for certain configurations only.
+   */
 /* #define FT_DEBUG_AUTOFIT */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Memory Debugging                                                      */
-  /*                                                                       */
-  /*   FreeType now comes with an integrated memory debugger that is       */
-  /*   capable of detecting simple errors like memory leaks or double      */
-  /*   deletes.  To compile it within your build of the library, you       */
-  /*   should define FT_DEBUG_MEMORY here.                                 */
-  /*                                                                       */
-  /*   Note that the memory debugger is only activated at runtime when     */
-  /*   when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */
-  /*                                                                       */
-  /*   Do not #undef this macro here since the build system might define   */
-  /*   it for certain configurations only.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Memory Debugging
+   *
+   *   FreeType now comes with an integrated memory debugger that is
+   *   capable of detecting simple errors like memory leaks or double
+   *   deletes.  To compile it within your build of the library, you
+   *   should define FT_DEBUG_MEMORY here.
+   *
+   *   Note that the memory debugger is only activated at runtime when
+   *   when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also!
+   *
+   *   Do not #undef this macro here since the build system might define
+   *   it for certain configurations only.
+   */
 /* #define FT_DEBUG_MEMORY */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Module errors                                                         */
-  /*                                                                       */
-  /*   If this macro is set (which is _not_ the default), the higher byte  */
-  /*   of an error code gives the module in which the error has occurred,  */
-  /*   while the lower byte is the real error code.                        */
-  /*                                                                       */
-  /*   Setting this macro makes sense for debugging purposes only, since   */
-  /*   it would break source compatibility of certain programs that use    */
-  /*   FreeType 2.                                                         */
-  /*                                                                       */
-  /*   More details can be found in the files ftmoderr.h and fterrors.h.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Module errors
+   *
+   *   If this macro is set (which is _not_ the default), the higher byte
+   *   of an error code gives the module in which the error has occurred,
+   *   while the lower byte is the real error code.
+   *
+   *   Setting this macro makes sense for debugging purposes only, since
+   *   it would break source compatibility of certain programs that use
+   *   FreeType 2.
+   *
+   *   More details can be found in the files ftmoderr.h and fterrors.h.
+   */
 #undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
 
 
   /*************************************************************************/
-  /*                                                                       */
-  /* Position Independent Code                                             */
-  /*                                                                       */
-  /*   If this macro is set (which is _not_ the default), FreeType2 will   */
-  /*   avoid creating constants that require address fixups.  Instead the  */
-  /*   constants will be moved into a struct and additional intialization  */
-  /*   code will be used.                                                  */
-  /*                                                                       */
-  /*   Setting this macro is needed for systems that prohibit address      */
-  /*   fixups, such as BREW.  [Note that standard compilers like gcc or    */
-  /*   clang handle PIC generation automatically; you don't have to set    */
-  /*   FT_CONFIG_OPTION_PIC, which is only necessary for very special      */
-  /*   compilers.]                                                         */
-  /*                                                                       */
-  /*   Note that FT_CONFIG_OPTION_PIC support is not available for all     */
-  /*   modules (see `modules.cfg' for a complete list).  For building with */
-  /*   FT_CONFIG_OPTION_PIC support, do the following.                     */
-  /*                                                                       */
-  /*     0. Clone the repository.                                          */
-  /*     1. Define FT_CONFIG_OPTION_PIC.                                   */
-  /*     2. Remove all subdirectories in `src' that don't have             */
-  /*        FT_CONFIG_OPTION_PIC support.                                  */
-  /*     3. Comment out the corresponding modules in `modules.cfg'.        */
-  /*     4. Compile.                                                       */
-  /*                                                                       */
-/* #define FT_CONFIG_OPTION_PIC */
-
-
-  /*************************************************************************/
   /*************************************************************************/
   /****                                                                 ****/
   /****        S F N T   D R I V E R    C O N F I G U R A T I O N       ****/
@@ -522,50 +509,60 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support       */
-  /* embedded bitmaps in all formats using the SFNT module (namely         */
-  /* TrueType & OpenType).                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support
+   * embedded bitmaps in all formats using the SFNT module (namely
+   * TrueType & OpenType).
+   */
 #define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to    */
-  /* load and enumerate the glyph Postscript names in a TrueType or        */
-  /* OpenType file.                                                        */
-  /*                                                                       */
-  /* Note that when you do not compile the `PSNames' module by undefining  */
-  /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will   */
-  /* contain additional code used to read the PS Names table from a font.  */
-  /*                                                                       */
-  /* (By default, the module uses `PSNames' to extract glyph names.)       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_COLOR_LAYERS if you want to support coloured
+   * outlines (from the COLR/CPAL tables) in all formats using the SFNT
+   * module (namely TrueType & OpenType).
+   */
+#define TT_CONFIG_OPTION_COLOR_LAYERS
+
+
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to
+   * load and enumerate the glyph Postscript names in a TrueType or
+   * OpenType file.
+   *
+   * Note that when you do not compile the `PSNames' module by undefining
+   * the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will
+   * contain additional code used to read the PS Names table from a font.
+   *
+   * (By default, the module uses `PSNames' to extract glyph names.)
+   */
 #define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to       */
-  /* access the internal name table in a SFNT-based format like TrueType   */
-  /* or OpenType.  The name table contains various strings used to         */
-  /* describe the font, like family name, copyright, version, etc.  It     */
-  /* does not contain any glyph name though.                               */
-  /*                                                                       */
-  /* Accessing SFNT names is done through the functions declared in        */
-  /* `ftsnames.h'.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to
+   * access the internal name table in a SFNT-based format like TrueType
+   * or OpenType.  The name table contains various strings used to
+   * describe the font, like family name, copyright, version, etc.  It
+   * does not contain any glyph name though.
+   *
+   * Accessing SFNT names is done through the functions declared in
+   * `ftsnames.h'.
+   */
 #define TT_CONFIG_OPTION_SFNT_NAMES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TrueType CMap support                                                 */
-  /*                                                                       */
-  /*   Here you can fine-tune which TrueType CMap table format shall be    */
-  /*   supported.                                                          */
+  /**************************************************************************
+   *
+   * TrueType CMap support
+   *
+   *   Here you can fine-tune which TrueType CMap table format shall be
+   *   supported.
+   */
 #define TT_CONFIG_CMAP_FORMAT_0
 #define TT_CONFIG_CMAP_FORMAT_2
 #define TT_CONFIG_CMAP_FORMAT_4
@@ -585,76 +582,76 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile   */
-  /* a bytecode interpreter in the TrueType driver.                        */
-  /*                                                                       */
-  /* By undefining this, you will only compile the code necessary to load  */
-  /* TrueType glyphs without hinting.                                      */
-  /*                                                                       */
-  /*   Do not #undef this macro here, since the build system might         */
-  /*   define it for certain configurations only.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile
+   * a bytecode interpreter in the TrueType driver.
+   *
+   * By undefining this, you will only compile the code necessary to load
+   * TrueType glyphs without hinting.
+   *
+   *   Do not #undef this macro here, since the build system might
+   *   define it for certain configurations only.
+   */
 #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile       */
-  /* subpixel hinting support into the TrueType driver.  This modifies the */
-  /* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is   */
-  /* requested.                                                            */
-  /*                                                                       */
-  /* In particular, it modifies the bytecode interpreter to interpret (or  */
-  /* not) instructions in a certain way so that all TrueType fonts look    */
-  /* like they do in a Windows ClearType (DirectWrite) environment.  See   */
-  /* [1] for a technical overview on what this means.  See `ttinterp.h'    */
-  /* for more details on the LEAN option.                                  */
-  /*                                                                       */
-  /* There are three possible values.                                      */
-  /*                                                                       */
-  /* Value 1:                                                              */
-  /*    This value is associated with the `Infinality' moniker,            */
-  /*    contributed by an individual nicknamed Infinality with the goal of */
-  /*    making TrueType fonts render better than on Windows.  A high       */
-  /*    amount of configurability and flexibility, down to rules for       */
-  /*    single glyphs in fonts, but also very slow.  Its experimental and  */
-  /*    slow nature and the original developer losing interest meant that  */
-  /*    this option was never enabled in default builds.                   */
-  /*                                                                       */
-  /*    The corresponding interpreter version is v38.                      */
-  /*                                                                       */
-  /* Value 2:                                                              */
-  /*    The new default mode for the TrueType driver.  The Infinality code */
-  /*    base was stripped to the bare minimum and all configurability      */
-  /*    removed in the name of speed and simplicity.  The configurability  */
-  /*    was mainly aimed at legacy fonts like Arial, Times New Roman, or   */
-  /*    Courier.  Legacy fonts are fonts that modify vertical stems to     */
-  /*    achieve clean black-and-white bitmaps.  The new mode focuses on    */
-  /*    applying a minimal set of rules to all fonts indiscriminately so   */
-  /*    that modern and web fonts render well while legacy fonts render    */
-  /*    okay.                                                              */
-  /*                                                                       */
-  /*    The corresponding interpreter version is v40.                      */
-  /*                                                                       */
-  /* Value 3:                                                              */
-  /*    Compile both, making both v38 and v40 available (the latter is the */
-  /*    default).                                                          */
-  /*                                                                       */
-  /* By undefining these, you get rendering behavior like on Windows       */
-  /* without ClearType, i.e., Windows XP without ClearType enabled and     */
-  /* Win9x (interpreter version v35).  Or not, depending on how much       */
-  /* hinting blood and testing tears the font designer put into a given    */
-  /* font.  If you define one or both subpixel hinting options, you can    */
-  /* switch between between v35 and the ones you define (using             */
-  /* `FT_Property_Set').                                                   */
-  /*                                                                       */
-  /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be      */
-  /* defined.                                                              */
-  /*                                                                       */
-  /* [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile
+   * subpixel hinting support into the TrueType driver.  This modifies the
+   * TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is
+   * requested.
+   *
+   * In particular, it modifies the bytecode interpreter to interpret (or
+   * not) instructions in a certain way so that all TrueType fonts look
+   * like they do in a Windows ClearType (DirectWrite) environment.  See
+   * [1] for a technical overview on what this means.  See `ttinterp.h'
+   * for more details on the LEAN option.
+   *
+   * There are three possible values.
+   *
+   * Value 1:
+   *   This value is associated with the `Infinality' moniker,
+   *   contributed by an individual nicknamed Infinality with the goal of
+   *   making TrueType fonts render better than on Windows.  A high
+   *   amount of configurability and flexibility, down to rules for
+   *   single glyphs in fonts, but also very slow.  Its experimental and
+   *   slow nature and the original developer losing interest meant that
+   *   this option was never enabled in default builds.
+   *
+   *   The corresponding interpreter version is v38.
+   *
+   * Value 2:
+   *   The new default mode for the TrueType driver.  The Infinality code
+   *   base was stripped to the bare minimum and all configurability
+   *   removed in the name of speed and simplicity.  The configurability
+   *   was mainly aimed at legacy fonts like Arial, Times New Roman, or
+   *   Courier.  Legacy fonts are fonts that modify vertical stems to
+   *   achieve clean black-and-white bitmaps.  The new mode focuses on
+   *   applying a minimal set of rules to all fonts indiscriminately so
+   *   that modern and web fonts render well while legacy fonts render
+   *   okay.
+   *
+   *   The corresponding interpreter version is v40.
+   *
+   * Value 3:
+   *   Compile both, making both v38 and v40 available (the latter is the
+   *   default).
+   *
+   * By undefining these, you get rendering behavior like on Windows
+   * without ClearType, i.e., Windows XP without ClearType enabled and
+   * Win9x (interpreter version v35).  Or not, depending on how much
+   * hinting blood and testing tears the font designer put into a given
+   * font.  If you define one or both subpixel hinting options, you can
+   * switch between between v35 and the ones you define (using
+   * `FT_Property_Set').
+   *
+   * This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be
+   * defined.
+   *
+   * [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
+   */
 /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  1         */
 
 /* ANDROID: disabled */
@@ -663,56 +660,56 @@
 /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  ( 1 | 2 ) */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the        */
-  /* TrueType glyph loader to use Apple's definition of how to handle      */
-  /* component offsets in composite glyphs.                                */
-  /*                                                                       */
-  /* Apple and MS disagree on the default behavior of component offsets    */
-  /* in composites.  Apple says that they should be scaled by the scaling  */
-  /* factors in the transformation matrix (roughly, it's more complex)     */
-  /* while MS says they should not.  OpenType defines two bits in the      */
-  /* composite flags array which can be used to disambiguate, but old      */
-  /* fonts will not have them.                                             */
-  /*                                                                       */
-  /*   https://www.microsoft.com/typography/otspec/glyf.htm                */
-  /*   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the
+   * TrueType glyph loader to use Apple's definition of how to handle
+   * component offsets in composite glyphs.
+   *
+   * Apple and MS disagree on the default behavior of component offsets
+   * in composites.  Apple says that they should be scaled by the scaling
+   * factors in the transformation matrix (roughly, it's more complex)
+   * while MS says they should not.  OpenType defines two bits in the
+   * composite flags array which can be used to disambiguate, but old
+   * fonts will not have them.
+   *
+   *   https://www.microsoft.com/typography/otspec/glyf.htm
+   *   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html
+   */
 #undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include         */
-  /* support for Apple's distortable font technology (fvar, gvar, cvar,    */
-  /* and avar tables).  This has many similarities to Type 1 Multiple      */
-  /* Masters support.                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include
+   * support for Apple's distortable font technology (fvar, gvar, cvar,
+   * and avar tables).  This has many similarities to Type 1 Multiple
+   * Masters support.
+   */
 #define TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_BDF if you want to include support for        */
-  /* an embedded `BDF ' table within SFNT-based bitmap formats.            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define TT_CONFIG_OPTION_BDF if you want to include support for
+   * an embedded `BDF ' table within SFNT-based bitmap formats.
+   */
 #define TT_CONFIG_OPTION_BDF
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum     */
-  /* number of bytecode instructions executed for a single run of the      */
-  /* bytecode interpreter, needed to prevent infinite loops.  You don't    */
-  /* want to change this except for very special situations (e.g., making  */
-  /* a library fuzzer spend less time to handle broken fonts).             */
-  /*                                                                       */
-  /* It is not expected that this value is ever modified by a configuring  */
-  /* script; instead, it gets surrounded with #ifndef ... #endif so that   */
-  /* the value can be set as a preprocessor option on the compiler's       */
-  /* command line.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum
+   * number of bytecode instructions executed for a single run of the
+   * bytecode interpreter, needed to prevent infinite loops.  You don't
+   * want to change this except for very special situations (e.g., making
+   * a library fuzzer spend less time to handle broken fonts).
+   *
+   * It is not expected that this value is ever modified by a configuring
+   * script; instead, it gets surrounded with #ifndef ... #endif so that
+   * the value can be set as a preprocessor option on the compiler's
+   * command line.
+   */
 #ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
 #define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES  1000000L
 #endif
@@ -727,59 +724,59 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and       */
-  /* arrays in the Type 1 stream (see t1load.c).  A minimum of 4 is        */
-  /* required.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and
+   * arrays in the Type 1 stream (see t1load.c).  A minimum of 4 is
+   * required.
+   */
 #define T1_MAX_DICT_DEPTH  5
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine   */
-  /* calls during glyph loading.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine
+   * calls during glyph loading.
+   */
 #define T1_MAX_SUBRS_CALLS  16
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A     */
-  /* minimum of 16 is required.                                            */
-  /*                                                                       */
-  /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A
+   * minimum of 16 is required.
+   *
+   * The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256.
+   */
 #define T1_MAX_CHARSTRINGS_OPERANDS  256
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro if you want to prevent the            */
-  /* compilation of `t1afm', which is in charge of reading Type 1 AFM      */
-  /* files into an existing face.  Note that if set, the T1 driver will be */
-  /* unable to produce kerning distances.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define this configuration macro if you want to prevent the
+   * compilation of `t1afm', which is in charge of reading Type 1 AFM
+   * files into an existing face.  Note that if set, the T1 driver will be
+   * unable to produce kerning distances.
+   */
 #undef T1_CONFIG_OPTION_NO_AFM
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro if you want to prevent the            */
-  /* compilation of the Multiple Masters font support in the Type 1        */
-  /* driver.                                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define this configuration macro if you want to prevent the
+   * compilation of the Multiple Masters font support in the Type 1
+   * driver.
+   */
 #undef T1_CONFIG_OPTION_NO_MM_SUPPORT
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe Type 1     */
-  /* engine gets compiled into FreeType.  If defined, it is possible to    */
-  /* switch between the two engines using the `hinting-engine' property of */
-  /* the type1 driver module.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe Type 1
+   * engine gets compiled into FreeType.  If defined, it is possible to
+   * switch between the two engines using the `hinting-engine' property of
+   * the type1 driver module.
+   */
 /* #define T1_CONFIG_OPTION_OLD_ENGINE */
 
 
@@ -792,17 +789,17 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is      */
-  /* possible to set up the default values of the four control points that */
-  /* define the stem darkening behaviour of the (new) CFF engine.  For     */
-  /* more details please read the documentation of the                     */
-  /* `darkening-parameters' property (file `ftdriver.h'), which allows the */
-  /* control at run-time.                                                  */
-  /*                                                                       */
-  /* Do *not* undefine these macros!                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is
+   * possible to set up the default values of the four control points that
+   * define the stem darkening behaviour of the (new) CFF engine.  For
+   * more details please read the documentation of the
+   * `darkening-parameters' property (file `ftdriver.h'), which allows the
+   * control at run-time.
+   *
+   * Do *not* undefine these macros!
+   */
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1   500
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1   400
 
@@ -816,13 +813,13 @@
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4     0
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF       */
-  /* engine gets compiled into FreeType.  If defined, it is possible to    */
-  /* switch between the two engines using the `hinting-engine' property of */
-  /* the cff driver module.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF
+   * engine gets compiled into FreeType.  If defined, it is possible to
+   * switch between the two engines using the `hinting-engine' property of
+   * the cff driver module.
+   */
 /* #define CFF_CONFIG_OPTION_OLD_ENGINE */
 
 
@@ -835,21 +832,21 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* There are many PCF fonts just called `Fixed' which look completely    */
-  /* different, and which have nothing to do with each other.  When        */
-  /* selecting `Fixed' in KDE or Gnome one gets results that appear rather */
-  /* random, the style changes often if one changes the size and one       */
-  /* cannot select some fonts at all.  This option makes the PCF module    */
-  /* prepend the foundry name (plus a space) to the family name.           */
-  /*                                                                       */
-  /* We also check whether we have `wide' characters; all put together, we */
-  /* get family names like `Sony Fixed' or `Misc Fixed Wide'.              */
-  /*                                                                       */
-  /* If this option is activated, it can be controlled with the            */
-  /* `no-long-family-names' property of the pcf driver module.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * There are many PCF fonts just called `Fixed' which look completely
+   * different, and which have nothing to do with each other.  When
+   * selecting `Fixed' in KDE or Gnome one gets results that appear rather
+   * random, the style changes often if one changes the size and one
+   * cannot select some fonts at all.  This option makes the PCF module
+   * prepend the foundry name (plus a space) to the family name.
+   *
+   * We also check whether we have `wide' characters; all put together, we
+   * get family names like `Sony Fixed' or `Misc Fixed Wide'.
+   *
+   * If this option is activated, it can be controlled with the
+   * `no-long-family-names' property of the pcf driver module.
+   */
 /* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */
 
 
@@ -862,54 +859,56 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with CJK (Chinese, Japanese, Korean) script    */
-  /* support.                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Compile autofit module with CJK (Chinese, Japanese, Korean) script
+   * support.
+   */
 #define AF_CONFIG_OPTION_CJK
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with fallback Indic script support, covering   */
-  /* some scripts that the `latin' submodule of the autofit module doesn't */
-  /* (yet) handle.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Compile autofit module with fallback Indic script support, covering
+   * some scripts that the `latin' submodule of the autofit module doesn't
+   * (yet) handle.
+   */
 #define AF_CONFIG_OPTION_INDIC
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with warp hinting.  The idea of the warping    */
-  /* code is to slightly scale and shift a glyph within a single dimension */
-  /* so that as much of its segments are aligned (more or less) on the     */
-  /* grid.  To find out the optimal scaling and shifting value, various    */
-  /* parameter combinations are tried and scored.                          */
-  /*                                                                       */
-  /* This experimental option is active only if the rendering mode is      */
-  /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the      */
-  /* `warping' property of the auto-hinter (see file `ftdriver.h' for more */
-  /* information; by default it is switched off).                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Compile autofit module with warp hinting.  The idea of the warping
+   * code is to slightly scale and shift a glyph within a single dimension
+   * so that as much of its segments are aligned (more or less) on the
+   * grid.  To find out the optimal scaling and shifting value, various
+   * parameter combinations are tried and scored.
+   *
+   * This experimental option is active only if the rendering mode is
+   * FT_RENDER_MODE_LIGHT; you can switch warping on and off with the
+   * `warping' property of the auto-hinter (see file `ftdriver.h' for more
+   * information; by default it is switched off).
+   */
 #define AF_CONFIG_OPTION_USE_WARPER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Use TrueType-like size metrics for `light' auto-hinting.              */
-  /*                                                                       */
-  /* It is strongly recommended to avoid this option, which exists only to */
-  /* help some legacy applications retain its appearance and behaviour     */
-  /* with respect to auto-hinted TrueType fonts.                           */
-  /*                                                                       */
-  /* The very reason this option exists at all are GNU/Linux distributions */
-  /* like Fedora that did not un-patch the following change (which was     */
-  /* present in FreeType between versions 2.4.6 and 2.7.1, inclusive).     */
-  /*                                                                       */
-  /*   2011-07-16  Steven Chu  <steven.f.chu@gmail.com>                    */
-  /*                                                                       */
-  /*     [truetype] Fix metrics on size request for scalable fonts.        */
-  /*                                                                       */
-  /* This problematic commit is now reverted (more or less).               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Use TrueType-like size metrics for `light' auto-hinting.
+   *
+   * It is strongly recommended to avoid this option, which exists only to
+   * help some legacy applications retain its appearance and behaviour
+   * with respect to auto-hinted TrueType fonts.
+   *
+   * The very reason this option exists at all are GNU/Linux distributions
+   * like Fedora that did not un-patch the following change (which was
+   * present in FreeType between versions 2.4.6 and 2.7.1, inclusive).
+   *
+   * {
+   *   2011-07-16  Steven Chu  <steven.f.chu@gmail.com>
+   *
+   *     [truetype] Fix metrics on size request for scalable fonts.
+   * }
+   *
+   * This problematic commit is now reverted (more or less).
+   */
 /* #define AF_CONFIG_OPTION_TT_SIZE_METRICS */
 
   /* */
diff --git a/include/freetype/config/ftstdlib.h b/include/freetype/config/ftstdlib.h
index 42f9a06..a744d0d 100644
--- a/include/freetype/config/ftstdlib.h
+++ b/include/freetype/config/ftstdlib.h
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstdlib.h                                                             */
-/*                                                                         */
-/*    ANSI-specific library and header configuration file (specification   */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstdlib.h
+ *
+ *   ANSI-specific library and header configuration file (specification
+ *   only).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to group all #includes to the ANSI C library that   */
-  /* FreeType normally requires.  It also defines macros to rename the     */
-  /* standard functions within the FreeType source code.                   */
-  /*                                                                       */
-  /* Load a file which defines FTSTDLIB_H_ before this one to override it. */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to group all #includes to the ANSI C library that
+   * FreeType normally requires.  It also defines macros to rename the
+   * standard functions within the FreeType source code.
+   *
+   * Load a file which defines FTSTDLIB_H_ before this one to override it.
+   *
+   */
 
 
 #ifndef FTSTDLIB_H_
@@ -37,23 +37,23 @@
 #define ft_ptrdiff_t  ptrdiff_t
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                           integer limits                           */
-  /*                                                                    */
-  /* UINT_MAX and ULONG_MAX are used to automatically compute the size  */
-  /* of `int' and `long' in bytes at compile-time.  So far, this works  */
-  /* for all platforms the library has been tested on.                  */
-  /*                                                                    */
-  /* Note that on the extremely rare platforms that do not provide      */
-  /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some    */
-  /* old Crays where `int' is 36 bits), we do not make any guarantee    */
-  /* about the correct behaviour of FT2 with all fonts.                 */
-  /*                                                                    */
-  /* In these case, `ftconfig.h' will refuse to compile anyway with a   */
-  /* message like `couldn't find 32-bit type' or something similar.     */
-  /*                                                                    */
-  /**********************************************************************/
+  /***********************************************************************
+   *
+   *                          integer limits
+   *
+   * UINT_MAX and ULONG_MAX are used to automatically compute the size
+   * of `int' and `long' in bytes at compile-time.  So far, this works
+   * for all platforms the library has been tested on.
+   *
+   * Note that on the extremely rare platforms that do not provide
+   * integer types that are _exactly_ 16 and 32 bits wide (e.g. some
+   * old Crays where `int' is 36 bits), we do not make any guarantee
+   * about the correct behaviour of FT2 with all fonts.
+   *
+   * In these case, `ftconfig.h' will refuse to compile anyway with a
+   * message like `couldn't find 32-bit type' or something similar.
+   *
+   */
 
 
 #include <limits.h>
@@ -68,11 +68,11 @@
 #define FT_ULONG_MAX   ULONG_MAX
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                 character and string processing                    */
-  /*                                                                    */
-  /**********************************************************************/
+  /***********************************************************************
+   *
+   *                character and string processing
+   *
+   */
 
 
 #include <string.h>
@@ -92,11 +92,11 @@
 #define ft_strstr   strstr
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                           file handling                            */
-  /*                                                                    */
-  /**********************************************************************/
+  /***********************************************************************
+   *
+   *                          file handling
+   *
+   */
 
 
 #include <stdio.h>
@@ -110,11 +110,11 @@
 #define ft_sprintf  sprintf
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                             sorting                                */
-  /*                                                                    */
-  /**********************************************************************/
+  /***********************************************************************
+   *
+   *                            sorting
+   *
+   */
 
 
 #include <stdlib.h>
@@ -122,11 +122,11 @@
 #define ft_qsort  qsort
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                        memory allocation                           */
-  /*                                                                    */
-  /**********************************************************************/
+  /***********************************************************************
+   *
+   *                       memory allocation
+   *
+   */
 
 
 #define ft_scalloc   calloc
@@ -135,22 +135,22 @@
 #define ft_srealloc  realloc
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                          miscellaneous                             */
-  /*                                                                    */
-  /**********************************************************************/
+  /***********************************************************************
+   *
+   *                         miscellaneous
+   *
+   */
 
 
 #define ft_strtol  strtol
 #define ft_getenv  getenv
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                         execution control                          */
-  /*                                                                    */
-  /**********************************************************************/
+  /***********************************************************************
+   *
+   *                        execution control
+   *
+   */
 
 
 #include <setjmp.h>
diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h
index eda95e2..620df4c 100644
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  freetype.h                                                             */
-/*                                                                         */
-/*    FreeType high-level API and common types (specification only).       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * freetype.h
+ *
+ *   FreeType high-level API and common types (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FREETYPE_H_
@@ -39,56 +39,56 @@
 
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    header_inclusion                                                   */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    FreeType's header inclusion scheme                                 */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    How client applications should include FreeType header files.      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    To be as flexible as possible (and for historical reasons),        */
-  /*    FreeType uses a very special inclusion scheme to load header       */
-  /*    files, for example                                                 */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      #include <ft2build.h>                                            */
-  /*                                                                       */
-  /*      #include FT_FREETYPE_H                                           */
-  /*      #include FT_OUTLINE_H                                            */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    A compiler and its preprocessor only needs an include path to find */
-  /*    the file `ft2build.h'; the exact locations and names of the other  */
-  /*    FreeType header files are hidden by preprocessor macro names,      */
-  /*    loaded by `ft2build.h'.  The API documentation always gives the    */
-  /*    header macro name needed for a particular function.                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   header_inclusion
+   *
+   * @title:
+   *   FreeType's header inclusion scheme
+   *
+   * @abstract:
+   *   How client applications should include FreeType header files.
+   *
+   * @description:
+   *   To be as flexible as possible (and for historical reasons),
+   *   FreeType uses a very special inclusion scheme to load header
+   *   files, for example
+   *
+   *   {
+   *     #include <ft2build.h>
+   *
+   *     #include FT_FREETYPE_H
+   *     #include FT_OUTLINE_H
+   *   }
+   *
+   *   A compiler and its preprocessor only needs an include path to find
+   *   the file `ft2build.h'; the exact locations and names of the other
+   *   FreeType header files are hidden by @header_file_macros, loaded by
+   *   `ft2build.h'.  The API documentation always gives the header macro
+   *   name needed for a particular function.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    user_allocation                                                    */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    User allocation                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    How client applications should allocate FreeType data structures.  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FreeType assumes that structures allocated by the user and passed  */
-  /*    as arguments are zeroed out except for the actual data.  In other  */
-  /*    words, it is recommended to use `calloc' (or variants of it)       */
-  /*    instead of `malloc' for allocation.                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   user_allocation
+   *
+   * @title:
+   *   User allocation
+   *
+   * @abstract:
+   *   How client applications should allocate FreeType data structures.
+   *
+   * @description:
+   *   FreeType assumes that structures allocated by the user and passed
+   *   as arguments are zeroed out except for the actual data.  In other
+   *   words, it is recommended to use `calloc' (or variants of it)
+   *   instead of `malloc' for allocation.
+   *
+   */
 
 
 
@@ -101,219 +101,219 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    base_interface                                                     */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Base Interface                                                     */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    The FreeType~2 base font interface.                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section describes the most important public high-level API    */
-  /*    functions of FreeType~2.                                           */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Library                                                         */
-  /*    FT_Face                                                            */
-  /*    FT_Size                                                            */
-  /*    FT_GlyphSlot                                                       */
-  /*    FT_CharMap                                                         */
-  /*    FT_Encoding                                                        */
-  /*    FT_ENC_TAG                                                         */
-  /*                                                                       */
-  /*    FT_FaceRec                                                         */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_SCALABLE                                              */
-  /*    FT_FACE_FLAG_FIXED_SIZES                                           */
-  /*    FT_FACE_FLAG_FIXED_WIDTH                                           */
-  /*    FT_FACE_FLAG_HORIZONTAL                                            */
-  /*    FT_FACE_FLAG_VERTICAL                                              */
-  /*    FT_FACE_FLAG_COLOR                                                 */
-  /*    FT_FACE_FLAG_SFNT                                                  */
-  /*    FT_FACE_FLAG_CID_KEYED                                             */
-  /*    FT_FACE_FLAG_TRICKY                                                */
-  /*    FT_FACE_FLAG_KERNING                                               */
-  /*    FT_FACE_FLAG_MULTIPLE_MASTERS                                      */
-  /*    FT_FACE_FLAG_VARIATION                                             */
-  /*    FT_FACE_FLAG_GLYPH_NAMES                                           */
-  /*    FT_FACE_FLAG_EXTERNAL_STREAM                                       */
-  /*    FT_FACE_FLAG_HINTER                                                */
-  /*                                                                       */
-  /*    FT_HAS_HORIZONTAL                                                  */
-  /*    FT_HAS_VERTICAL                                                    */
-  /*    FT_HAS_KERNING                                                     */
-  /*    FT_HAS_FIXED_SIZES                                                 */
-  /*    FT_HAS_GLYPH_NAMES                                                 */
-  /*    FT_HAS_COLOR                                                       */
-  /*    FT_HAS_MULTIPLE_MASTERS                                            */
-  /*                                                                       */
-  /*    FT_IS_SFNT                                                         */
-  /*    FT_IS_SCALABLE                                                     */
-  /*    FT_IS_FIXED_WIDTH                                                  */
-  /*    FT_IS_CID_KEYED                                                    */
-  /*    FT_IS_TRICKY                                                       */
-  /*    FT_IS_NAMED_INSTANCE                                               */
-  /*    FT_IS_VARIATION                                                    */
-  /*                                                                       */
-  /*    FT_STYLE_FLAG_BOLD                                                 */
-  /*    FT_STYLE_FLAG_ITALIC                                               */
-  /*                                                                       */
-  /*    FT_SizeRec                                                         */
-  /*    FT_Size_Metrics                                                    */
-  /*                                                                       */
-  /*    FT_GlyphSlotRec                                                    */
-  /*    FT_Glyph_Metrics                                                   */
-  /*    FT_SubGlyph                                                        */
-  /*                                                                       */
-  /*    FT_Bitmap_Size                                                     */
-  /*                                                                       */
-  /*    FT_Init_FreeType                                                   */
-  /*    FT_Done_FreeType                                                   */
-  /*                                                                       */
-  /*    FT_New_Face                                                        */
-  /*    FT_Done_Face                                                       */
-  /*    FT_Reference_Face                                                  */
-  /*    FT_New_Memory_Face                                                 */
-  /*    FT_Face_Properties                                                 */
-  /*    FT_Open_Face                                                       */
-  /*    FT_Open_Args                                                       */
-  /*    FT_Parameter                                                       */
-  /*    FT_Attach_File                                                     */
-  /*    FT_Attach_Stream                                                   */
-  /*                                                                       */
-  /*    FT_Set_Char_Size                                                   */
-  /*    FT_Set_Pixel_Sizes                                                 */
-  /*    FT_Request_Size                                                    */
-  /*    FT_Select_Size                                                     */
-  /*    FT_Size_Request_Type                                               */
-  /*    FT_Size_RequestRec                                                 */
-  /*    FT_Size_Request                                                    */
-  /*    FT_Set_Transform                                                   */
-  /*    FT_Load_Glyph                                                      */
-  /*    FT_Get_Char_Index                                                  */
-  /*    FT_Get_First_Char                                                  */
-  /*    FT_Get_Next_Char                                                   */
-  /*    FT_Get_Name_Index                                                  */
-  /*    FT_Load_Char                                                       */
-  /*                                                                       */
-  /*    FT_OPEN_MEMORY                                                     */
-  /*    FT_OPEN_STREAM                                                     */
-  /*    FT_OPEN_PATHNAME                                                   */
-  /*    FT_OPEN_DRIVER                                                     */
-  /*    FT_OPEN_PARAMS                                                     */
-  /*                                                                       */
-  /*    FT_LOAD_DEFAULT                                                    */
-  /*    FT_LOAD_RENDER                                                     */
-  /*    FT_LOAD_MONOCHROME                                                 */
-  /*    FT_LOAD_LINEAR_DESIGN                                              */
-  /*    FT_LOAD_NO_SCALE                                                   */
-  /*    FT_LOAD_NO_HINTING                                                 */
-  /*    FT_LOAD_NO_BITMAP                                                  */
-  /*    FT_LOAD_NO_AUTOHINT                                                */
-  /*    FT_LOAD_COLOR                                                      */
-  /*                                                                       */
-  /*    FT_LOAD_VERTICAL_LAYOUT                                            */
-  /*    FT_LOAD_IGNORE_TRANSFORM                                           */
-  /*    FT_LOAD_FORCE_AUTOHINT                                             */
-  /*    FT_LOAD_NO_RECURSE                                                 */
-  /*    FT_LOAD_PEDANTIC                                                   */
-  /*                                                                       */
-  /*    FT_LOAD_TARGET_NORMAL                                              */
-  /*    FT_LOAD_TARGET_LIGHT                                               */
-  /*    FT_LOAD_TARGET_MONO                                                */
-  /*    FT_LOAD_TARGET_LCD                                                 */
-  /*    FT_LOAD_TARGET_LCD_V                                               */
-  /*                                                                       */
-  /*    FT_LOAD_TARGET_MODE                                                */
-  /*                                                                       */
-  /*    FT_Render_Glyph                                                    */
-  /*    FT_Render_Mode                                                     */
-  /*    FT_Get_Kerning                                                     */
-  /*    FT_Kerning_Mode                                                    */
-  /*    FT_Get_Track_Kerning                                               */
-  /*    FT_Get_Glyph_Name                                                  */
-  /*    FT_Get_Postscript_Name                                             */
-  /*                                                                       */
-  /*    FT_CharMapRec                                                      */
-  /*    FT_Select_Charmap                                                  */
-  /*    FT_Set_Charmap                                                     */
-  /*    FT_Get_Charmap_Index                                               */
-  /*                                                                       */
-  /*    FT_Get_FSType_Flags                                                */
-  /*    FT_Get_SubGlyph_Info                                               */
-  /*                                                                       */
-  /*    FT_Face_Internal                                                   */
-  /*    FT_Size_Internal                                                   */
-  /*    FT_Slot_Internal                                                   */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_XXX                                                   */
-  /*    FT_STYLE_FLAG_XXX                                                  */
-  /*    FT_OPEN_XXX                                                        */
-  /*    FT_LOAD_XXX                                                        */
-  /*    FT_LOAD_TARGET_XXX                                                 */
-  /*    FT_SUBGLYPH_FLAG_XXX                                               */
-  /*    FT_FSTYPE_XXX                                                      */
-  /*                                                                       */
-  /*    FT_HAS_FAST_GLYPHS                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   base_interface
+   *
+   * @title:
+   *   Base Interface
+   *
+   * @abstract:
+   *   The FreeType~2 base font interface.
+   *
+   * @description:
+   *   This section describes the most important public high-level API
+   *   functions of FreeType~2.
+   *
+   * @order:
+   *   FT_Library
+   *   FT_Face
+   *   FT_Size
+   *   FT_GlyphSlot
+   *   FT_CharMap
+   *   FT_Encoding
+   *   FT_ENC_TAG
+   *
+   *   FT_FaceRec
+   *
+   *   FT_FACE_FLAG_SCALABLE
+   *   FT_FACE_FLAG_FIXED_SIZES
+   *   FT_FACE_FLAG_FIXED_WIDTH
+   *   FT_FACE_FLAG_HORIZONTAL
+   *   FT_FACE_FLAG_VERTICAL
+   *   FT_FACE_FLAG_COLOR
+   *   FT_FACE_FLAG_SFNT
+   *   FT_FACE_FLAG_CID_KEYED
+   *   FT_FACE_FLAG_TRICKY
+   *   FT_FACE_FLAG_KERNING
+   *   FT_FACE_FLAG_MULTIPLE_MASTERS
+   *   FT_FACE_FLAG_VARIATION
+   *   FT_FACE_FLAG_GLYPH_NAMES
+   *   FT_FACE_FLAG_EXTERNAL_STREAM
+   *   FT_FACE_FLAG_HINTER
+   *
+   *   FT_HAS_HORIZONTAL
+   *   FT_HAS_VERTICAL
+   *   FT_HAS_KERNING
+   *   FT_HAS_FIXED_SIZES
+   *   FT_HAS_GLYPH_NAMES
+   *   FT_HAS_COLOR
+   *   FT_HAS_MULTIPLE_MASTERS
+   *
+   *   FT_IS_SFNT
+   *   FT_IS_SCALABLE
+   *   FT_IS_FIXED_WIDTH
+   *   FT_IS_CID_KEYED
+   *   FT_IS_TRICKY
+   *   FT_IS_NAMED_INSTANCE
+   *   FT_IS_VARIATION
+   *
+   *   FT_STYLE_FLAG_BOLD
+   *   FT_STYLE_FLAG_ITALIC
+   *
+   *   FT_SizeRec
+   *   FT_Size_Metrics
+   *
+   *   FT_GlyphSlotRec
+   *   FT_Glyph_Metrics
+   *   FT_SubGlyph
+   *
+   *   FT_Bitmap_Size
+   *
+   *   FT_Init_FreeType
+   *   FT_Done_FreeType
+   *
+   *   FT_New_Face
+   *   FT_Done_Face
+   *   FT_Reference_Face
+   *   FT_New_Memory_Face
+   *   FT_Face_Properties
+   *   FT_Open_Face
+   *   FT_Open_Args
+   *   FT_Parameter
+   *   FT_Attach_File
+   *   FT_Attach_Stream
+   *
+   *   FT_Set_Char_Size
+   *   FT_Set_Pixel_Sizes
+   *   FT_Request_Size
+   *   FT_Select_Size
+   *   FT_Size_Request_Type
+   *   FT_Size_RequestRec
+   *   FT_Size_Request
+   *   FT_Set_Transform
+   *   FT_Load_Glyph
+   *   FT_Get_Char_Index
+   *   FT_Get_First_Char
+   *   FT_Get_Next_Char
+   *   FT_Get_Name_Index
+   *   FT_Load_Char
+   *
+   *   FT_OPEN_MEMORY
+   *   FT_OPEN_STREAM
+   *   FT_OPEN_PATHNAME
+   *   FT_OPEN_DRIVER
+   *   FT_OPEN_PARAMS
+   *
+   *   FT_LOAD_DEFAULT
+   *   FT_LOAD_RENDER
+   *   FT_LOAD_MONOCHROME
+   *   FT_LOAD_LINEAR_DESIGN
+   *   FT_LOAD_NO_SCALE
+   *   FT_LOAD_NO_HINTING
+   *   FT_LOAD_NO_BITMAP
+   *   FT_LOAD_NO_AUTOHINT
+   *   FT_LOAD_COLOR
+   *
+   *   FT_LOAD_VERTICAL_LAYOUT
+   *   FT_LOAD_IGNORE_TRANSFORM
+   *   FT_LOAD_FORCE_AUTOHINT
+   *   FT_LOAD_NO_RECURSE
+   *   FT_LOAD_PEDANTIC
+   *
+   *   FT_LOAD_TARGET_NORMAL
+   *   FT_LOAD_TARGET_LIGHT
+   *   FT_LOAD_TARGET_MONO
+   *   FT_LOAD_TARGET_LCD
+   *   FT_LOAD_TARGET_LCD_V
+   *
+   *   FT_LOAD_TARGET_MODE
+   *
+   *   FT_Render_Glyph
+   *   FT_Render_Mode
+   *   FT_Get_Kerning
+   *   FT_Kerning_Mode
+   *   FT_Get_Track_Kerning
+   *   FT_Get_Glyph_Name
+   *   FT_Get_Postscript_Name
+   *
+   *   FT_CharMapRec
+   *   FT_Select_Charmap
+   *   FT_Set_Charmap
+   *   FT_Get_Charmap_Index
+   *
+   *   FT_Get_FSType_Flags
+   *   FT_Get_SubGlyph_Info
+   *
+   *   FT_Face_Internal
+   *   FT_Size_Internal
+   *   FT_Slot_Internal
+   *
+   *   FT_FACE_FLAG_XXX
+   *   FT_STYLE_FLAG_XXX
+   *   FT_OPEN_XXX
+   *   FT_LOAD_XXX
+   *   FT_LOAD_TARGET_XXX
+   *   FT_SUBGLYPH_FLAG_XXX
+   *   FT_FSTYPE_XXX
+   *
+   *   FT_HAS_FAST_GLYPHS
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Glyph_Metrics                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model the metrics of a single glyph.  The values    */
-  /*    are expressed in 26.6 fractional pixel format; if the flag         */
-  /*    @FT_LOAD_NO_SCALE has been used while loading the glyph, values    */
-  /*    are expressed in font units instead.                               */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    width ::                                                           */
-  /*      The glyph's width.                                               */
-  /*                                                                       */
-  /*    height ::                                                          */
-  /*      The glyph's height.                                              */
-  /*                                                                       */
-  /*    horiBearingX ::                                                    */
-  /*      Left side bearing for horizontal layout.                         */
-  /*                                                                       */
-  /*    horiBearingY ::                                                    */
-  /*      Top side bearing for horizontal layout.                          */
-  /*                                                                       */
-  /*    horiAdvance ::                                                     */
-  /*      Advance width for horizontal layout.                             */
-  /*                                                                       */
-  /*    vertBearingX ::                                                    */
-  /*      Left side bearing for vertical layout.                           */
-  /*                                                                       */
-  /*    vertBearingY ::                                                    */
-  /*      Top side bearing for vertical layout.  Larger positive values    */
-  /*      mean further below the vertical glyph origin.                    */
-  /*                                                                       */
-  /*    vertAdvance ::                                                     */
-  /*      Advance height for vertical layout.  Positive values mean the    */
-  /*      glyph has a positive advance downward.                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If not disabled with @FT_LOAD_NO_HINTING, the values represent     */
-  /*    dimensions of the hinted glyph (in case hinting is applicable).    */
-  /*                                                                       */
-  /*    Stroking a glyph with an outside border does not increase          */
-  /*    `horiAdvance' or `vertAdvance'; you have to manually adjust these  */
-  /*    values to account for the added width and height.                  */
-  /*                                                                       */
-  /*    FreeType doesn't use the `VORG' table data for CFF fonts because   */
-  /*    it doesn't have an interface to quickly retrieve the glyph height. */
-  /*    The y~coordinate of the vertical origin can be simply computed as  */
-  /*    `vertBearingY + height' after loading a glyph.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Glyph_Metrics
+   *
+   * @description:
+   *   A structure to model the metrics of a single glyph.  The values
+   *   are expressed in 26.6 fractional pixel format; if the flag
+   *   @FT_LOAD_NO_SCALE has been used while loading the glyph, values
+   *   are expressed in font units instead.
+   *
+   * @fields:
+   *   width ::
+   *     The glyph's width.
+   *
+   *   height ::
+   *     The glyph's height.
+   *
+   *   horiBearingX ::
+   *     Left side bearing for horizontal layout.
+   *
+   *   horiBearingY ::
+   *     Top side bearing for horizontal layout.
+   *
+   *   horiAdvance ::
+   *     Advance width for horizontal layout.
+   *
+   *   vertBearingX ::
+   *     Left side bearing for vertical layout.
+   *
+   *   vertBearingY ::
+   *     Top side bearing for vertical layout.  Larger positive values
+   *     mean further below the vertical glyph origin.
+   *
+   *   vertAdvance ::
+   *     Advance height for vertical layout.  Positive values mean the
+   *     glyph has a positive advance downward.
+   *
+   * @note:
+   *   If not disabled with @FT_LOAD_NO_HINTING, the values represent
+   *   dimensions of the hinted glyph (in case hinting is applicable).
+   *
+   *   Stroking a glyph with an outside border does not increase
+   *   `horiAdvance' or `vertAdvance'; you have to manually adjust these
+   *   values to account for the added width and height.
+   *
+   *   FreeType doesn't use the `VORG' table data for CFF fonts because
+   *   it doesn't have an interface to quickly retrieve the glyph height.
+   *   The y~coordinate of the vertical origin can be simply computed as
+   *   `vertBearingY + height' after loading a glyph.
+   */
   typedef struct  FT_Glyph_Metrics_
   {
     FT_Pos  width;
@@ -330,44 +330,49 @@
   } FT_Glyph_Metrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Bitmap_Size                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure models the metrics of a bitmap strike (i.e., a set  */
-  /*    of glyphs for a given point size and resolution) in a bitmap font. */
-  /*    It is used for the `available_sizes' field of @FT_Face.            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    height :: The vertical distance, in pixels, between two            */
-  /*              consecutive baselines.  It is always positive.           */
-  /*                                                                       */
-  /*    width  :: The average width, in pixels, of all glyphs in the       */
-  /*              strike.                                                  */
-  /*                                                                       */
-  /*    size   :: The nominal size of the strike in 26.6 fractional        */
-  /*              points.  This field is not very useful.                  */
-  /*                                                                       */
-  /*    x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional   */
-  /*              pixels.                                                  */
-  /*                                                                       */
-  /*    y_ppem :: The vertical ppem (nominal height) in 26.6 fractional    */
-  /*              pixels.                                                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Windows FNT:                                                       */
-  /*      The nominal size given in a FNT font is not reliable.  If the    */
-  /*      driver finds it incorrect, it sets `size' to some calculated     */
-  /*      values, and `x_ppem' and `y_ppem' to the pixel width and height  */
-  /*      given in the font, respectively.                                 */
-  /*                                                                       */
-  /*    TrueType embedded bitmaps:                                         */
-  /*      `size', `width', and `height' values are not contained in the    */
-  /*      bitmap strike itself.  They are computed from the global font    */
-  /*      parameters.                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Bitmap_Size
+   *
+   * @description:
+   *   This structure models the metrics of a bitmap strike (i.e., a set
+   *   of glyphs for a given point size and resolution) in a bitmap font.
+   *   It is used for the `available_sizes' field of @FT_Face.
+   *
+   * @fields:
+   *   height ::
+   *     The vertical distance, in pixels, between two
+   *     consecutive baselines.  It is always positive.
+   *
+   *   width ::
+   *     The average width, in pixels, of all glyphs in the
+   *     strike.
+   *
+   *   size ::
+   *     The nominal size of the strike in 26.6 fractional
+   *     points.  This field is not very useful.
+   *
+   *   x_ppem ::
+   *     The horizontal ppem (nominal width) in 26.6 fractional
+   *     pixels.
+   *
+   *   y_ppem ::
+   *     The vertical ppem (nominal height) in 26.6 fractional
+   *     pixels.
+   *
+   * @note:
+   *   Windows FNT:
+   *     The nominal size given in a FNT font is not reliable.  If the
+   *     driver finds it incorrect, it sets `size' to some calculated
+   *     values, and `x_ppem' and `y_ppem' to the pixel width and height
+   *     given in the font, respectively.
+   *
+   *   TrueType embedded bitmaps:
+   *     `size', `width', and `height' values are not contained in the
+   *     bitmap strike itself.  They are computed from the global font
+   *     parameters.
+   */
   typedef struct  FT_Bitmap_Size_
   {
     FT_Short  height;
@@ -389,225 +394,225 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Library                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a FreeType library instance.  Each `library' is        */
-  /*    completely independent from the others; it is the `root' of a set  */
-  /*    of objects like fonts, faces, sizes, etc.                          */
-  /*                                                                       */
-  /*    It also embeds a memory manager (see @FT_Memory), as well as a     */
-  /*    scan-line converter object (see @FT_Raster).                       */
-  /*                                                                       */
-  /*    In multi-threaded applications it is easiest to use one            */
-  /*    `FT_Library' object per thread.  In case this is too cumbersome,   */
-  /*    a single `FT_Library' object across threads is possible also       */
-  /*    (since FreeType version 2.5.6), as long as a mutex lock is used    */
-  /*    around @FT_New_Face and @FT_Done_Face.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Library objects are normally created by @FT_Init_FreeType, and     */
-  /*    destroyed with @FT_Done_FreeType.  If you need reference-counting  */
-  /*    (cf. @FT_Reference_Library), use @FT_New_Library and               */
-  /*    @FT_Done_Library.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Library
+   *
+   * @description:
+   *   A handle to a FreeType library instance.  Each `library' is
+   *   completely independent from the others; it is the `root' of a set
+   *   of objects like fonts, faces, sizes, etc.
+   *
+   *   It also embeds a memory manager (see @FT_Memory), as well as a
+   *   scan-line converter object (see @FT_Raster).
+   *
+   *   In multi-threaded applications it is easiest to use one
+   *   `FT_Library' object per thread.  In case this is too cumbersome,
+   *   a single `FT_Library' object across threads is possible also
+   *   (since FreeType version 2.5.6), as long as a mutex lock is used
+   *   around @FT_New_Face and @FT_Done_Face.
+   *
+   * @note:
+   *   Library objects are normally created by @FT_Init_FreeType, and
+   *   destroyed with @FT_Done_FreeType.  If you need reference-counting
+   *   (cf. @FT_Reference_Library), use @FT_New_Library and
+   *   @FT_Done_Library.
+   */
   typedef struct FT_LibraryRec_  *FT_Library;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    module_management                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   module_management
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Module                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a given FreeType module object.  A module can be a     */
-  /*    font driver, a renderer, or anything else that provides services   */
-  /*    to the former.                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Module
+   *
+   * @description:
+   *   A handle to a given FreeType module object.  A module can be a
+   *   font driver, a renderer, or anything else that provides services
+   *   to the former.
+   */
   typedef struct FT_ModuleRec_*  FT_Module;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Driver                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a given FreeType font driver object.  A font driver    */
-  /*    is a module capable of creating faces from font files.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Driver
+   *
+   * @description:
+   *   A handle to a given FreeType font driver object.  A font driver
+   *   is a module capable of creating faces from font files.
+   */
   typedef struct FT_DriverRec_*  FT_Driver;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Renderer                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a given FreeType renderer.  A renderer is a module in  */
-  /*    charge of converting a glyph's outline image to a bitmap.  It      */
-  /*    supports a single glyph image format, and one or more target       */
-  /*    surface depths.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Renderer
+   *
+   * @description:
+   *   A handle to a given FreeType renderer.  A renderer is a module in
+   *   charge of converting a glyph's outline image to a bitmap.  It
+   *   supports a single glyph image format, and one or more target
+   *   surface depths.
+   */
   typedef struct FT_RendererRec_*  FT_Renderer;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    base_interface                                                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   base_interface
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Face                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a typographic face object.  A face object models a     */
-  /*    given typeface, in a given style.                                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    A face object also owns a single @FT_GlyphSlot object, as well     */
-  /*    as one or more @FT_Size objects.                                   */
-  /*                                                                       */
-  /*    Use @FT_New_Face or @FT_Open_Face to create a new face object from */
-  /*    a given filepath or a custom input stream.                         */
-  /*                                                                       */
-  /*    Use @FT_Done_Face to destroy it (along with its slot and sizes).   */
-  /*                                                                       */
-  /*    An `FT_Face' object can only be safely used from one thread at a   */
-  /*    time.  Similarly, creation and destruction of `FT_Face' with the   */
-  /*    same @FT_Library object can only be done from one thread at a      */
-  /*    time.  On the other hand, functions like @FT_Load_Glyph and its    */
-  /*    siblings are thread-safe and do not need the lock to be held as    */
-  /*    long as the same `FT_Face' object is not used from multiple        */
-  /*    threads at the same time.                                          */
-  /*                                                                       */
-  /* <Also>                                                                */
-  /*    See @FT_FaceRec for the publicly accessible fields of a given face */
-  /*    object.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Face
+   *
+   * @description:
+   *   A handle to a typographic face object.  A face object models a
+   *   given typeface, in a given style.
+   *
+   * @note:
+   *   A face object also owns a single @FT_GlyphSlot object, as well
+   *   as one or more @FT_Size objects.
+   *
+   *   Use @FT_New_Face or @FT_Open_Face to create a new face object from
+   *   a given filepath or a custom input stream.
+   *
+   *   Use @FT_Done_Face to destroy it (along with its slot and sizes).
+   *
+   *   An `FT_Face' object can only be safely used from one thread at a
+   *   time.  Similarly, creation and destruction of `FT_Face' with the
+   *   same @FT_Library object can only be done from one thread at a
+   *   time.  On the other hand, functions like @FT_Load_Glyph and its
+   *   siblings are thread-safe and do not need the lock to be held as
+   *   long as the same `FT_Face' object is not used from multiple
+   *   threads at the same time.
+   *
+   * @also:
+   *   See @FT_FaceRec for the publicly accessible fields of a given face
+   *   object.
+   */
   typedef struct FT_FaceRec_*  FT_Face;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Size                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an object that models a face scaled to a given         */
-  /*    character size.                                                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    An @FT_Face has one _active_ @FT_Size object that is used by       */
-  /*    functions like @FT_Load_Glyph to determine the scaling             */
-  /*    transformation that in turn is used to load and hint glyphs and    */
-  /*    metrics.                                                           */
-  /*                                                                       */
-  /*    You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes,                */
-  /*    @FT_Request_Size or even @FT_Select_Size to change the content     */
-  /*    (i.e., the scaling values) of the active @FT_Size.                 */
-  /*                                                                       */
-  /*    You can use @FT_New_Size to create additional size objects for a   */
-  /*    given @FT_Face, but they won't be used by other functions until    */
-  /*    you activate it through @FT_Activate_Size.  Only one size can be   */
-  /*    activated at any given time per face.                              */
-  /*                                                                       */
-  /* <Also>                                                                */
-  /*    See @FT_SizeRec for the publicly accessible fields of a given size */
-  /*    object.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Size
+   *
+   * @description:
+   *   A handle to an object that models a face scaled to a given
+   *   character size.
+   *
+   * @note:
+   *   An @FT_Face has one _active_ @FT_Size object that is used by
+   *   functions like @FT_Load_Glyph to determine the scaling
+   *   transformation that in turn is used to load and hint glyphs and
+   *   metrics.
+   *
+   *   You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes,
+   *   @FT_Request_Size or even @FT_Select_Size to change the content
+   *   (i.e., the scaling values) of the active @FT_Size.
+   *
+   *   You can use @FT_New_Size to create additional size objects for a
+   *   given @FT_Face, but they won't be used by other functions until
+   *   you activate it through @FT_Activate_Size.  Only one size can be
+   *   activated at any given time per face.
+   *
+   * @also:
+   *   See @FT_SizeRec for the publicly accessible fields of a given size
+   *   object.
+   */
   typedef struct FT_SizeRec_*  FT_Size;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_GlyphSlot                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a given `glyph slot'.  A slot is a container that can  */
-  /*    hold any of the glyphs contained in its parent face.               */
-  /*                                                                       */
-  /*    In other words, each time you call @FT_Load_Glyph or               */
-  /*    @FT_Load_Char, the slot's content is erased by the new glyph data, */
-  /*    i.e., the glyph's metrics, its image (bitmap or outline), and      */
-  /*    other control information.                                         */
-  /*                                                                       */
-  /* <Also>                                                                */
-  /*    See @FT_GlyphSlotRec for the publicly accessible glyph fields.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_GlyphSlot
+   *
+   * @description:
+   *   A handle to a given `glyph slot'.  A slot is a container that can
+   *   hold any of the glyphs contained in its parent face.
+   *
+   *   In other words, each time you call @FT_Load_Glyph or
+   *   @FT_Load_Char, the slot's content is erased by the new glyph data,
+   *   i.e., the glyph's metrics, its image (bitmap or outline), and
+   *   other control information.
+   *
+   * @also:
+   *   See @FT_GlyphSlotRec for the publicly accessible glyph fields.
+   */
   typedef struct FT_GlyphSlotRec_*  FT_GlyphSlot;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_CharMap                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a character map (usually abbreviated to `charmap').  A */
-  /*    charmap is used to translate character codes in a given encoding   */
-  /*    into glyph indexes for its parent's face.  Some font formats may   */
-  /*    provide several charmaps per font.                                 */
-  /*                                                                       */
-  /*    Each face object owns zero or more charmaps, but only one of them  */
-  /*    can be `active', providing the data used by @FT_Get_Char_Index or  */
-  /*    @FT_Load_Char.                                                     */
-  /*                                                                       */
-  /*    The list of available charmaps in a face is available through the  */
-  /*    `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec.   */
-  /*                                                                       */
-  /*    The currently active charmap is available as `face->charmap'.      */
-  /*    You should call @FT_Set_Charmap to change it.                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    When a new face is created (either through @FT_New_Face or         */
-  /*    @FT_Open_Face), the library looks for a Unicode charmap within     */
-  /*    the list and automatically activates it.  If there is no Unicode   */
-  /*    charmap, FreeType doesn't set an `active' charmap.                 */
-  /*                                                                       */
-  /* <Also>                                                                */
-  /*    See @FT_CharMapRec for the publicly accessible fields of a given   */
-  /*    character map.                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_CharMap
+   *
+   * @description:
+   *   A handle to a character map (usually abbreviated to `charmap').  A
+   *   charmap is used to translate character codes in a given encoding
+   *   into glyph indexes for its parent's face.  Some font formats may
+   *   provide several charmaps per font.
+   *
+   *   Each face object owns zero or more charmaps, but only one of them
+   *   can be `active', providing the data used by @FT_Get_Char_Index or
+   *   @FT_Load_Char.
+   *
+   *   The list of available charmaps in a face is available through the
+   *   `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec.
+   *
+   *   The currently active charmap is available as `face->charmap'.
+   *   You should call @FT_Set_Charmap to change it.
+   *
+   * @note:
+   *   When a new face is created (either through @FT_New_Face or
+   *   @FT_Open_Face), the library looks for a Unicode charmap within
+   *   the list and automatically activates it.  If there is no Unicode
+   *   charmap, FreeType doesn't set an `active' charmap.
+   *
+   * @also:
+   *   See @FT_CharMapRec for the publicly accessible fields of a given
+   *   character map.
+   */
   typedef struct FT_CharMapRec_*  FT_CharMap;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_ENC_TAG                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This macro converts four-letter tags into an unsigned long.  It is */
-  /*    used to define `encoding' identifiers (see @FT_Encoding).          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Since many 16-bit compilers don't like 32-bit enumerations, you    */
-  /*    should redefine this macro in case of problems to something like   */
-  /*    this:                                                              */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      #define FT_ENC_TAG( value, a, b, c, d )  value                   */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    to get a simple enumeration without assigning special numbers.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_ENC_TAG
+   *
+   * @description:
+   *   This macro converts four-letter tags into an unsigned long.  It is
+   *   used to define `encoding' identifiers (see @FT_Encoding).
+   *
+   * @note:
+   *   Since many 16-bit compilers don't like 32-bit enumerations, you
+   *   should redefine this macro in case of problems to something like
+   *   this:
+   *
+   *   {
+   *     #define FT_ENC_TAG( value, a, b, c, d )  value
+   *   }
+   *
+   *   to get a simple enumeration without assigning special numbers.
+   */
 
 #ifndef FT_ENC_TAG
 #define FT_ENC_TAG( value, a, b, c, d )         \
@@ -619,149 +624,151 @@
 #endif /* FT_ENC_TAG */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Encoding                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration to specify character sets supported by charmaps.    */
-  /*    Used in the @FT_Select_Charmap API function.                       */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Despite the name, this enumeration lists specific character        */
-  /*    repertories (i.e., charsets), and not text encoding methods (e.g., */
-  /*    UTF-8, UTF-16, etc.).                                              */
-  /*                                                                       */
-  /*    Other encodings might be defined in the future.                    */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_ENCODING_NONE ::                                                */
-  /*      The encoding value~0 is reserved.                                */
-  /*                                                                       */
-  /*    FT_ENCODING_UNICODE ::                                             */
-  /*      The Unicode character set.  This value covers all versions of    */
-  /*      the Unicode repertoire, including ASCII and Latin-1.  Most fonts */
-  /*      include a Unicode charmap, but not all of them.                  */
-  /*                                                                       */
-  /*      For example, if you want to access Unicode value U+1F028 (and    */
-  /*      the font contains it), use value 0x1F028 as the input value for  */
-  /*      @FT_Get_Char_Index.                                              */
-  /*                                                                       */
-  /*    FT_ENCODING_MS_SYMBOL ::                                           */
-  /*      Microsoft Symbol encoding, used to encode mathematical symbols   */
-  /*      and wingdings.  For more information, see                        */
-  /*      `https://www.microsoft.com/typography/otspec/recom.htm',         */
-  /*      `http://www.kostis.net/charsets/symbol.htm', and                 */
-  /*      `http://www.kostis.net/charsets/wingding.htm'.                   */
-  /*                                                                       */
-  /*      This encoding uses character codes from the PUA (Private Unicode */
-  /*      Area) in the range U+F020-U+F0FF.                                */
-  /*                                                                       */
-  /*    FT_ENCODING_SJIS ::                                                */
-  /*      Shift JIS encoding for Japanese.  More info at                   */
-  /*      `https://en.wikipedia.org/wiki/Shift_JIS'.  See note on          */
-  /*      multi-byte encodings below.                                      */
-  /*                                                                       */
-  /*    FT_ENCODING_PRC ::                                                 */
-  /*      Corresponds to encoding systems mainly for Simplified Chinese as */
-  /*      used in People's Republic of China (PRC).  The encoding layout   */
-  /*      is based on GB~2312 and its supersets GBK and GB~18030.          */
-  /*                                                                       */
-  /*    FT_ENCODING_BIG5 ::                                                */
-  /*      Corresponds to an encoding system for Traditional Chinese as     */
-  /*      used in Taiwan and Hong Kong.                                    */
-  /*                                                                       */
-  /*    FT_ENCODING_WANSUNG ::                                             */
-  /*      Corresponds to the Korean encoding system known as Extended      */
-  /*      Wansung (MS Windows code page 949).                              */
-  /*      For more information see                                         */
-  /*      `https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit949.txt'. */
-  /*                                                                       */
-  /*    FT_ENCODING_JOHAB ::                                               */
-  /*      The Korean standard character set (KS~C 5601-1992), which        */
-  /*      corresponds to MS Windows code page 1361.  This character set    */
-  /*      includes all possible Hangul character combinations.             */
-  /*                                                                       */
-  /*    FT_ENCODING_ADOBE_LATIN_1 ::                                       */
-  /*      Corresponds to a Latin-1 encoding as defined in a Type~1         */
-  /*      PostScript font.  It is limited to 256 character codes.          */
-  /*                                                                       */
-  /*    FT_ENCODING_ADOBE_STANDARD ::                                      */
-  /*      Adobe Standard encoding, as found in Type~1, CFF, and            */
-  /*      OpenType/CFF fonts.  It is limited to 256 character codes.       */
-  /*                                                                       */
-  /*    FT_ENCODING_ADOBE_EXPERT ::                                        */
-  /*      Adobe Expert encoding, as found in Type~1, CFF, and OpenType/CFF */
-  /*      fonts.  It is limited to 256 character codes.                    */
-  /*                                                                       */
-  /*    FT_ENCODING_ADOBE_CUSTOM ::                                        */
-  /*      Corresponds to a custom encoding, as found in Type~1, CFF, and   */
-  /*      OpenType/CFF fonts.  It is limited to 256 character codes.       */
-  /*                                                                       */
-  /*    FT_ENCODING_APPLE_ROMAN ::                                         */
-  /*      Apple roman encoding.  Many TrueType and OpenType fonts contain  */
-  /*      a charmap for this 8-bit encoding, since older versions of Mac   */
-  /*      OS are able to use it.                                           */
-  /*                                                                       */
-  /*    FT_ENCODING_OLD_LATIN_2 ::                                         */
-  /*      This value is deprecated and was neither used nor reported by    */
-  /*      FreeType.  Don't use or test for it.                             */
-  /*                                                                       */
-  /*    FT_ENCODING_MS_SJIS ::                                             */
-  /*      Same as FT_ENCODING_SJIS.  Deprecated.                           */
-  /*                                                                       */
-  /*    FT_ENCODING_MS_GB2312 ::                                           */
-  /*      Same as FT_ENCODING_PRC.  Deprecated.                            */
-  /*                                                                       */
-  /*    FT_ENCODING_MS_BIG5 ::                                             */
-  /*      Same as FT_ENCODING_BIG5.  Deprecated.                           */
-  /*                                                                       */
-  /*    FT_ENCODING_MS_WANSUNG ::                                          */
-  /*      Same as FT_ENCODING_WANSUNG.  Deprecated.                        */
-  /*                                                                       */
-  /*    FT_ENCODING_MS_JOHAB ::                                            */
-  /*      Same as FT_ENCODING_JOHAB.  Deprecated.                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    By default, FreeType automatically synthesizes a Unicode charmap   */
-  /*    for PostScript fonts, using their glyph name dictionaries.         */
-  /*    However, it also reports the encodings defined explicitly in the   */
-  /*    font file, for the cases when they are needed, with the Adobe      */
-  /*    values as well.                                                    */
-  /*                                                                       */
-  /*    FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap  */
-  /*    is neither Unicode nor ISO-8859-1 (otherwise it is set to          */
-  /*    FT_ENCODING_UNICODE).  Use @FT_Get_BDF_Charset_ID to find out      */
-  /*    which encoding is really present.  If, for example, the            */
-  /*    `cs_registry' field is `KOI8' and the `cs_encoding' field is `R',  */
-  /*    the font is encoded in KOI8-R.                                     */
-  /*                                                                       */
-  /*    FT_ENCODING_NONE is always set (with a single exception) by the    */
-  /*    winfonts driver.  Use @FT_Get_WinFNT_Header and examine the        */
-  /*    `charset' field of the @FT_WinFNT_HeaderRec structure to find out  */
-  /*    which encoding is really present.  For example,                    */
-  /*    @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for       */
-  /*    Russian).                                                          */
-  /*                                                                       */
-  /*    FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */
-  /*    and `encoding_id' is not `TT_MAC_ID_ROMAN' (otherwise it is set to */
-  /*    FT_ENCODING_APPLE_ROMAN).                                          */
-  /*                                                                       */
-  /*    If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function       */
-  /*    @FT_Get_CMap_Language_ID to query the Mac language ID that may     */
-  /*    be needed to be able to distinguish Apple encoding variants.  See  */
-  /*                                                                       */
-  /*      https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt */
-  /*                                                                       */
-  /*    to get an idea how to do that.  Basically, if the language ID      */
-  /*    is~0, don't use it, otherwise subtract 1 from the language ID.     */
-  /*    Then examine `encoding_id'.  If, for example, `encoding_id' is     */
-  /*    `TT_MAC_ID_ROMAN' and the language ID (minus~1) is                 */
-  /*    `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman.        */
-  /*    `TT_MAC_ID_ARABIC' with `TT_MAC_LANGID_FARSI' means the Farsi      */
-  /*    variant the Arabic encoding.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Encoding
+   *
+   * @description:
+   *   An enumeration to specify character sets supported by charmaps.
+   *   Used in the @FT_Select_Charmap API function.
+   *
+   * @note:
+   *   Despite the name, this enumeration lists specific character
+   *   repertories (i.e., charsets), and not text encoding methods (e.g.,
+   *   UTF-8, UTF-16, etc.).
+   *
+   *   Other encodings might be defined in the future.
+   *
+   * @values:
+   *   FT_ENCODING_NONE ::
+   *     The encoding value~0 is reserved for all formats except BDF, PCF,
+   *     and Windows FNT; see below for more information.
+   *
+   *   FT_ENCODING_UNICODE ::
+   *     The Unicode character set.  This value covers all versions of
+   *     the Unicode repertoire, including ASCII and Latin-1.  Most fonts
+   *     include a Unicode charmap, but not all of them.
+   *
+   *     For example, if you want to access Unicode value U+1F028 (and
+   *     the font contains it), use value 0x1F028 as the input value for
+   *     @FT_Get_Char_Index.
+   *
+   *   FT_ENCODING_MS_SYMBOL ::
+   *     Microsoft Symbol encoding, used to encode mathematical symbols
+   *     and wingdings.  For more information, see
+   *     `https://www.microsoft.com/typography/otspec/recom.htm',
+   *     `http://www.kostis.net/charsets/symbol.htm', and
+   *     `http://www.kostis.net/charsets/wingding.htm'.
+   *
+   *     This encoding uses character codes from the PUA (Private Unicode
+   *     Area) in the range U+F020-U+F0FF.
+   *
+   *   FT_ENCODING_SJIS ::
+   *     Shift JIS encoding for Japanese.  More info at
+   *     `https://en.wikipedia.org/wiki/Shift_JIS'.  See note on
+   *     multi-byte encodings below.
+   *
+   *   FT_ENCODING_PRC ::
+   *     Corresponds to encoding systems mainly for Simplified Chinese as
+   *     used in People's Republic of China (PRC).  The encoding layout
+   *     is based on GB~2312 and its supersets GBK and GB~18030.
+   *
+   *   FT_ENCODING_BIG5 ::
+   *     Corresponds to an encoding system for Traditional Chinese as
+   *     used in Taiwan and Hong Kong.
+   *
+   *   FT_ENCODING_WANSUNG ::
+   *     Corresponds to the Korean encoding system known as Extended
+   *     Wansung (MS Windows code page 949).
+   *     For more information see
+   *     `https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit949.txt'.
+   *
+   *   FT_ENCODING_JOHAB ::
+   *     The Korean standard character set (KS~C 5601-1992), which
+   *     corresponds to MS Windows code page 1361.  This character set
+   *     includes all possible Hangul character combinations.
+   *
+   *   FT_ENCODING_ADOBE_LATIN_1 ::
+   *     Corresponds to a Latin-1 encoding as defined in a Type~1
+   *     PostScript font.  It is limited to 256 character codes.
+   *
+   *   FT_ENCODING_ADOBE_STANDARD ::
+   *     Adobe Standard encoding, as found in Type~1, CFF, and
+   *     OpenType/CFF fonts.  It is limited to 256 character codes.
+   *
+   *   FT_ENCODING_ADOBE_EXPERT ::
+   *     Adobe Expert encoding, as found in Type~1, CFF, and OpenType/CFF
+   *     fonts.  It is limited to 256 character codes.
+   *
+   *   FT_ENCODING_ADOBE_CUSTOM ::
+   *     Corresponds to a custom encoding, as found in Type~1, CFF, and
+   *     OpenType/CFF fonts.  It is limited to 256 character codes.
+   *
+   *   FT_ENCODING_APPLE_ROMAN ::
+   *     Apple roman encoding.  Many TrueType and OpenType fonts contain
+   *     a charmap for this 8-bit encoding, since older versions of Mac
+   *     OS are able to use it.
+   *
+   *   FT_ENCODING_OLD_LATIN_2 ::
+   *     This value is deprecated and was neither used nor reported by
+   *     FreeType.  Don't use or test for it.
+   *
+   *   FT_ENCODING_MS_SJIS ::
+   *     Same as FT_ENCODING_SJIS.  Deprecated.
+   *
+   *   FT_ENCODING_MS_GB2312 ::
+   *     Same as FT_ENCODING_PRC.  Deprecated.
+   *
+   *   FT_ENCODING_MS_BIG5 ::
+   *     Same as FT_ENCODING_BIG5.  Deprecated.
+   *
+   *   FT_ENCODING_MS_WANSUNG ::
+   *     Same as FT_ENCODING_WANSUNG.  Deprecated.
+   *
+   *   FT_ENCODING_MS_JOHAB ::
+   *     Same as FT_ENCODING_JOHAB.  Deprecated.
+   *
+   * @note:
+   *   By default, FreeType enables a Unicode charmap and tags it with
+   *   FT_ENCODING_UNICODE when it is either provided or can be generated
+   *   from PostScript glyph name dictionaries in the font file.
+   *   All other encodings are considered legacy and tagged only if
+   *   explicitly defined in the font file.  Otherwise, FT_ENCODING_NONE
+   *   is used.
+   *
+   *   FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap
+   *   is neither Unicode nor ISO-8859-1 (otherwise it is set to
+   *   FT_ENCODING_UNICODE).  Use @FT_Get_BDF_Charset_ID to find out
+   *   which encoding is really present.  If, for example, the
+   *   `cs_registry' field is `KOI8' and the `cs_encoding' field is `R',
+   *   the font is encoded in KOI8-R.
+   *
+   *   FT_ENCODING_NONE is always set (with a single exception) by the
+   *   winfonts driver.  Use @FT_Get_WinFNT_Header and examine the
+   *   `charset' field of the @FT_WinFNT_HeaderRec structure to find out
+   *   which encoding is really present.  For example,
+   *   @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for
+   *   Russian).
+   *
+   *   FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH
+   *   and `encoding_id' is not `TT_MAC_ID_ROMAN' (otherwise it is set to
+   *   FT_ENCODING_APPLE_ROMAN).
+   *
+   *   If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function
+   *   @FT_Get_CMap_Language_ID to query the Mac language ID that may
+   *   be needed to be able to distinguish Apple encoding variants.  See
+   *
+   *     https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt
+   *
+   *   to get an idea how to do that.  Basically, if the language ID
+   *   is~0, don't use it, otherwise subtract 1 from the language ID.
+   *   Then examine `encoding_id'.  If, for example, `encoding_id' is
+   *   `TT_MAC_ID_ROMAN' and the language ID (minus~1) is
+   *   `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman.
+   *   `TT_MAC_ID_ARABIC' with `TT_MAC_LANGID_FARSI' means the Farsi
+   *   variant the Arabic encoding.
+   */
   typedef enum  FT_Encoding_
   {
     FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ),
@@ -814,29 +821,32 @@
 #define ft_encoding_apple_roman     FT_ENCODING_APPLE_ROMAN
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_CharMapRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The base charmap structure.                                        */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    face        :: A handle to the parent face object.                 */
-  /*                                                                       */
-  /*    encoding    :: An @FT_Encoding tag identifying the charmap.  Use   */
-  /*                   this with @FT_Select_Charmap.                       */
-  /*                                                                       */
-  /*    platform_id :: An ID number describing the platform for the        */
-  /*                   following encoding ID.  This comes directly from    */
-  /*                   the TrueType specification and gets emulated for    */
-  /*                   other formats.                                      */
-  /*                                                                       */
-  /*    encoding_id :: A platform specific encoding number.  This also     */
-  /*                   comes from the TrueType specification and gets      */
-  /*                   emulated similarly.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_CharMapRec
+   *
+   * @description:
+   *   The base charmap structure.
+   *
+   * @fields:
+   *   face ::
+   *     A handle to the parent face object.
+   *
+   *   encoding ::
+   *     An @FT_Encoding tag identifying the charmap.  Use
+   *     this with @FT_Select_Charmap.
+   *
+   *   platform_id ::
+   *     An ID number describing the platform for the
+   *     following encoding ID.  This comes directly from
+   *     the TrueType specification and gets emulated for
+   *     other formats.
+   *
+   *   encoding_id ::
+   *     A platform-specific encoding number.  This also comes from the
+   *     TrueType specification and gets emulated similarly.
+   */
   typedef struct  FT_CharMapRec_
   {
     FT_Face      face;
@@ -856,215 +866,232 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Face_Internal                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An opaque handle to an `FT_Face_InternalRec' structure that models */
-  /*    the private data of a given @FT_Face object.                       */
-  /*                                                                       */
-  /*    This structure might change between releases of FreeType~2 and is  */
-  /*    not generally available to client applications.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Face_Internal
+   *
+   * @description:
+   *   An opaque handle to an `FT_Face_InternalRec' structure that models
+   *   the private data of a given @FT_Face object.
+   *
+   *   This structure might change between releases of FreeType~2 and is
+   *   not generally available to client applications.
+   */
   typedef struct FT_Face_InternalRec_*  FT_Face_Internal;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_FaceRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FreeType root face class structure.  A face object models a        */
-  /*    typeface in a font file.                                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_faces           :: The number of faces in the font file.  Some */
-  /*                           font formats can have multiple faces in     */
-  /*                           a single font file.                         */
-  /*                                                                       */
-  /*    face_index          :: This field holds two different values.      */
-  /*                           Bits 0-15 are the index of the face in the  */
-  /*                           font file (starting with value~0).  They    */
-  /*                           are set to~0 if there is only one face in   */
-  /*                           the font file.                              */
-  /*                                                                       */
-  /*                           [Since 2.6.1] Bits 16-30 are relevant to GX */
-  /*                           and OpenType variation fonts only, holding  */
-  /*                           the named instance index for the current    */
-  /*                           face index (starting with value~1; value~0  */
-  /*                           indicates font access without a named       */
-  /*                           instance).  For non-variation fonts, bits   */
-  /*                           16-30 are ignored.  If we have the third    */
-  /*                           named instance of face~4, say, `face_index' */
-  /*                           is set to 0x00030004.                       */
-  /*                                                                       */
-  /*                           Bit 31 is always zero (this is,             */
-  /*                           `face_index' is always a positive value).   */
-  /*                                                                       */
-  /*                           [Since 2.9] Changing the design coordinates */
-  /*                           with @FT_Set_Var_Design_Coordinates or      */
-  /*                           @FT_Set_Var_Blend_Coordinates does not      */
-  /*                           influence the named instance index value    */
-  /*                           (only @FT_Set_Named_Instance does that).    */
-  /*                                                                       */
-  /*    face_flags          :: A set of bit flags that give important      */
-  /*                           information about the face; see             */
-  /*                           @FT_FACE_FLAG_XXX for the details.          */
-  /*                                                                       */
-  /*    style_flags         :: The lower 16~bits contain a set of bit      */
-  /*                           flags indicating the style of the face; see */
-  /*                           @FT_STYLE_FLAG_XXX for the details.         */
-  /*                                                                       */
-  /*                           [Since 2.6.1] Bits 16-30 hold the number    */
-  /*                           of named instances available for the        */
-  /*                           current face if we have a GX or OpenType    */
-  /*                           variation (sub)font.  Bit 31 is always zero */
-  /*                           (this is, `style_flags' is always a         */
-  /*                           positive value).  Note that a variation     */
-  /*                           font has always at least one named          */
-  /*                           instance, namely the default instance.      */
-  /*                                                                       */
-  /*    num_glyphs          :: The number of glyphs in the face.  If the   */
-  /*                           face is scalable and has sbits (see         */
-  /*                           `num_fixed_sizes'), it is set to the number */
-  /*                           of outline glyphs.                          */
-  /*                                                                       */
-  /*                           For CID-keyed fonts (not in an SFNT         */
-  /*                           wrapper) this value gives the highest CID   */
-  /*                           used in the font.                           */
-  /*                                                                       */
-  /*    family_name         :: The face's family name.  This is an ASCII   */
-  /*                           string, usually in English, that describes  */
-  /*                           the typeface's family (like `Times New      */
-  /*                           Roman', `Bodoni', `Garamond', etc).  This   */
-  /*                           is a least common denominator used to list  */
-  /*                           fonts.  Some formats (TrueType & OpenType)  */
-  /*                           provide localized and Unicode versions of   */
-  /*                           this string.  Applications should use the   */
-  /*                           format specific interface to access them.   */
-  /*                           Can be NULL (e.g., in fonts embedded in a   */
-  /*                           PDF file).                                  */
-  /*                                                                       */
-  /*                           In case the font doesn't provide a specific */
-  /*                           family name entry, FreeType tries to        */
-  /*                           synthesize one, deriving it from other name */
-  /*                           entries.                                    */
-  /*                                                                       */
-  /*    style_name          :: The face's style name.  This is an ASCII    */
-  /*                           string, usually in English, that describes  */
-  /*                           the typeface's style (like `Italic',        */
-  /*                           `Bold', `Condensed', etc).  Not all font    */
-  /*                           formats provide a style name, so this field */
-  /*                           is optional, and can be set to NULL.  As    */
-  /*                           for `family_name', some formats provide     */
-  /*                           localized and Unicode versions of this      */
-  /*                           string.  Applications should use the format */
-  /*                           specific interface to access them.          */
-  /*                                                                       */
-  /*    num_fixed_sizes     :: The number of bitmap strikes in the face.   */
-  /*                           Even if the face is scalable, there might   */
-  /*                           still be bitmap strikes, which are called   */
-  /*                           `sbits' in that case.                       */
-  /*                                                                       */
-  /*    available_sizes     :: An array of @FT_Bitmap_Size for all bitmap  */
-  /*                           strikes in the face.  It is set to NULL if  */
-  /*                           there is no bitmap strike.                  */
-  /*                                                                       */
-  /*                           Note that FreeType tries to sanitize the    */
-  /*                           strike data since they are sometimes sloppy */
-  /*                           or incorrect, but this can easily fail.     */
-  /*                                                                       */
-  /*    num_charmaps        :: The number of charmaps in the face.         */
-  /*                                                                       */
-  /*    charmaps            :: An array of the charmaps of the face.       */
-  /*                                                                       */
-  /*    generic             :: A field reserved for client uses.  See the  */
-  /*                           @FT_Generic type description.               */
-  /*                                                                       */
-  /*    bbox                :: The font bounding box.  Coordinates are     */
-  /*                           expressed in font units (see                */
-  /*                           `units_per_EM').  The box is large enough   */
-  /*                           to contain any glyph from the font.  Thus,  */
-  /*                           `bbox.yMax' can be seen as the `maximum     */
-  /*                           ascender', and `bbox.yMin' as the `minimum  */
-  /*                           descender'.  Only relevant for scalable     */
-  /*                           formats.                                    */
-  /*                                                                       */
-  /*                           Note that the bounding box might be off by  */
-  /*                           (at least) one pixel for hinted fonts.  See */
-  /*                           @FT_Size_Metrics for further discussion.    */
-  /*                                                                       */
-  /*    units_per_EM        :: The number of font units per EM square for  */
-  /*                           this face.  This is typically 2048 for      */
-  /*                           TrueType fonts, and 1000 for Type~1 fonts.  */
-  /*                           Only relevant for scalable formats.         */
-  /*                                                                       */
-  /*    ascender            :: The typographic ascender of the face,       */
-  /*                           expressed in font units.  For font formats  */
-  /*                           not having this information, it is set to   */
-  /*                           `bbox.yMax'.  Only relevant for scalable    */
-  /*                           formats.                                    */
-  /*                                                                       */
-  /*    descender           :: The typographic descender of the face,      */
-  /*                           expressed in font units.  For font formats  */
-  /*                           not having this information, it is set to   */
-  /*                           `bbox.yMin'.  Note that this field is       */
-  /*                           negative for values below the baseline.     */
-  /*                           Only relevant for scalable formats.         */
-  /*                                                                       */
-  /*    height              :: This value is the vertical distance         */
-  /*                           between two consecutive baselines,          */
-  /*                           expressed in font units.  It is always      */
-  /*                           positive.  Only relevant for scalable       */
-  /*                           formats.                                    */
-  /*                                                                       */
-  /*                           If you want the global glyph height, use    */
-  /*                           `ascender - descender'.                     */
-  /*                                                                       */
-  /*    max_advance_width   :: The maximum advance width, in font units,   */
-  /*                           for all glyphs in this face.  This can be   */
-  /*                           used to make word wrapping computations     */
-  /*                           faster.  Only relevant for scalable         */
-  /*                           formats.                                    */
-  /*                                                                       */
-  /*    max_advance_height  :: The maximum advance height, in font units,  */
-  /*                           for all glyphs in this face.  This is only  */
-  /*                           relevant for vertical layouts, and is set   */
-  /*                           to `height' for fonts that do not provide   */
-  /*                           vertical metrics.  Only relevant for        */
-  /*                           scalable formats.                           */
-  /*                                                                       */
-  /*    underline_position  :: The position, in font units, of the         */
-  /*                           underline line for this face.  It is the    */
-  /*                           center of the underlining stem.  Only       */
-  /*                           relevant for scalable formats.              */
-  /*                                                                       */
-  /*    underline_thickness :: The thickness, in font units, of the        */
-  /*                           underline for this face.  Only relevant for */
-  /*                           scalable formats.                           */
-  /*                                                                       */
-  /*    glyph               :: The face's associated glyph slot(s).        */
-  /*                                                                       */
-  /*    size                :: The current active size for this face.      */
-  /*                                                                       */
-  /*    charmap             :: The current active charmap for this face.   */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Fields may be changed after a call to @FT_Attach_File or           */
-  /*    @FT_Attach_Stream.                                                 */
-  /*                                                                       */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `ascender',         */
-  /*    `descender', `height', `underline_position', and                   */
-  /*    `underline_thickness'.                                             */
-  /*                                                                       */
-  /*    Especially for TrueType fonts see also the documentation for       */
-  /*    @FT_Size_Metrics.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_FaceRec
+   *
+   * @description:
+   *   FreeType root face class structure.  A face object models a
+   *   typeface in a font file.
+   *
+   * @fields:
+   *   num_faces ::
+   *     The number of faces in the font file.  Some
+   *     font formats can have multiple faces in
+   *     a single font file.
+   *
+   *   face_index ::
+   *     This field holds two different values.
+   *     Bits 0-15 are the index of the face in the
+   *     font file (starting with value~0).  They
+   *     are set to~0 if there is only one face in
+   *     the font file.
+   *
+   *     [Since 2.6.1] Bits 16-30 are relevant to GX
+   *     and OpenType variation fonts only, holding
+   *     the named instance index for the current
+   *     face index (starting with value~1; value~0
+   *     indicates font access without a named
+   *     instance).  For non-variation fonts, bits
+   *     16-30 are ignored.  If we have the third
+   *     named instance of face~4, say, `face_index'
+   *     is set to 0x00030004.
+   *
+   *     Bit 31 is always zero (this is,
+   *     `face_index' is always a positive value).
+   *
+   *     [Since 2.9] Changing the design coordinates
+   *     with @FT_Set_Var_Design_Coordinates or
+   *     @FT_Set_Var_Blend_Coordinates does not
+   *     influence the named instance index value
+   *     (only @FT_Set_Named_Instance does that).
+   *
+   *   face_flags ::
+   *     A set of bit flags that give important
+   *     information about the face; see
+   *     @FT_FACE_FLAG_XXX for the details.
+   *
+   *   style_flags ::
+   *     The lower 16~bits contain a set of bit
+   *     flags indicating the style of the face; see
+   *     @FT_STYLE_FLAG_XXX for the details.
+   *
+   *     [Since 2.6.1] Bits 16-30 hold the number
+   *     of named instances available for the
+   *     current face if we have a GX or OpenType
+   *     variation (sub)font.  Bit 31 is always zero
+   *     (this is, `style_flags' is always a
+   *     positive value).  Note that a variation
+   *     font has always at least one named
+   *     instance, namely the default instance.
+   *
+   *   num_glyphs ::
+   *     The number of glyphs in the face.  If the
+   *     face is scalable and has sbits (see
+   *     `num_fixed_sizes'), it is set to the number
+   *     of outline glyphs.
+   *
+   *     For CID-keyed fonts (not in an SFNT
+   *     wrapper) this value gives the highest CID
+   *     used in the font.
+   *
+   *   family_name ::
+   *     The face's family name.  This is an ASCII string, usually in
+   *     English, that describes the typeface's family (like `Times New
+   *     Roman', `Bodoni', `Garamond', etc).  This is a least common
+   *     denominator used to list fonts.  Some formats (TrueType & OpenType)
+   *     provide localized and Unicode versions of this string.
+   *     Applications should use the format-specific interface to access
+   *     them.  Can be NULL (e.g., in fonts embedded in a PDF file).
+   *
+   *     In case the font doesn't provide a specific
+   *     family name entry, FreeType tries to
+   *     synthesize one, deriving it from other name
+   *     entries.
+   *
+   *   style_name ::
+   *     The face's style name.  This is an ASCII string, usually in
+   *     English, that describes the typeface's style (like `Italic',
+   *     `Bold', `Condensed', etc).  Not all font formats provide a style
+   *     name, so this field is optional, and can be set to NULL.  As for
+   *     `family_name', some formats provide localized and Unicode versions
+   *     of this string.  Applications should use the format-specific
+   *     interface to access them.
+   *
+   *   num_fixed_sizes ::
+   *     The number of bitmap strikes in the face.
+   *     Even if the face is scalable, there might
+   *     still be bitmap strikes, which are called
+   *     `sbits' in that case.
+   *
+   *   available_sizes ::
+   *     An array of @FT_Bitmap_Size for all bitmap
+   *     strikes in the face.  It is set to NULL if
+   *     there is no bitmap strike.
+   *
+   *     Note that FreeType tries to sanitize the
+   *     strike data since they are sometimes sloppy
+   *     or incorrect, but this can easily fail.
+   *
+   *   num_charmaps ::
+   *     The number of charmaps in the face.
+   *
+   *   charmaps ::
+   *     An array of the charmaps of the face.
+   *
+   *   generic ::
+   *     A field reserved for client uses.  See the
+   *     @FT_Generic type description.
+   *
+   *   bbox ::
+   *     The font bounding box.  Coordinates are
+   *     expressed in font units (see
+   *     `units_per_EM').  The box is large enough
+   *     to contain any glyph from the font.  Thus,
+   *     `bbox.yMax' can be seen as the `maximum
+   *     ascender', and `bbox.yMin' as the `minimum
+   *     descender'.  Only relevant for scalable
+   *     formats.
+   *
+   *     Note that the bounding box might be off by
+   *     (at least) one pixel for hinted fonts.  See
+   *     @FT_Size_Metrics for further discussion.
+   *
+   *   units_per_EM ::
+   *     The number of font units per EM square for
+   *     this face.  This is typically 2048 for
+   *     TrueType fonts, and 1000 for Type~1 fonts.
+   *     Only relevant for scalable formats.
+   *
+   *   ascender ::
+   *     The typographic ascender of the face,
+   *     expressed in font units.  For font formats
+   *     not having this information, it is set to
+   *     `bbox.yMax'.  Only relevant for scalable
+   *     formats.
+   *
+   *   descender ::
+   *     The typographic descender of the face,
+   *     expressed in font units.  For font formats
+   *     not having this information, it is set to
+   *     `bbox.yMin'.  Note that this field is
+   *     negative for values below the baseline.
+   *     Only relevant for scalable formats.
+   *
+   *   height ::
+   *     This value is the vertical distance
+   *     between two consecutive baselines,
+   *     expressed in font units.  It is always
+   *     positive.  Only relevant for scalable
+   *     formats.
+   *
+   *     If you want the global glyph height, use
+   *     `ascender - descender'.
+   *
+   *   max_advance_width ::
+   *     The maximum advance width, in font units,
+   *     for all glyphs in this face.  This can be
+   *     used to make word wrapping computations
+   *     faster.  Only relevant for scalable
+   *     formats.
+   *
+   *   max_advance_height ::
+   *     The maximum advance height, in font units,
+   *     for all glyphs in this face.  This is only
+   *     relevant for vertical layouts, and is set
+   *     to `height' for fonts that do not provide
+   *     vertical metrics.  Only relevant for
+   *     scalable formats.
+   *
+   *   underline_position ::
+   *     The position, in font units, of the
+   *     underline line for this face.  It is the
+   *     center of the underlining stem.  Only
+   *     relevant for scalable formats.
+   *
+   *   underline_thickness ::
+   *     The thickness, in font units, of the
+   *     underline for this face.  Only relevant for
+   *     scalable formats.
+   *
+   *   glyph ::
+   *     The face's associated glyph slot(s).
+   *
+   *   size ::
+   *     The current active size for this face.
+   *
+   *   charmap ::
+   *     The current active charmap for this face.
+   *
+   * @note:
+   *   Fields may be changed after a call to @FT_Attach_File or
+   *   @FT_Attach_Stream.
+   *
+   *   For an OpenType variation font, the values of the following fields
+   *   can change after a call to @FT_Set_Var_Design_Coordinates (and
+   *   friends) if the font contains an `MVAR' table: `ascender',
+   *   `descender', `height', `underline_position', and
+   *   `underline_thickness'.
+   *
+   *   Especially for TrueType fonts see also the documentation for
+   *   @FT_Size_Metrics.
+   */
   typedef struct  FT_FaceRec_
   {
     FT_Long           num_faces;
@@ -1124,117 +1151,117 @@
   } FT_FaceRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_FACE_FLAG_XXX                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit flags used in the `face_flags' field of the          */
-  /*    @FT_FaceRec structure.  They inform client applications of         */
-  /*    properties of the corresponding face.                              */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_FACE_FLAG_SCALABLE ::                                           */
-  /*      The face contains outline glyphs.  Note that a face can contain  */
-  /*      bitmap strikes also, i.e., a face can have both this flag and    */
-  /*      @FT_FACE_FLAG_FIXED_SIZES set.                                   */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_FIXED_SIZES ::                                        */
-  /*      The face contains bitmap strikes.  See also the                  */
-  /*      `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec.   */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_FIXED_WIDTH ::                                        */
-  /*      The face contains fixed-width characters (like Courier, Lucida,  */
-  /*      MonoType, etc.).                                                 */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_SFNT ::                                               */
-  /*      The face uses the SFNT storage scheme.  For now, this means      */
-  /*      TrueType and OpenType.                                           */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_HORIZONTAL ::                                         */
-  /*      The face contains horizontal glyph metrics.  This should be set  */
-  /*      for all common formats.                                          */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_VERTICAL ::                                           */
-  /*      The face contains vertical glyph metrics.  This is only          */
-  /*      available in some formats, not all of them.                      */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_KERNING ::                                            */
-  /*      The face contains kerning information.  If set, the kerning      */
-  /*      distance can be retrieved using the function @FT_Get_Kerning.    */
-  /*      Otherwise the function always return the vector (0,0).  Note     */
-  /*      that FreeType doesn't handle kerning data from the SFNT `GPOS'   */
-  /*      table (as present in many OpenType fonts).                       */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_FAST_GLYPHS ::                                        */
-  /*      THIS FLAG IS DEPRECATED.  DO NOT USE OR TEST IT.                 */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_MULTIPLE_MASTERS ::                                   */
-  /*      The face contains multiple masters and is capable of             */
-  /*      interpolating between them.  Supported formats are Adobe MM,     */
-  /*      TrueType GX, and OpenType variation fonts.                       */
-  /*                                                                       */
-  /*      See the multiple-masters specific API for details.               */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_GLYPH_NAMES ::                                        */
-  /*      The face contains glyph names, which can be retrieved using      */
-  /*      @FT_Get_Glyph_Name.  Note that some TrueType fonts contain       */
-  /*      broken glyph name tables.  Use the function                      */
-  /*      @FT_Has_PS_Glyph_Names when needed.                              */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_EXTERNAL_STREAM ::                                    */
-  /*      Used internally by FreeType to indicate that a face's stream was */
-  /*      provided by the client application and should not be destroyed   */
-  /*      when @FT_Done_Face is called.  Don't read or test this flag.     */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_HINTER ::                                             */
-  /*      The font driver has a hinting machine of its own.  For example,  */
-  /*      with TrueType fonts, it makes sense to use data from the SFNT    */
-  /*      `gasp' table only if the native TrueType hinting engine (with    */
-  /*      the bytecode interpreter) is available and active.               */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_CID_KEYED ::                                          */
-  /*      The face is CID-keyed.  In that case, the face is not accessed   */
-  /*      by glyph indices but by CID values.  For subsetted CID-keyed     */
-  /*      fonts this has the consequence that not all index values are a   */
-  /*      valid argument to @FT_Load_Glyph.  Only the CID values for which */
-  /*      corresponding glyphs in the subsetted font exist make            */
-  /*      `FT_Load_Glyph' return successfully; in all other cases you get  */
-  /*      an `FT_Err_Invalid_Argument' error.                              */
-  /*                                                                       */
-  /*      Note that CID-keyed fonts that are in an SFNT wrapper (this is,  */
-  /*      all OpenType/CFF fonts) don't have this flag set since the       */
-  /*      glyphs are accessed in the normal way (using contiguous          */
-  /*      indices); the `CID-ness' isn't visible to the application.       */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_TRICKY ::                                             */
-  /*      The face is `tricky', this is, it always needs the font format's */
-  /*      native hinting engine to get a reasonable result.  A typical     */
-  /*      example is the old Chinese font `mingli.ttf' (but not            */
-  /*      `mingliu.ttc') that uses TrueType bytecode instructions to move  */
-  /*      and scale all of its subglyphs.                                  */
-  /*                                                                       */
-  /*      It is not possible to auto-hint such fonts using                 */
-  /*      @FT_LOAD_FORCE_AUTOHINT; it will also ignore                     */
-  /*      @FT_LOAD_NO_HINTING.  You have to set both @FT_LOAD_NO_HINTING   */
-  /*      and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */
-  /*      probably never want this except for demonstration purposes.      */
-  /*                                                                       */
-  /*      Currently, there are about a dozen TrueType fonts in the list of */
-  /*      tricky fonts; they are hard-coded in file `ttobjs.c'.            */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_COLOR ::                                              */
-  /*      [Since 2.5.1] The face has color glyph tables.  To access color  */
-  /*      glyphs use @FT_LOAD_COLOR.                                       */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_VARIATION ::                                          */
-  /*      [Since 2.9] Set if the current face (or named instance) has been */
-  /*      altered with @FT_Set_MM_Design_Coordinates,                      */
-  /*      @FT_Set_Var_Design_Coordinates, or                               */
-  /*      @FT_Set_Var_Blend_Coordinates.  This flag is unset by a call to  */
-  /*      @FT_Set_Named_Instance.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_FACE_FLAG_XXX
+   *
+   * @description:
+   *   A list of bit flags used in the `face_flags' field of the
+   *   @FT_FaceRec structure.  They inform client applications of
+   *   properties of the corresponding face.
+   *
+   * @values:
+   *   FT_FACE_FLAG_SCALABLE ::
+   *     The face contains outline glyphs.  Note that a face can contain
+   *     bitmap strikes also, i.e., a face can have both this flag and
+   *     @FT_FACE_FLAG_FIXED_SIZES set.
+   *
+   *   FT_FACE_FLAG_FIXED_SIZES ::
+   *     The face contains bitmap strikes.  See also the
+   *     `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec.
+   *
+   *   FT_FACE_FLAG_FIXED_WIDTH ::
+   *     The face contains fixed-width characters (like Courier, Lucida,
+   *     MonoType, etc.).
+   *
+   *   FT_FACE_FLAG_SFNT ::
+   *     The face uses the SFNT storage scheme.  For now, this means
+   *     TrueType and OpenType.
+   *
+   *   FT_FACE_FLAG_HORIZONTAL ::
+   *     The face contains horizontal glyph metrics.  This should be set
+   *     for all common formats.
+   *
+   *   FT_FACE_FLAG_VERTICAL ::
+   *     The face contains vertical glyph metrics.  This is only
+   *     available in some formats, not all of them.
+   *
+   *   FT_FACE_FLAG_KERNING ::
+   *     The face contains kerning information.  If set, the kerning
+   *     distance can be retrieved using the function @FT_Get_Kerning.
+   *     Otherwise the function always return the vector (0,0).  Note
+   *     that FreeType doesn't handle kerning data from the SFNT `GPOS'
+   *     table (as present in many OpenType fonts).
+   *
+   *   FT_FACE_FLAG_FAST_GLYPHS ::
+   *     THIS FLAG IS DEPRECATED.  DO NOT USE OR TEST IT.
+   *
+   *   FT_FACE_FLAG_MULTIPLE_MASTERS ::
+   *     The face contains multiple masters and is capable of
+   *     interpolating between them.  Supported formats are Adobe MM,
+   *     TrueType GX, and OpenType variation fonts.
+   *
+   *     See section @multiple_masters for API details.
+   *
+   *   FT_FACE_FLAG_GLYPH_NAMES ::
+   *     The face contains glyph names, which can be retrieved using
+   *     @FT_Get_Glyph_Name.  Note that some TrueType fonts contain
+   *     broken glyph name tables.  Use the function
+   *     @FT_Has_PS_Glyph_Names when needed.
+   *
+   *   FT_FACE_FLAG_EXTERNAL_STREAM ::
+   *     Used internally by FreeType to indicate that a face's stream was
+   *     provided by the client application and should not be destroyed
+   *     when @FT_Done_Face is called.  Don't read or test this flag.
+   *
+   *   FT_FACE_FLAG_HINTER ::
+   *     The font driver has a hinting machine of its own.  For example,
+   *     with TrueType fonts, it makes sense to use data from the SFNT
+   *     `gasp' table only if the native TrueType hinting engine (with
+   *     the bytecode interpreter) is available and active.
+   *
+   *   FT_FACE_FLAG_CID_KEYED ::
+   *     The face is CID-keyed.  In that case, the face is not accessed
+   *     by glyph indices but by CID values.  For subsetted CID-keyed
+   *     fonts this has the consequence that not all index values are a
+   *     valid argument to @FT_Load_Glyph.  Only the CID values for which
+   *     corresponding glyphs in the subsetted font exist make
+   *     `FT_Load_Glyph' return successfully; in all other cases you get
+   *     an `FT_Err_Invalid_Argument' error.
+   *
+   *     Note that CID-keyed fonts that are in an SFNT wrapper (this is,
+   *     all OpenType/CFF fonts) don't have this flag set since the
+   *     glyphs are accessed in the normal way (using contiguous
+   *     indices); the `CID-ness' isn't visible to the application.
+   *
+   *   FT_FACE_FLAG_TRICKY ::
+   *     The face is `tricky', this is, it always needs the font format's
+   *     native hinting engine to get a reasonable result.  A typical
+   *     example is the old Chinese font `mingli.ttf' (but not
+   *     `mingliu.ttc') that uses TrueType bytecode instructions to move
+   *     and scale all of its subglyphs.
+   *
+   *     It is not possible to auto-hint such fonts using
+   *     @FT_LOAD_FORCE_AUTOHINT; it will also ignore
+   *     @FT_LOAD_NO_HINTING.  You have to set both @FT_LOAD_NO_HINTING
+   *     and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you
+   *     probably never want this except for demonstration purposes.
+   *
+   *     Currently, there are about a dozen TrueType fonts in the list of
+   *     tricky fonts; they are hard-coded in file `ttobjs.c'.
+   *
+   *   FT_FACE_FLAG_COLOR ::
+   *     [Since 2.5.1] The face has color glyph tables.  See
+   *     @FT_LOAD_COLOR for more information.
+   *
+   *   FT_FACE_FLAG_VARIATION ::
+   *     [Since 2.9] Set if the current face (or named instance) has been
+   *     altered with @FT_Set_MM_Design_Coordinates,
+   *     @FT_Set_Var_Design_Coordinates, or
+   *     @FT_Set_Var_Blend_Coordinates.  This flag is unset by a call to
+   *     @FT_Set_Named_Instance.
+   */
 #define FT_FACE_FLAG_SCALABLE          ( 1L <<  0 )
 #define FT_FACE_FLAG_FIXED_SIZES       ( 1L <<  1 )
 #define FT_FACE_FLAG_FIXED_WIDTH       ( 1L <<  2 )
@@ -1256,7 +1283,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_HAS_HORIZONTAL( face )
+   *   FT_HAS_HORIZONTAL
    *
    * @description:
    *   A macro that returns true whenever a face object contains
@@ -1273,7 +1300,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_HAS_VERTICAL( face )
+   *   FT_HAS_VERTICAL
    *
    * @description:
    *   A macro that returns true whenever a face object contains real
@@ -1287,7 +1314,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_HAS_KERNING( face )
+   *   FT_HAS_KERNING
    *
    * @description:
    *   A macro that returns true whenever a face object contains kerning
@@ -1301,7 +1328,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_IS_SCALABLE( face )
+   *   FT_IS_SCALABLE
    *
    * @description:
    *   A macro that returns true whenever a face object contains a scalable
@@ -1316,7 +1343,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_IS_SFNT( face )
+   *   FT_IS_SFNT
    *
    * @description:
    *   A macro that returns true whenever a face object contains a font
@@ -1335,7 +1362,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_IS_FIXED_WIDTH( face )
+   *   FT_IS_FIXED_WIDTH
    *
    * @description:
    *   A macro that returns true whenever a face object contains a font face
@@ -1350,7 +1377,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_HAS_FIXED_SIZES( face )
+   *   FT_HAS_FIXED_SIZES
    *
    * @description:
    *   A macro that returns true whenever a face object contains some
@@ -1365,7 +1392,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_HAS_FAST_GLYPHS( face )
+   *   FT_HAS_FAST_GLYPHS
    *
    * @description:
    *   Deprecated.
@@ -1377,7 +1404,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_HAS_GLYPH_NAMES( face )
+   *   FT_HAS_GLYPH_NAMES
    *
    * @description:
    *   A macro that returns true whenever a face object contains some glyph
@@ -1391,7 +1418,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_HAS_MULTIPLE_MASTERS( face )
+   *   FT_HAS_MULTIPLE_MASTERS
    *
    * @description:
    *   A macro that returns true whenever a face object contains some
@@ -1406,7 +1433,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_IS_NAMED_INSTANCE( face )
+   *   FT_IS_NAMED_INSTANCE
    *
    * @description:
    *   A macro that returns true whenever a face object is a named instance
@@ -1428,7 +1455,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_IS_VARIATION( face )
+   *   FT_IS_VARIATION
    *
    * @description:
    *   A macro that returns true whenever a face object has been altered
@@ -1446,7 +1473,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_IS_CID_KEYED( face )
+   *   FT_IS_CID_KEYED
    *
    * @description:
    *   A macro that returns true whenever a face object contains a CID-keyed
@@ -1464,7 +1491,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_IS_TRICKY( face )
+   *   FT_IS_TRICKY
    *
    * @description:
    *   A macro that returns true whenever a face represents a `tricky' font.
@@ -1478,7 +1505,7 @@
   /*************************************************************************
    *
    * @macro:
-   *   FT_HAS_COLOR( face )
+   *   FT_HAS_COLOR
    *
    * @description:
    *   A macro that returns true whenever a face object contains
@@ -1492,149 +1519,157 @@
           ( (face)->face_flags & FT_FACE_FLAG_COLOR )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Const>                                                               */
-  /*    FT_STYLE_FLAG_XXX                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit flags to indicate the style of a given face.  These  */
-  /*    are used in the `style_flags' field of @FT_FaceRec.                */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_STYLE_FLAG_ITALIC ::                                            */
-  /*      The face style is italic or oblique.                             */
-  /*                                                                       */
-  /*    FT_STYLE_FLAG_BOLD ::                                              */
-  /*      The face is bold.                                                */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The style information as provided by FreeType is very basic.  More */
-  /*    details are beyond the scope and should be done on a higher level  */
-  /*    (for example, by analyzing various fields of the `OS/2' table in   */
-  /*    SFNT based fonts).                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_STYLE_FLAG_XXX
+   *
+   * @description:
+   *   A list of bit flags to indicate the style of a given face.  These
+   *   are used in the `style_flags' field of @FT_FaceRec.
+   *
+   * @values:
+   *   FT_STYLE_FLAG_ITALIC ::
+   *     The face style is italic or oblique.
+   *
+   *   FT_STYLE_FLAG_BOLD ::
+   *     The face is bold.
+   *
+   * @note:
+   *   The style information as provided by FreeType is very basic.  More
+   *   details are beyond the scope and should be done on a higher level
+   *   (for example, by analyzing various fields of the `OS/2' table in
+   *   SFNT based fonts).
+   */
 #define FT_STYLE_FLAG_ITALIC  ( 1 << 0 )
 #define FT_STYLE_FLAG_BOLD    ( 1 << 1 )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Size_Internal                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An opaque handle to an `FT_Size_InternalRec' structure, used to    */
-  /*    model private data of a given @FT_Size object.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Size_Internal
+   *
+   * @description:
+   *   An opaque handle to an `FT_Size_InternalRec' structure, used to
+   *   model private data of a given @FT_Size object.
+   */
   typedef struct FT_Size_InternalRec_*  FT_Size_Internal;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Size_Metrics                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The size metrics structure gives the metrics of a size object.     */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    x_ppem       :: The width of the scaled EM square in pixels, hence */
-  /*                    the term `ppem' (pixels per EM).  It is also       */
-  /*                    referred to as `nominal width'.                    */
-  /*                                                                       */
-  /*    y_ppem       :: The height of the scaled EM square in pixels,      */
-  /*                    hence the term `ppem' (pixels per EM).  It is also */
-  /*                    referred to as `nominal height'.                   */
-  /*                                                                       */
-  /*    x_scale      :: A 16.16 fractional scaling value to convert        */
-  /*                    horizontal metrics from font units to 26.6         */
-  /*                    fractional pixels.  Only relevant for scalable     */
-  /*                    font formats.                                      */
-  /*                                                                       */
-  /*    y_scale      :: A 16.16 fractional scaling value to convert        */
-  /*                    vertical metrics from font units to 26.6           */
-  /*                    fractional pixels.  Only relevant for scalable     */
-  /*                    font formats.                                      */
-  /*                                                                       */
-  /*    ascender     :: The ascender in 26.6 fractional pixels, rounded up */
-  /*                    to an integer value.  See @FT_FaceRec for the      */
-  /*                    details.                                           */
-  /*                                                                       */
-  /*    descender    :: The descender in 26.6 fractional pixels, rounded   */
-  /*                    down to an integer value.  See @FT_FaceRec for the */
-  /*                    details.                                           */
-  /*                                                                       */
-  /*    height       :: The height in 26.6 fractional pixels, rounded to   */
-  /*                    an integer value.  See @FT_FaceRec for the         */
-  /*                    details.                                           */
-  /*                                                                       */
-  /*    max_advance  :: The maximum advance width in 26.6 fractional       */
-  /*                    pixels, rounded to an integer value.  See          */
-  /*                    @FT_FaceRec for the details.                       */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The scaling values, if relevant, are determined first during a     */
-  /*    size changing operation.  The remaining fields are then set by the */
-  /*    driver.  For scalable formats, they are usually set to scaled      */
-  /*    values of the corresponding fields in @FT_FaceRec.  Some values    */
-  /*    like ascender or descender are rounded for historical reasons;     */
-  /*    more precise values (for outline fonts) can be derived by scaling  */
-  /*    the corresponding @FT_FaceRec values manually, with code similar   */
-  /*    to the following.                                                  */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      scaled_ascender = FT_MulFix( face->ascender,                     */
-  /*                                   size_metrics->y_scale );            */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Note that due to glyph hinting and the selected rendering mode     */
-  /*    these values are usually not exact; consequently, they must be     */
-  /*    treated as unreliable with an error margin of at least one pixel!  */
-  /*                                                                       */
-  /*    Indeed, the only way to get the exact metrics is to render _all_   */
-  /*    glyphs.  As this would be a definite performance hit, it is up to  */
-  /*    client applications to perform such computations.                  */
-  /*                                                                       */
-  /*    The `FT_Size_Metrics' structure is valid for bitmap fonts also.    */
-  /*                                                                       */
-  /*                                                                       */
-  /*    *TrueType* *fonts* *with* *native* *bytecode* *hinting*            */
-  /*                                                                       */
-  /*    All applications that handle TrueType fonts with native hinting    */
-  /*    must be aware that TTFs expect different rounding of vertical font */
-  /*    dimensions.  The application has to cater for this, especially if  */
-  /*    it wants to rely on a TTF's vertical data (for example, to         */
-  /*    properly align box characters vertically).                         */
-  /*                                                                       */
-  /*    Only the application knows _in_ _advance_ that it is going to use  */
-  /*    native hinting for TTFs!  FreeType, on the other hand, selects the */
-  /*    hinting mode not at the time of creating an @FT_Size object but    */
-  /*    much later, namely while calling @FT_Load_Glyph.                   */
-  /*                                                                       */
-  /*    Here is some pseudo code that illustrates a possible solution.     */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      font_format = FT_Get_Font_Format( face );                        */
-  /*                                                                       */
-  /*      if ( !strcmp( font_format, "TrueType" ) &&                       */
-  /*           do_native_bytecode_hinting         )                        */
-  /*      {                                                                */
-  /*        ascender  = ROUND( FT_MulFix( face->ascender,                  */
-  /*                                      size_metrics->y_scale ) );       */
-  /*        descender = ROUND( FT_MulFix( face->descender,                 */
-  /*                                      size_metrics->y_scale ) );       */
-  /*      }                                                                */
-  /*      else                                                             */
-  /*      {                                                                */
-  /*        ascender  = size_metrics->ascender;                            */
-  /*        descender = size_metrics->descender;                           */
-  /*      }                                                                */
-  /*                                                                       */
-  /*      height      = size_metrics->height;                              */
-  /*      max_advance = size_metrics->max_advance;                         */
-  /*    }                                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Size_Metrics
+   *
+   * @description:
+   *   The size metrics structure gives the metrics of a size object.
+   *
+   * @fields:
+   *   x_ppem ::
+   *     The width of the scaled EM square in pixels, hence
+   *     the term `ppem' (pixels per EM).  It is also
+   *     referred to as `nominal width'.
+   *
+   *   y_ppem ::
+   *     The height of the scaled EM square in pixels,
+   *     hence the term `ppem' (pixels per EM).  It is also
+   *     referred to as `nominal height'.
+   *
+   *   x_scale ::
+   *     A 16.16 fractional scaling value to convert
+   *     horizontal metrics from font units to 26.6
+   *     fractional pixels.  Only relevant for scalable
+   *     font formats.
+   *
+   *   y_scale ::
+   *     A 16.16 fractional scaling value to convert
+   *     vertical metrics from font units to 26.6
+   *     fractional pixels.  Only relevant for scalable
+   *     font formats.
+   *
+   *   ascender ::
+   *     The ascender in 26.6 fractional pixels, rounded up
+   *     to an integer value.  See @FT_FaceRec for the
+   *     details.
+   *
+   *   descender ::
+   *     The descender in 26.6 fractional pixels, rounded
+   *     down to an integer value.  See @FT_FaceRec for the
+   *     details.
+   *
+   *   height ::
+   *     The height in 26.6 fractional pixels, rounded to
+   *     an integer value.  See @FT_FaceRec for the
+   *     details.
+   *
+   *   max_advance ::
+   *     The maximum advance width in 26.6 fractional
+   *     pixels, rounded to an integer value.  See
+   *     @FT_FaceRec for the details.
+   *
+   * @note:
+   *   The scaling values, if relevant, are determined first during a
+   *   size changing operation.  The remaining fields are then set by the
+   *   driver.  For scalable formats, they are usually set to scaled
+   *   values of the corresponding fields in @FT_FaceRec.  Some values
+   *   like ascender or descender are rounded for historical reasons;
+   *   more precise values (for outline fonts) can be derived by scaling
+   *   the corresponding @FT_FaceRec values manually, with code similar
+   *   to the following.
+   *
+   *   {
+   *     scaled_ascender = FT_MulFix( face->ascender,
+   *                                  size_metrics->y_scale );
+   *   }
+   *
+   *   Note that due to glyph hinting and the selected rendering mode
+   *   these values are usually not exact; consequently, they must be
+   *   treated as unreliable with an error margin of at least one pixel!
+   *
+   *   Indeed, the only way to get the exact metrics is to render _all_
+   *   glyphs.  As this would be a definite performance hit, it is up to
+   *   client applications to perform such computations.
+   *
+   *   The `FT_Size_Metrics' structure is valid for bitmap fonts also.
+   *
+   *
+   *   *TrueType* *fonts* *with* *native* *bytecode* *hinting*
+   *
+   *   All applications that handle TrueType fonts with native hinting
+   *   must be aware that TTFs expect different rounding of vertical font
+   *   dimensions.  The application has to cater for this, especially if
+   *   it wants to rely on a TTF's vertical data (for example, to
+   *   properly align box characters vertically).
+   *
+   *   Only the application knows _in_ _advance_ that it is going to use
+   *   native hinting for TTFs!  FreeType, on the other hand, selects the
+   *   hinting mode not at the time of creating an @FT_Size object but
+   *   much later, namely while calling @FT_Load_Glyph.
+   *
+   *   Here is some pseudo code that illustrates a possible solution.
+   *
+   *   {
+   *     font_format = FT_Get_Font_Format( face );
+   *
+   *     if ( !strcmp( font_format, "TrueType" ) &&
+   *          do_native_bytecode_hinting         )
+   *     {
+   *       ascender  = ROUND( FT_MulFix( face->ascender,
+   *                                     size_metrics->y_scale ) );
+   *       descender = ROUND( FT_MulFix( face->descender,
+   *                                     size_metrics->y_scale ) );
+   *     }
+   *     else
+   *     {
+   *       ascender  = size_metrics->ascender;
+   *       descender = size_metrics->descender;
+   *     }
+   *
+   *     height      = size_metrics->height;
+   *     max_advance = size_metrics->max_advance;
+   *   }
+   */
   typedef struct  FT_Size_Metrics_
   {
     FT_UShort  x_ppem;      /* horizontal pixels per EM               */
@@ -1651,25 +1686,28 @@
   } FT_Size_Metrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_SizeRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FreeType root size class structure.  A size object models a face   */
-  /*    object at a given size.                                            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    face    :: Handle to the parent face object.                       */
-  /*                                                                       */
-  /*    generic :: A typeless pointer, unused by the FreeType library or   */
-  /*               any of its drivers.  It can be used by client           */
-  /*               applications to link their own data to each size        */
-  /*               object.                                                 */
-  /*                                                                       */
-  /*    metrics :: Metrics for this size object.  This field is read-only. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_SizeRec
+   *
+   * @description:
+   *   FreeType root size class structure.  A size object models a face
+   *   object at a given size.
+   *
+   * @fields:
+   *   face ::
+   *     Handle to the parent face object.
+   *
+   *   generic ::
+   *     A typeless pointer, unused by the FreeType library or
+   *     any of its drivers.  It can be used by client
+   *     applications to link their own data to each size
+   *     object.
+   *
+   *   metrics ::
+   *     Metrics for this size object.  This field is read-only.
+   */
   typedef struct  FT_SizeRec_
   {
     FT_Face           face;      /* parent face object              */
@@ -1680,237 +1718,261 @@
   } FT_SizeRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_SubGlyph                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The subglyph structure is an internal object used to describe      */
-  /*    subglyphs (for example, in the case of composites).                */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The subglyph implementation is not part of the high-level API,     */
-  /*    hence the forward structure declaration.                           */
-  /*                                                                       */
-  /*    You can however retrieve subglyph information with                 */
-  /*    @FT_Get_SubGlyph_Info.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_SubGlyph
+   *
+   * @description:
+   *   The subglyph structure is an internal object used to describe
+   *   subglyphs (for example, in the case of composites).
+   *
+   * @note:
+   *   The subglyph implementation is not part of the high-level API,
+   *   hence the forward structure declaration.
+   *
+   *   You can however retrieve subglyph information with
+   *   @FT_Get_SubGlyph_Info.
+   */
   typedef struct FT_SubGlyphRec_*  FT_SubGlyph;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Slot_Internal                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An opaque handle to an `FT_Slot_InternalRec' structure, used to    */
-  /*    model private data of a given @FT_GlyphSlot object.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Slot_Internal
+   *
+   * @description:
+   *   An opaque handle to an `FT_Slot_InternalRec' structure, used to
+   *   model private data of a given @FT_GlyphSlot object.
+   */
   typedef struct FT_Slot_InternalRec_*  FT_Slot_Internal;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_GlyphSlotRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FreeType root glyph slot class structure.  A glyph slot is a       */
-  /*    container where individual glyphs can be loaded, be they in        */
-  /*    outline or bitmap format.                                          */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    library           :: A handle to the FreeType library instance     */
-  /*                         this slot belongs to.                         */
-  /*                                                                       */
-  /*    face              :: A handle to the parent face object.           */
-  /*                                                                       */
-  /*    next              :: In some cases (like some font tools), several */
-  /*                         glyph slots per face object can be a good     */
-  /*                         thing.  As this is rare, the glyph slots are  */
-  /*                         listed through a direct, single-linked list   */
-  /*                         using its `next' field.                       */
-  /*                                                                       */
-  /*    generic           :: A typeless pointer unused by the FreeType     */
-  /*                         library or any of its drivers.  It can be     */
-  /*                         used by client applications to link their own */
-  /*                         data to each glyph slot object.               */
-  /*                                                                       */
-  /*    metrics           :: The metrics of the last loaded glyph in the   */
-  /*                         slot.  The returned values depend on the last */
-  /*                         load flags (see the @FT_Load_Glyph API        */
-  /*                         function) and can be expressed either in 26.6 */
-  /*                         fractional pixels or font units.              */
-  /*                                                                       */
-  /*                         Note that even when the glyph image is        */
-  /*                         transformed, the metrics are not.             */
-  /*                                                                       */
-  /*    linearHoriAdvance :: The advance width of the unhinted glyph.      */
-  /*                         Its value is expressed in 16.16 fractional    */
-  /*                         pixels, unless @FT_LOAD_LINEAR_DESIGN is set  */
-  /*                         when loading the glyph.  This field can be    */
-  /*                         important to perform correct WYSIWYG layout.  */
-  /*                         Only relevant for outline glyphs.             */
-  /*                                                                       */
-  /*    linearVertAdvance :: The advance height of the unhinted glyph.     */
-  /*                         Its value is expressed in 16.16 fractional    */
-  /*                         pixels, unless @FT_LOAD_LINEAR_DESIGN is set  */
-  /*                         when loading the glyph.  This field can be    */
-  /*                         important to perform correct WYSIWYG layout.  */
-  /*                         Only relevant for outline glyphs.             */
-  /*                                                                       */
-  /*    advance           :: This shorthand is, depending on               */
-  /*                         @FT_LOAD_IGNORE_TRANSFORM, the transformed    */
-  /*                         (hinted) advance width for the glyph, in 26.6 */
-  /*                         fractional pixel format.  As specified with   */
-  /*                         @FT_LOAD_VERTICAL_LAYOUT, it uses either the  */
-  /*                         `horiAdvance' or the `vertAdvance' value of   */
-  /*                         `metrics' field.                              */
-  /*                                                                       */
-  /*    format            :: This field indicates the format of the image  */
-  /*                         contained in the glyph slot.  Typically       */
-  /*                         @FT_GLYPH_FORMAT_BITMAP,                      */
-  /*                         @FT_GLYPH_FORMAT_OUTLINE, or                  */
-  /*                         @FT_GLYPH_FORMAT_COMPOSITE, but other values  */
-  /*                         are possible.                                 */
-  /*                                                                       */
-  /*    bitmap            :: This field is used as a bitmap descriptor.    */
-  /*                         Note that the address and content of the      */
-  /*                         bitmap buffer can change between calls of     */
-  /*                         @FT_Load_Glyph and a few other functions.     */
-  /*                                                                       */
-  /*    bitmap_left       :: The bitmap's left bearing expressed in        */
-  /*                         integer pixels.                               */
-  /*                                                                       */
-  /*    bitmap_top        :: The bitmap's top bearing expressed in integer */
-  /*                         pixels.  This is the distance from the        */
-  /*                         baseline to the top-most glyph scanline,      */
-  /*                         upwards y~coordinates being *positive*.       */
-  /*                                                                       */
-  /*    outline           :: The outline descriptor for the current glyph  */
-  /*                         image if its format is                        */
-  /*                         @FT_GLYPH_FORMAT_OUTLINE.  Once a glyph is    */
-  /*                         loaded, `outline' can be transformed,         */
-  /*                         distorted, emboldened, etc.  However, it must */
-  /*                         not be freed.                                 */
-  /*                                                                       */
-  /*    num_subglyphs     :: The number of subglyphs in a composite glyph. */
-  /*                         This field is only valid for the composite    */
-  /*                         glyph format that should normally only be     */
-  /*                         loaded with the @FT_LOAD_NO_RECURSE flag.     */
-  /*                                                                       */
-  /*    subglyphs         :: An array of subglyph descriptors for          */
-  /*                         composite glyphs.  There are `num_subglyphs'  */
-  /*                         elements in there.  Currently internal to     */
-  /*                         FreeType.                                     */
-  /*                                                                       */
-  /*    control_data      :: Certain font drivers can also return the      */
-  /*                         control data for a given glyph image (e.g.    */
-  /*                         TrueType bytecode, Type~1 charstrings, etc.). */
-  /*                         This field is a pointer to such data; it is   */
-  /*                         currently internal to FreeType.               */
-  /*                                                                       */
-  /*    control_len       :: This is the length in bytes of the control    */
-  /*                         data.  Currently internal to FreeType.        */
-  /*                                                                       */
-  /*    other             :: Reserved.                                     */
-  /*                                                                       */
-  /*    lsb_delta         :: The difference between hinted and unhinted    */
-  /*                         left side bearing while auto-hinting is       */
-  /*                         active.  Zero otherwise.                      */
-  /*                                                                       */
-  /*    rsb_delta         :: The difference between hinted and unhinted    */
-  /*                         right side bearing while auto-hinting is      */
-  /*                         active.  Zero otherwise.                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If @FT_Load_Glyph is called with default flags (see                */
-  /*    @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in   */
-  /*    its native format (e.g., an outline glyph for TrueType and Type~1  */
-  /*    formats).  [Since 2.9] The prospective bitmap metrics are          */
-  /*    calculated according to @FT_LOAD_TARGET_XXX and other flags even   */
-  /*    for the outline glyph, even if @FT_LOAD_RENDER is not set.         */
-  /*                                                                       */
-  /*    This image can later be converted into a bitmap by calling         */
-  /*    @FT_Render_Glyph.  This function searches the current renderer for */
-  /*    the native image's format, then invokes it.                        */
-  /*                                                                       */
-  /*    The renderer is in charge of transforming the native image through */
-  /*    the slot's face transformation fields, then converting it into a   */
-  /*    bitmap that is returned in `slot->bitmap'.                         */
-  /*                                                                       */
-  /*    Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */
-  /*    to specify the position of the bitmap relative to the current pen  */
-  /*    position (e.g., coordinates (0,0) on the baseline).  Of course,    */
-  /*    `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP.         */
-  /*                                                                       */
-  /*    Here is a small pseudo code fragment that shows how to use         */
-  /*    `lsb_delta' and `rsb_delta' to do fractional positioning of        */
-  /*    glyphs:                                                            */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FT_GlyphSlot  slot     = face->glyph;                            */
-  /*      FT_Pos        origin_x = 0;                                      */
-  /*                                                                       */
-  /*                                                                       */
-  /*      for all glyphs do                                                */
-  /*        <load glyph with `FT_Load_Glyph'>                              */
-  /*                                                                       */
-  /*        FT_Outline_Translate( slot->outline, origin_x & 63, 0 );       */
-  /*                                                                       */
-  /*        <save glyph image, or render glyph, or ...>                    */
-  /*                                                                       */
-  /*        <compute kern between current and next glyph                   */
-  /*         and add it to `origin_x'>                                     */
-  /*                                                                       */
-  /*        origin_x += slot->advance.x;                                   */
-  /*        origin_x += slot->rsb_delta - slot->lsb_delta;                 */
-  /*      endfor                                                           */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Here is another small pseudo code fragment that shows how to use   */
-  /*    `lsb_delta' and `rsb_delta' to improve integer positioning of      */
-  /*    glyphs:                                                            */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FT_GlyphSlot  slot           = face->glyph;                      */
-  /*      FT_Pos        origin_x       = 0;                                */
-  /*      FT_Pos        prev_rsb_delta = 0;                                */
-  /*                                                                       */
-  /*                                                                       */
-  /*      for all glyphs do                                                */
-  /*        <compute kern between current and previous glyph               */
-  /*         and add it to `origin_x'>                                     */
-  /*                                                                       */
-  /*        <load glyph with `FT_Load_Glyph'>                              */
-  /*                                                                       */
-  /*        if ( prev_rsb_delta - slot->lsb_delta >  32 )                  */
-  /*          origin_x -= 64;                                              */
-  /*        else if ( prev_rsb_delta - slot->lsb_delta < -31 )             */
-  /*          origin_x += 64;                                              */
-  /*                                                                       */
-  /*        prev_rsb_delta = slot->rsb_delta;                              */
-  /*                                                                       */
-  /*        <save glyph image, or render glyph, or ...>                    */
-  /*                                                                       */
-  /*        origin_x += slot->advance.x;                                   */
-  /*      endfor                                                           */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    If you use strong auto-hinting, you *must* apply these delta       */
-  /*    values!  Otherwise you will experience far too large inter-glyph   */
-  /*    spacing at small rendering sizes in most cases.  Note that it      */
-  /*    doesn't harm to use the above code for other hinting modes also,   */
-  /*    since the delta values are zero then.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_GlyphSlotRec
+   *
+   * @description:
+   *   FreeType root glyph slot class structure.  A glyph slot is a
+   *   container where individual glyphs can be loaded, be they in
+   *   outline or bitmap format.
+   *
+   * @fields:
+   *   library ::
+   *     A handle to the FreeType library instance
+   *     this slot belongs to.
+   *
+   *   face ::
+   *     A handle to the parent face object.
+   *
+   *   next ::
+   *     In some cases (like some font tools), several
+   *     glyph slots per face object can be a good
+   *     thing.  As this is rare, the glyph slots are
+   *     listed through a direct, single-linked list
+   *     using its `next' field.
+   *
+   *   glyph_index ::
+   *     The glyph index passed as an argument to @FT_Load_Glyph while
+   *     initializeing the glyph slot (since FreeType version 2.10).
+   *
+   *   generic ::
+   *     A typeless pointer unused by the FreeType
+   *     library or any of its drivers.  It can be
+   *     used by client applications to link their own
+   *     data to each glyph slot object.
+   *
+   *   metrics ::
+   *     The metrics of the last loaded glyph in the
+   *     slot.  The returned values depend on the last
+   *     load flags (see the @FT_Load_Glyph API
+   *     function) and can be expressed either in 26.6
+   *     fractional pixels or font units.
+   *
+   *     Note that even when the glyph image is
+   *     transformed, the metrics are not.
+   *
+   *   linearHoriAdvance ::
+   *     The advance width of the unhinted glyph.
+   *     Its value is expressed in 16.16 fractional
+   *     pixels, unless @FT_LOAD_LINEAR_DESIGN is set
+   *     when loading the glyph.  This field can be
+   *     important to perform correct WYSIWYG layout.
+   *     Only relevant for outline glyphs.
+   *
+   *   linearVertAdvance ::
+   *     The advance height of the unhinted glyph.
+   *     Its value is expressed in 16.16 fractional
+   *     pixels, unless @FT_LOAD_LINEAR_DESIGN is set
+   *     when loading the glyph.  This field can be
+   *     important to perform correct WYSIWYG layout.
+   *     Only relevant for outline glyphs.
+   *
+   *   advance ::
+   *     This shorthand is, depending on
+   *     @FT_LOAD_IGNORE_TRANSFORM, the transformed
+   *     (hinted) advance width for the glyph, in 26.6
+   *     fractional pixel format.  As specified with
+   *     @FT_LOAD_VERTICAL_LAYOUT, it uses either the
+   *     `horiAdvance' or the `vertAdvance' value of
+   *     `metrics' field.
+   *
+   *   format ::
+   *     This field indicates the format of the image
+   *     contained in the glyph slot.  Typically
+   *     @FT_GLYPH_FORMAT_BITMAP,
+   *     @FT_GLYPH_FORMAT_OUTLINE, or
+   *     @FT_GLYPH_FORMAT_COMPOSITE, but other values
+   *     are possible.
+   *
+   *   bitmap ::
+   *     This field is used as a bitmap descriptor.
+   *     Note that the address and content of the
+   *     bitmap buffer can change between calls of
+   *     @FT_Load_Glyph and a few other functions.
+   *
+   *   bitmap_left ::
+   *     The bitmap's left bearing expressed in
+   *     integer pixels.
+   *
+   *   bitmap_top ::
+   *     The bitmap's top bearing expressed in integer
+   *     pixels.  This is the distance from the
+   *     baseline to the top-most glyph scanline,
+   *     upwards y~coordinates being *positive*.
+   *
+   *   outline ::
+   *     The outline descriptor for the current glyph
+   *     image if its format is
+   *     @FT_GLYPH_FORMAT_OUTLINE.  Once a glyph is
+   *     loaded, `outline' can be transformed,
+   *     distorted, emboldened, etc.  However, it must
+   *     not be freed.
+   *
+   *   num_subglyphs ::
+   *     The number of subglyphs in a composite glyph.
+   *     This field is only valid for the composite
+   *     glyph format that should normally only be
+   *     loaded with the @FT_LOAD_NO_RECURSE flag.
+   *
+   *   subglyphs ::
+   *     An array of subglyph descriptors for
+   *     composite glyphs.  There are `num_subglyphs'
+   *     elements in there.  Currently internal to
+   *     FreeType.
+   *
+   *   control_data ::
+   *     Certain font drivers can also return the
+   *     control data for a given glyph image (e.g.
+   *     TrueType bytecode, Type~1 charstrings, etc.).
+   *     This field is a pointer to such data; it is
+   *     currently internal to FreeType.
+   *
+   *   control_len ::
+   *     This is the length in bytes of the control
+   *     data.  Currently internal to FreeType.
+   *
+   *   other ::
+   *     Reserved.
+   *
+   *   lsb_delta ::
+   *     The difference between hinted and unhinted
+   *     left side bearing while auto-hinting is
+   *     active.  Zero otherwise.
+   *
+   *   rsb_delta ::
+   *     The difference between hinted and unhinted
+   *     right side bearing while auto-hinting is
+   *     active.  Zero otherwise.
+   *
+   * @note:
+   *   If @FT_Load_Glyph is called with default flags (see
+   *   @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in
+   *   its native format (e.g., an outline glyph for TrueType and Type~1
+   *   formats).  [Since 2.9] The prospective bitmap metrics are
+   *   calculated according to @FT_LOAD_TARGET_XXX and other flags even
+   *   for the outline glyph, even if @FT_LOAD_RENDER is not set.
+   *
+   *   This image can later be converted into a bitmap by calling
+   *   @FT_Render_Glyph.  This function searches the current renderer for
+   *   the native image's format, then invokes it.
+   *
+   *   The renderer is in charge of transforming the native image through
+   *   the slot's face transformation fields, then converting it into a
+   *   bitmap that is returned in `slot->bitmap'.
+   *
+   *   Note that `slot->bitmap_left' and `slot->bitmap_top' are also used
+   *   to specify the position of the bitmap relative to the current pen
+   *   position (e.g., coordinates (0,0) on the baseline).  Of course,
+   *   `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP.
+   *
+   *   Here is a small pseudo code fragment that shows how to use
+   *   `lsb_delta' and `rsb_delta' to do fractional positioning of
+   *   glyphs:
+   *
+   *   {
+   *     FT_GlyphSlot  slot     = face->glyph;
+   *     FT_Pos        origin_x = 0;
+   *
+   *
+   *     for all glyphs do
+   *       <load glyph with `FT_Load_Glyph'>
+   *
+   *       FT_Outline_Translate( slot->outline, origin_x & 63, 0 );
+   *
+   *       <save glyph image, or render glyph, or ...>
+   *
+   *       <compute kern between current and next glyph
+   *        and add it to `origin_x'>
+   *
+   *       origin_x += slot->advance.x;
+   *       origin_x += slot->rsb_delta - slot->lsb_delta;
+   *     endfor
+   *   }
+   *
+   *   Here is another small pseudo code fragment that shows how to use
+   *   `lsb_delta' and `rsb_delta' to improve integer positioning of
+   *   glyphs:
+   *
+   *   {
+   *     FT_GlyphSlot  slot           = face->glyph;
+   *     FT_Pos        origin_x       = 0;
+   *     FT_Pos        prev_rsb_delta = 0;
+   *
+   *
+   *     for all glyphs do
+   *       <compute kern between current and previous glyph
+   *        and add it to `origin_x'>
+   *
+   *       <load glyph with `FT_Load_Glyph'>
+   *
+   *       if ( prev_rsb_delta - slot->lsb_delta >  32 )
+   *         origin_x -= 64;
+   *       else if ( prev_rsb_delta - slot->lsb_delta < -31 )
+   *         origin_x += 64;
+   *
+   *       prev_rsb_delta = slot->rsb_delta;
+   *
+   *       <save glyph image, or render glyph, or ...>
+   *
+   *       origin_x += slot->advance.x;
+   *     endfor
+   *   }
+   *
+   *   If you use strong auto-hinting, you *must* apply these delta
+   *   values!  Otherwise you will experience far too large inter-glyph
+   *   spacing at small rendering sizes in most cases.  Note that it
+   *   doesn't harm to use the above code for other hinting modes also,
+   *   since the delta values are zero then.
+   */
   typedef struct  FT_GlyphSlotRec_
   {
     FT_Library        library;
     FT_Face           face;
     FT_GlyphSlot      next;
-    FT_UInt           reserved;       /* retained for binary compatibility */
+    FT_UInt           glyph_index; /* new in 2.10; was reserved previously */
     FT_Generic        generic;
 
     FT_Glyph_Metrics  metrics;
@@ -1951,86 +2013,93 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Init_FreeType                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a new FreeType library object.  The set of modules      */
-  /*    that are registered by this function is determined at build time.  */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    alibrary :: A handle to a new library object.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    In case you want to provide your own memory allocating routines,   */
-  /*    use @FT_New_Library instead, followed by a call to                 */
-  /*    @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module)   */
-  /*    and @FT_Set_Default_Properties.                                    */
-  /*                                                                       */
-  /*    See the documentation of @FT_Library and @FT_Face for              */
-  /*    multi-threading issues.                                            */
-  /*                                                                       */
-  /*    If you need reference-counting (cf. @FT_Reference_Library), use    */
-  /*    @FT_New_Library and @FT_Done_Library.                              */
-  /*                                                                       */
-  /*    If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is   */
-  /*    set, this function reads the `FREETYPE_PROPERTIES' environment     */
-  /*    variable to control driver properties.  See section @properties    */
-  /*    for more.                                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Init_FreeType
+   *
+   * @description:
+   *   Initialize a new FreeType library object.  The set of modules
+   *   that are registered by this function is determined at build time.
+   *
+   * @output:
+   *   alibrary ::
+   *     A handle to a new library object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   In case you want to provide your own memory allocating routines,
+   *   use @FT_New_Library instead, followed by a call to
+   *   @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module)
+   *   and @FT_Set_Default_Properties.
+   *
+   *   See the documentation of @FT_Library and @FT_Face for
+   *   multi-threading issues.
+   *
+   *   If you need reference-counting (cf. @FT_Reference_Library), use
+   *   @FT_New_Library and @FT_Done_Library.
+   *
+   *   If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is
+   *   set, this function reads the `FREETYPE_PROPERTIES' environment
+   *   variable to control driver properties.  See section @properties
+   *   for more.
+   */
   FT_EXPORT( FT_Error )
   FT_Init_FreeType( FT_Library  *alibrary );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_FreeType                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy a given FreeType library object and all of its children,   */
-  /*    including resources, drivers, faces, sizes, etc.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to the target library object.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_FreeType
+   *
+   * @description:
+   *   Destroy a given FreeType library object and all of its children,
+   *   including resources, drivers, faces, sizes, etc.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the target library object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Done_FreeType( FT_Library  library );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_OPEN_XXX                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit field constants used within the `flags' field of the */
-  /*    @FT_Open_Args structure.                                           */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_OPEN_MEMORY   :: This is a memory-based stream.                 */
-  /*                                                                       */
-  /*    FT_OPEN_STREAM   :: Copy the stream from the `stream' field.       */
-  /*                                                                       */
-  /*    FT_OPEN_PATHNAME :: Create a new input stream from a C~path        */
-  /*                        name.                                          */
-  /*                                                                       */
-  /*    FT_OPEN_DRIVER   :: Use the `driver' field.                        */
-  /*                                                                       */
-  /*    FT_OPEN_PARAMS   :: Use the `num_params' and `params' fields.      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME'     */
-  /*    flags are mutually exclusive.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_OPEN_XXX
+   *
+   * @description:
+   *   A list of bit field constants used within the `flags' field of the
+   *   @FT_Open_Args structure.
+   *
+   * @values:
+   *   FT_OPEN_MEMORY ::
+   *     This is a memory-based stream.
+   *
+   *   FT_OPEN_STREAM ::
+   *     Copy the stream from the `stream' field.
+   *
+   *   FT_OPEN_PATHNAME ::
+   *     Create a new input stream from a C~path
+   *     name.
+   *
+   *   FT_OPEN_DRIVER ::
+   *     Use the `driver' field.
+   *
+   *   FT_OPEN_PARAMS ::
+   *     Use the `num_params' and `params' fields.
+   *
+   * @note:
+   *   The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME'
+   *   flags are mutually exclusive.
+   */
 #define FT_OPEN_MEMORY    0x1
 #define FT_OPEN_STREAM    0x2
 #define FT_OPEN_PATHNAME  0x4
@@ -2047,24 +2116,26 @@
 #define ft_open_params    FT_OPEN_PARAMS
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Parameter                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple structure to pass more or less generic parameters to      */
-  /*    @FT_Open_Face and @FT_Face_Properties.                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    tag  :: A four-byte identification tag.                            */
-  /*                                                                       */
-  /*    data :: A pointer to the parameter data.                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The ID and function of parameters are driver-specific.  See the    */
-  /*    various FT_PARAM_TAG_XXX flags for more information.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Parameter
+   *
+   * @description:
+   *   A simple structure to pass more or less generic parameters to
+   *   @FT_Open_Face and @FT_Face_Properties.
+   *
+   * @fields:
+   *   tag ::
+   *     A four-byte identification tag.
+   *
+   *   data ::
+   *     A pointer to the parameter data.
+   *
+   * @note:
+   *   The ID and function of parameters are driver-specific.  See
+   *   section @parameter_tags for more information.
+   */
   typedef struct  FT_Parameter_
   {
     FT_ULong    tag;
@@ -2073,65 +2144,73 @@
   } FT_Parameter;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Open_Args                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to indicate how to open a new font file or stream.  A  */
-  /*    pointer to such a structure can be used as a parameter for the     */
-  /*    functions @FT_Open_Face and @FT_Attach_Stream.                     */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    flags       :: A set of bit flags indicating how to use the        */
-  /*                   structure.                                          */
-  /*                                                                       */
-  /*    memory_base :: The first byte of the file in memory.               */
-  /*                                                                       */
-  /*    memory_size :: The size in bytes of the file in memory.            */
-  /*                                                                       */
-  /*    pathname    :: A pointer to an 8-bit file pathname.                */
-  /*                                                                       */
-  /*    stream      :: A handle to a source stream object.                 */
-  /*                                                                       */
-  /*    driver      :: This field is exclusively used by @FT_Open_Face;    */
-  /*                   it simply specifies the font driver to use for      */
-  /*                   opening the face.  If set to NULL, FreeType tries   */
-  /*                   to load the face with each one of the drivers in    */
-  /*                   its list.                                           */
-  /*                                                                       */
-  /*    num_params  :: The number of extra parameters.                     */
-  /*                                                                       */
-  /*    params      :: Extra parameters passed to the font driver when     */
-  /*                   opening a new face.                                 */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The stream type is determined by the contents of `flags' that      */
-  /*    are tested in the following order by @FT_Open_Face:                */
-  /*                                                                       */
-  /*    If the @FT_OPEN_MEMORY bit is set, assume that this is a           */
-  /*    memory file of `memory_size' bytes, located at `memory_address'.   */
-  /*    The data are not copied, and the client is responsible for         */
-  /*    releasing and destroying them _after_ the corresponding call to    */
-  /*    @FT_Done_Face.                                                     */
-  /*                                                                       */
-  /*    Otherwise, if the @FT_OPEN_STREAM bit is set, assume that a        */
-  /*    custom input stream `stream' is used.                              */
-  /*                                                                       */
-  /*    Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this   */
-  /*    is a normal file and use `pathname' to open it.                    */
-  /*                                                                       */
-  /*    If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to     */
-  /*    open the file with the driver whose handler is in `driver'.        */
-  /*                                                                       */
-  /*    If the @FT_OPEN_PARAMS bit is set, the parameters given by         */
-  /*    `num_params' and `params' is used.  They are ignored otherwise.    */
-  /*                                                                       */
-  /*    Ideally, both the `pathname' and `params' fields should be tagged  */
-  /*    as `const'; this is missing for API backward compatibility.  In    */
-  /*    other words, applications should treat them as read-only.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Open_Args
+   *
+   * @description:
+   *   A structure to indicate how to open a new font file or stream.  A
+   *   pointer to such a structure can be used as a parameter for the
+   *   functions @FT_Open_Face and @FT_Attach_Stream.
+   *
+   * @fields:
+   *   flags ::
+   *     A set of bit flags indicating how to use the
+   *     structure.
+   *
+   *   memory_base ::
+   *     The first byte of the file in memory.
+   *
+   *   memory_size ::
+   *     The size in bytes of the file in memory.
+   *
+   *   pathname ::
+   *     A pointer to an 8-bit file pathname.
+   *
+   *   stream ::
+   *     A handle to a source stream object.
+   *
+   *   driver ::
+   *     This field is exclusively used by @FT_Open_Face;
+   *     it simply specifies the font driver to use for
+   *     opening the face.  If set to NULL, FreeType tries
+   *     to load the face with each one of the drivers in
+   *     its list.
+   *
+   *   num_params ::
+   *     The number of extra parameters.
+   *
+   *   params ::
+   *     Extra parameters passed to the font driver when
+   *     opening a new face.
+   *
+   * @note:
+   *   The stream type is determined by the contents of `flags' that
+   *    are tested in the following order by @FT_Open_Face:
+   *
+   *   If the @FT_OPEN_MEMORY bit is set, assume that this is a
+   *   memory file of `memory_size' bytes, located at `memory_address'.
+   *   The data are not copied, and the client is responsible for
+   *   releasing and destroying them _after_ the corresponding call to
+   *   @FT_Done_Face.
+   *
+   *   Otherwise, if the @FT_OPEN_STREAM bit is set, assume that a
+   *   custom input stream `stream' is used.
+   *
+   *   Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this
+   *   is a normal file and use `pathname' to open it.
+   *
+   *   If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to
+   *   open the file with the driver whose handler is in `driver'.
+   *
+   *   If the @FT_OPEN_PARAMS bit is set, the parameters given by
+   *   `num_params' and `params' is used.  They are ignored otherwise.
+   *
+   *   Ideally, both the `pathname' and `params' fields should be tagged
+   *   as `const'; this is missing for API backward compatibility.  In
+   *   other words, applications should treat them as read-only.
+   */
   typedef struct  FT_Open_Args_
   {
     FT_UInt         flags;
@@ -2146,34 +2225,38 @@
   } FT_Open_Args;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Open_Face to open a font by its pathname.                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    pathname   :: A path to the font file.                             */
-  /*                                                                       */
-  /*    face_index :: See @FT_Open_Face for a detailed description of this */
-  /*                  parameter.                                           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.  If `face_index' is   */
-  /*                  greater than or equal to zero, it must be non-NULL.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Use @FT_Done_Face to destroy the created @FT_Face object (along    */
-  /*    with its slot and sizes).                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Face
+   *
+   * @description:
+   *   Call @FT_Open_Face to open a font by its pathname.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   pathname ::
+   *     A path to the font file.
+   *
+   *   face_index ::
+   *     See @FT_Open_Face for a detailed description of this
+   *     parameter.
+   *
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.  If `face_index' is
+   *     greater than or equal to zero, it must be non-NULL.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Use @FT_Done_Face to destroy the created @FT_Face object (along
+   *   with its slot and sizes).
+   */
   FT_EXPORT( FT_Error )
   FT_New_Face( FT_Library   library,
                const char*  filepathname,
@@ -2181,36 +2264,41 @@
                FT_Face     *aface );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Memory_Face                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Open_Face to open a font that has been loaded into        */
-  /*    memory.                                                            */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    file_base  :: A pointer to the beginning of the font data.         */
-  /*                                                                       */
-  /*    file_size  :: The size of the memory chunk used by the font data.  */
-  /*                                                                       */
-  /*    face_index :: See @FT_Open_Face for a detailed description of this */
-  /*                  parameter.                                           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.  If `face_index' is   */
-  /*                  greater than or equal to zero, it must be non-NULL.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You must not deallocate the memory before calling @FT_Done_Face.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Memory_Face
+   *
+   * @description:
+   *   Call @FT_Open_Face to open a font that has been loaded into
+   *   memory.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   file_base ::
+   *     A pointer to the beginning of the font data.
+   *
+   *   file_size ::
+   *     The size of the memory chunk used by the font data.
+   *
+   *   face_index ::
+   *     See @FT_Open_Face for a detailed description of this
+   *     parameter.
+   *
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.  If `face_index' is
+   *     greater than or equal to zero, it must be non-NULL.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   You must not deallocate the memory before calling @FT_Done_Face.
+   */
   FT_EXPORT( FT_Error )
   FT_New_Memory_Face( FT_Library      library,
                       const FT_Byte*  file_base,
@@ -2219,147 +2307,152 @@
                       FT_Face        *aface );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Open_Face                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a face object from a given resource described by            */
-  /*    @FT_Open_Args.                                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    args       :: A pointer to an `FT_Open_Args' structure that must   */
-  /*                  be filled by the caller.                             */
-  /*                                                                       */
-  /*    face_index :: This field holds two different values.  Bits 0-15    */
-  /*                  are the index of the face in the font file (starting */
-  /*                  with value~0).  Set it to~0 if there is only one     */
-  /*                  face in the font file.                               */
-  /*                                                                       */
-  /*                  [Since 2.6.1] Bits 16-30 are relevant to GX and      */
-  /*                  OpenType variation fonts only, specifying the named  */
-  /*                  instance index for the current face index (starting  */
-  /*                  with value~1; value~0 makes FreeType ignore named    */
-  /*                  instances).  For non-variation fonts, bits 16-30 are */
-  /*                  ignored.  Assuming that you want to access the third */
-  /*                  named instance in face~4, `face_index' should be set */
-  /*                  to 0x00030004.  If you want to access face~4 without */
-  /*                  variation handling, simply set `face_index' to       */
-  /*                  value~4.                                             */
-  /*                                                                       */
-  /*                  `FT_Open_Face' and its siblings can be used to       */
-  /*                  quickly check whether the font format of a given     */
-  /*                  font resource is supported by FreeType.  In general, */
-  /*                  if the `face_index' argument is negative, the        */
-  /*                  function's return value is~0 if the font format is   */
-  /*                  recognized, or non-zero otherwise.  The function     */
-  /*                  allocates a more or less empty face handle in        */
-  /*                  `*aface' (if `aface' isn't NULL); the only two       */
-  /*                  useful fields in this special case are               */
-  /*                  `face->num_faces' and `face->style_flags'.  For any  */
-  /*                  negative value of `face_index', `face->num_faces'    */
-  /*                  gives the number of faces within the font file.  For */
-  /*                  the negative value `-(N+1)' (with `N' a non-negative */
-  /*                  16-bit value), bits 16-30 in `face->style_flags'     */
-  /*                  give the number of named instances in face `N' if we */
-  /*                  have a variation font (or zero otherwise).  After    */
-  /*                  examination, the returned @FT_Face structure should  */
-  /*                  be deallocated with a call to @FT_Done_Face.         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.  If `face_index' is   */
-  /*                  greater than or equal to zero, it must be non-NULL.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Unlike FreeType 1.x, this function automatically creates a glyph   */
-  /*    slot for the face object that can be accessed directly through     */
-  /*    `face->glyph'.                                                     */
-  /*                                                                       */
-  /*    Each new face object created with this function also owns a        */
-  /*    default @FT_Size object, accessible as `face->size'.               */
-  /*                                                                       */
-  /*    One @FT_Library instance can have multiple face objects, this is,  */
-  /*    @FT_Open_Face and its siblings can be called multiple times using  */
-  /*    the same `library' argument.                                       */
-  /*                                                                       */
-  /*    See the discussion of reference counters in the description of     */
-  /*    @FT_Reference_Face.                                                */
-  /*                                                                       */
-  /*    To loop over all faces, use code similar to the following snippet  */
-  /*    (omitting the error handling).                                     */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      ...                                                              */
-  /*      FT_Face  face;                                                   */
-  /*      FT_Long  i, num_faces;                                           */
-  /*                                                                       */
-  /*                                                                       */
-  /*      error = FT_Open_Face( library, args, -1, &face );                */
-  /*      if ( error ) { ... }                                             */
-  /*                                                                       */
-  /*      num_faces = face->num_faces;                                     */
-  /*      FT_Done_Face( face );                                            */
-  /*                                                                       */
-  /*      for ( i = 0; i < num_faces; i++ )                                */
-  /*      {                                                                */
-  /*        ...                                                            */
-  /*        error = FT_Open_Face( library, args, i, &face );               */
-  /*        ...                                                            */
-  /*        FT_Done_Face( face );                                          */
-  /*        ...                                                            */
-  /*      }                                                                */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    To loop over all valid values for `face_index', use something      */
-  /*    similar to the following snippet, again without error handling.    */
-  /*    The code accesses all faces immediately (thus only a single call   */
-  /*    of `FT_Open_Face' within the do-loop), with and without named      */
-  /*    instances.                                                         */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      ...                                                              */
-  /*      FT_Face  face;                                                   */
-  /*                                                                       */
-  /*      FT_Long  num_faces     = 0;                                      */
-  /*      FT_Long  num_instances = 0;                                      */
-  /*                                                                       */
-  /*      FT_Long  face_idx     = 0;                                       */
-  /*      FT_Long  instance_idx = 0;                                       */
-  /*                                                                       */
-  /*                                                                       */
-  /*      do                                                               */
-  /*      {                                                                */
-  /*        FT_Long  id = ( instance_idx << 16 ) + face_idx;               */
-  /*                                                                       */
-  /*                                                                       */
-  /*        error = FT_Open_Face( library, args, id, &face );              */
-  /*        if ( error ) { ... }                                           */
-  /*                                                                       */
-  /*        num_faces     = face->num_faces;                               */
-  /*        num_instances = face->style_flags >> 16;                       */
-  /*                                                                       */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        FT_Done_Face( face );                                          */
-  /*                                                                       */
-  /*        if ( instance_idx < num_instances )                            */
-  /*          instance_idx++;                                              */
-  /*        else                                                           */
-  /*        {                                                              */
-  /*          face_idx++;                                                  */
-  /*          instance_idx = 0;                                            */
-  /*        }                                                              */
-  /*                                                                       */
-  /*      } while ( face_idx < num_faces )                                 */
-  /*    }                                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Open_Face
+   *
+   * @description:
+   *   Create a face object from a given resource described by
+   *   @FT_Open_Args.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   args ::
+   *     A pointer to an `FT_Open_Args' structure that must
+   *     be filled by the caller.
+   *
+   *   face_index ::
+   *     This field holds two different values.  Bits 0-15
+   *     are the index of the face in the font file (starting
+   *     with value~0).  Set it to~0 if there is only one
+   *     face in the font file.
+   *
+   *     [Since 2.6.1] Bits 16-30 are relevant to GX and
+   *     OpenType variation fonts only, specifying the named
+   *     instance index for the current face index (starting
+   *     with value~1; value~0 makes FreeType ignore named
+   *     instances).  For non-variation fonts, bits 16-30 are
+   *     ignored.  Assuming that you want to access the third
+   *     named instance in face~4, `face_index' should be set
+   *     to 0x00030004.  If you want to access face~4 without
+   *     variation handling, simply set `face_index' to
+   *     value~4.
+   *
+   *     `FT_Open_Face' and its siblings can be used to
+   *     quickly check whether the font format of a given
+   *     font resource is supported by FreeType.  In general,
+   *     if the `face_index' argument is negative, the
+   *     function's return value is~0 if the font format is
+   *     recognized, or non-zero otherwise.  The function
+   *     allocates a more or less empty face handle in
+   *     `*aface' (if `aface' isn't NULL); the only two
+   *     useful fields in this special case are
+   *     `face->num_faces' and `face->style_flags'.  For any
+   *     negative value of `face_index', `face->num_faces'
+   *     gives the number of faces within the font file.  For
+   *     the negative value `-(N+1)' (with `N' a non-negative
+   *     16-bit value), bits 16-30 in `face->style_flags'
+   *     give the number of named instances in face `N' if we
+   *     have a variation font (or zero otherwise).  After
+   *     examination, the returned @FT_Face structure should
+   *     be deallocated with a call to @FT_Done_Face.
+   *
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.  If `face_index' is
+   *     greater than or equal to zero, it must be non-NULL.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Unlike FreeType 1.x, this function automatically creates a glyph
+   *   slot for the face object that can be accessed directly through
+   *   `face->glyph'.
+   *
+   *   Each new face object created with this function also owns a
+   *   default @FT_Size object, accessible as `face->size'.
+   *
+   *   One @FT_Library instance can have multiple face objects, this is,
+   *   @FT_Open_Face and its siblings can be called multiple times using
+   *   the same `library' argument.
+   *
+   *   See the discussion of reference counters in the description of
+   *   @FT_Reference_Face.
+   *
+   * @example:
+   *   To loop over all faces, use code similar to the following snippet
+   *   (omitting the error handling).
+   *
+   *   {
+   *     ...
+   *     FT_Face  face;
+   *     FT_Long  i, num_faces;
+   *
+   *
+   *     error = FT_Open_Face( library, args, -1, &face );
+   *     if ( error ) { ... }
+   *
+   *     num_faces = face->num_faces;
+   *     FT_Done_Face( face );
+   *
+   *     for ( i = 0; i < num_faces; i++ )
+   *     {
+   *       ...
+   *       error = FT_Open_Face( library, args, i, &face );
+   *       ...
+   *       FT_Done_Face( face );
+   *       ...
+   *     }
+   *   }
+   *
+   *   To loop over all valid values for `face_index', use something
+   *   similar to the following snippet, again without error handling.
+   *   The code accesses all faces immediately (thus only a single call
+   *   of `FT_Open_Face' within the do-loop), with and without named
+   *   instances.
+   *
+   *   {
+   *     ...
+   *     FT_Face  face;
+   *
+   *     FT_Long  num_faces     = 0;
+   *     FT_Long  num_instances = 0;
+   *
+   *     FT_Long  face_idx     = 0;
+   *     FT_Long  instance_idx = 0;
+   *
+   *
+   *     do
+   *     {
+   *       FT_Long  id = ( instance_idx << 16 ) + face_idx;
+   *
+   *
+   *       error = FT_Open_Face( library, args, id, &face );
+   *       if ( error ) { ... }
+   *
+   *       num_faces     = face->num_faces;
+   *       num_instances = face->style_flags >> 16;
+   *
+   *       ...
+   *
+   *       FT_Done_Face( face );
+   *
+   *       if ( instance_idx < num_instances )
+   *         instance_idx++;
+   *       else
+   *       {
+   *         face_idx++;
+   *         instance_idx = 0;
+   *       }
+   *
+   *     } while ( face_idx < num_faces )
+   *   }
+   */
   FT_EXPORT( FT_Error )
   FT_Open_Face( FT_Library           library,
                 const FT_Open_Args*  args,
@@ -2367,204 +2460,212 @@
                 FT_Face             *aface );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Attach_File                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Attach_Stream to attach a file.                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face         :: The target face object.                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    filepathname :: The pathname.                                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Attach_File
+   *
+   * @description:
+   *   Call @FT_Attach_Stream to attach a file.
+   *
+   * @inout:
+   *   face ::
+   *     The target face object.
+   *
+   * @input:
+   *   filepathname ::
+   *     The pathname.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Attach_File( FT_Face      face,
                   const char*  filepathname );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Attach_Stream                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    `Attach' data to a face object.  Normally, this is used to read    */
-  /*    additional information for the face object.  For example, you can  */
-  /*    attach an AFM file that comes with a Type~1 font to get the        */
-  /*    kerning values and other metrics.                                  */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The target face object.                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    parameters :: A pointer to @FT_Open_Args that must be filled by    */
-  /*                  the caller.                                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The meaning of the `attach' (i.e., what really happens when the    */
-  /*    new file is read) is not fixed by FreeType itself.  It really      */
-  /*    depends on the font format (and thus the font driver).             */
-  /*                                                                       */
-  /*    Client applications are expected to know what they are doing       */
-  /*    when invoking this function.  Most drivers simply do not implement */
-  /*    file or stream attachments.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Attach_Stream
+   *
+   * @description:
+   *   `Attach' data to a face object.  Normally, this is used to read
+   *   additional information for the face object.  For example, you can
+   *   attach an AFM file that comes with a Type~1 font to get the
+   *   kerning values and other metrics.
+   *
+   * @inout:
+   *   face ::
+   *     The target face object.
+   *
+   * @input:
+   *   parameters ::
+   *     A pointer to @FT_Open_Args that must be filled by
+   *     the caller.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The meaning of the `attach' (i.e., what really happens when the
+   *   new file is read) is not fixed by FreeType itself.  It really
+   *   depends on the font format (and thus the font driver).
+   *
+   *   Client applications are expected to know what they are doing
+   *   when invoking this function.  Most drivers simply do not implement
+   *   file or stream attachments.
+   */
   FT_EXPORT( FT_Error )
   FT_Attach_Stream( FT_Face        face,
                     FT_Open_Args*  parameters );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Reference_Face                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A counter gets initialized to~1 at the time an @FT_Face structure  */
-  /*    is created.  This function increments the counter.  @FT_Done_Face  */
-  /*    then only destroys a face if the counter is~1, otherwise it simply */
-  /*    decrements the counter.                                            */
-  /*                                                                       */
-  /*    This function helps in managing life-cycles of structures that     */
-  /*    reference @FT_Face objects.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to a target face object.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.2                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Reference_Face
+   *
+   * @description:
+   *   A counter gets initialized to~1 at the time an @FT_Face structure
+   *   is created.  This function increments the counter.  @FT_Done_Face
+   *   then only destroys a face if the counter is~1, otherwise it simply
+   *   decrements the counter.
+   *
+   *   This function helps in managing life-cycles of structures that
+   *   reference @FT_Face objects.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.4.2
+   */
   FT_EXPORT( FT_Error )
   FT_Reference_Face( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Face                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discard a given face object, as well as all of its child slots and */
-  /*    sizes.                                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to a target face object.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See the discussion of reference counters in the description of     */
-  /*    @FT_Reference_Face.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Face
+   *
+   * @description:
+   *   Discard a given face object, as well as all of its child slots and
+   *   sizes.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   See the discussion of reference counters in the description of
+   *   @FT_Reference_Face.
+   */
   FT_EXPORT( FT_Error )
   FT_Done_Face( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Select_Size                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Select a bitmap strike.  To be more precise, this function sets    */
-  /*    the scaling factors of the active @FT_Size object in a face so     */
-  /*    that bitmaps from this particular strike are taken by              */
-  /*    @FT_Load_Glyph and friends.                                        */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face         :: A handle to a target face object.                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    strike_index :: The index of the bitmap strike in the              */
-  /*                    `available_sizes' field of @FT_FaceRec structure.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    For bitmaps embedded in outline fonts it is common that only a     */
-  /*    subset of the available glyphs at a given ppem value is available. */
-  /*    FreeType silently uses outlines if there is no bitmap for a given  */
-  /*    glyph index.                                                       */
-  /*                                                                       */
-  /*    For GX and OpenType variation fonts, a bitmap strike makes sense   */
-  /*    only if the default instance is active (this is, no glyph          */
-  /*    variation takes place); otherwise, FreeType simply ignores bitmap  */
-  /*    strikes.  The same is true for all named instances that are        */
-  /*    different from the default instance.                               */
-  /*                                                                       */
-  /*    Don't use this function if you are using the FreeType cache API.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Select_Size
+   *
+   * @description:
+   *   Select a bitmap strike.  To be more precise, this function sets
+   *   the scaling factors of the active @FT_Size object in a face so
+   *   that bitmaps from this particular strike are taken by
+   *   @FT_Load_Glyph and friends.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @input:
+   *   strike_index ::
+   *     The index of the bitmap strike in the
+   *     `available_sizes' field of @FT_FaceRec structure.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   For bitmaps embedded in outline fonts it is common that only a
+   *   subset of the available glyphs at a given ppem value is available.
+   *   FreeType silently uses outlines if there is no bitmap for a given
+   *   glyph index.
+   *
+   *   For GX and OpenType variation fonts, a bitmap strike makes sense
+   *   only if the default instance is active (this is, no glyph
+   *   variation takes place); otherwise, FreeType simply ignores bitmap
+   *   strikes.  The same is true for all named instances that are
+   *   different from the default instance.
+   *
+   *   Don't use this function if you are using the FreeType cache API.
+   */
   FT_EXPORT( FT_Error )
   FT_Select_Size( FT_Face  face,
                   FT_Int   strike_index );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Size_Request_Type                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration type that lists the supported size request types,   */
-  /*    i.e., what input size (in font units) maps to the requested output */
-  /*    size (in pixels, as computed from the arguments of                 */
-  /*    @FT_Size_Request).                                                 */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_SIZE_REQUEST_TYPE_NOMINAL ::                                    */
-  /*      The nominal size.  The `units_per_EM' field of @FT_FaceRec is    */
-  /*      used to determine both scaling values.                           */
-  /*                                                                       */
-  /*      This is the standard scaling found in most applications.  In     */
-  /*      particular, use this size request type for TrueType fonts if     */
-  /*      they provide optical scaling or something similar.  Note,        */
-  /*      however, that `units_per_EM' is a rather abstract value which    */
-  /*      bears no relation to the actual size of the glyphs in a font.    */
-  /*                                                                       */
-  /*    FT_SIZE_REQUEST_TYPE_REAL_DIM ::                                   */
-  /*      The real dimension.  The sum of the `ascender' and (minus of)    */
-  /*      the `descender' fields of @FT_FaceRec is used to determine both  */
-  /*      scaling values.                                                  */
-  /*                                                                       */
-  /*    FT_SIZE_REQUEST_TYPE_BBOX ::                                       */
-  /*      The font bounding box.  The width and height of the `bbox' field */
-  /*      of @FT_FaceRec are used to determine the horizontal and vertical */
-  /*      scaling value, respectively.                                     */
-  /*                                                                       */
-  /*    FT_SIZE_REQUEST_TYPE_CELL ::                                       */
-  /*      The `max_advance_width' field of @FT_FaceRec is used to          */
-  /*      determine the horizontal scaling value; the vertical scaling     */
-  /*      value is determined the same way as                              */
-  /*      @FT_SIZE_REQUEST_TYPE_REAL_DIM does.  Finally, both scaling      */
-  /*      values are set to the smaller one.  This type is useful if you   */
-  /*      want to specify the font size for, say, a window of a given      */
-  /*      dimension and 80x24 cells.                                       */
-  /*                                                                       */
-  /*    FT_SIZE_REQUEST_TYPE_SCALES ::                                     */
-  /*      Specify the scaling values directly.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The above descriptions only apply to scalable formats.  For bitmap */
-  /*    formats, the behaviour is up to the driver.                        */
-  /*                                                                       */
-  /*    See the note section of @FT_Size_Metrics if you wonder how size    */
-  /*    requesting relates to scaling values.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Size_Request_Type
+   *
+   * @description:
+   *   An enumeration type that lists the supported size request types,
+   *   i.e., what input size (in font units) maps to the requested output
+   *   size (in pixels, as computed from the arguments of
+   *   @FT_Size_Request).
+   *
+   * @values:
+   *   FT_SIZE_REQUEST_TYPE_NOMINAL ::
+   *     The nominal size.  The `units_per_EM' field of @FT_FaceRec is
+   *     used to determine both scaling values.
+   *
+   *     This is the standard scaling found in most applications.  In
+   *     particular, use this size request type for TrueType fonts if
+   *     they provide optical scaling or something similar.  Note,
+   *     however, that `units_per_EM' is a rather abstract value which
+   *     bears no relation to the actual size of the glyphs in a font.
+   *
+   *   FT_SIZE_REQUEST_TYPE_REAL_DIM ::
+   *     The real dimension.  The sum of the `ascender' and (minus of)
+   *     the `descender' fields of @FT_FaceRec is used to determine both
+   *     scaling values.
+   *
+   *   FT_SIZE_REQUEST_TYPE_BBOX ::
+   *     The font bounding box.  The width and height of the `bbox' field
+   *     of @FT_FaceRec are used to determine the horizontal and vertical
+   *     scaling value, respectively.
+   *
+   *   FT_SIZE_REQUEST_TYPE_CELL ::
+   *     The `max_advance_width' field of @FT_FaceRec is used to
+   *     determine the horizontal scaling value; the vertical scaling
+   *     value is determined the same way as
+   *     @FT_SIZE_REQUEST_TYPE_REAL_DIM does.  Finally, both scaling
+   *     values are set to the smaller one.  This type is useful if you
+   *     want to specify the font size for, say, a window of a given
+   *     dimension and 80x24 cells.
+   *
+   *   FT_SIZE_REQUEST_TYPE_SCALES ::
+   *     Specify the scaling values directly.
+   *
+   * @note:
+   *   The above descriptions only apply to scalable formats.  For bitmap
+   *   formats, the behaviour is up to the driver.
+   *
+   *   See the note section of @FT_Size_Metrics if you wonder how size
+   *   requesting relates to scaling values.
+   */
   typedef enum  FT_Size_Request_Type_
   {
     FT_SIZE_REQUEST_TYPE_NOMINAL,
@@ -2578,42 +2679,47 @@
   } FT_Size_Request_Type;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Size_RequestRec                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a size request.                               */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    type           :: See @FT_Size_Request_Type.                       */
-  /*                                                                       */
-  /*    width          :: The desired width, given as a 26.6 fractional    */
-  /*                      point value (with 72pt = 1in).                   */
-  /*                                                                       */
-  /*    height         :: The desired height, given as a 26.6 fractional   */
-  /*                      point value (with 72pt = 1in).                   */
-  /*                                                                       */
-  /*    horiResolution :: The horizontal resolution (dpi, i.e., pixels per */
-  /*                      inch).  If set to zero, `width' is treated as a  */
-  /*                      26.6 fractional *pixel* value, which gets        */
-  /*                      internally rounded to an integer.                */
-  /*                                                                       */
-  /*    vertResolution :: The vertical resolution (dpi, i.e., pixels per   */
-  /*                      inch).  If set to zero, `height' is treated as a */
-  /*                      26.6 fractional *pixel* value, which gets        */
-  /*                      internally rounded to an integer.                */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If `width' is zero, the horizontal scaling value is set equal      */
-  /*    to the vertical scaling value, and vice versa.                     */
-  /*                                                                       */
-  /*    If `type' is FT_SIZE_REQUEST_TYPE_SCALES, `width' and `height' are */
-  /*    interpreted directly as 16.16 fractional scaling values, without   */
-  /*    any further modification, and both `horiResolution' and            */
-  /*    `vertResolution' are ignored.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Size_RequestRec
+   *
+   * @description:
+   *   A structure to model a size request.
+   *
+   * @fields:
+   *   type ::
+   *     See @FT_Size_Request_Type.
+   *
+   *   width ::
+   *     The desired width, given as a 26.6 fractional
+   *     point value (with 72pt = 1in).
+   *
+   *   height ::
+   *     The desired height, given as a 26.6 fractional
+   *     point value (with 72pt = 1in).
+   *
+   *   horiResolution ::
+   *     The horizontal resolution (dpi, i.e., pixels per
+   *     inch).  If set to zero, `width' is treated as a
+   *     26.6 fractional *pixel* value, which gets
+   *     internally rounded to an integer.
+   *
+   *   vertResolution ::
+   *     The vertical resolution (dpi, i.e., pixels per
+   *     inch).  If set to zero, `height' is treated as a
+   *     26.6 fractional *pixel* value, which gets
+   *     internally rounded to an integer.
+   *
+   * @note:
+   *   If `width' is zero, the horizontal scaling value is set equal
+   *   to the vertical scaling value, and vice versa.
+   *
+   *   If `type' is FT_SIZE_REQUEST_TYPE_SCALES, `width' and `height' are
+   *   interpreted directly as 16.16 fractional scaling values, without
+   *   any further modification, and both `horiResolution' and
+   *   `vertResolution' are ignored.
+   */
   typedef struct  FT_Size_RequestRec_
   {
     FT_Size_Request_Type  type;
@@ -2625,96 +2731,103 @@
   } FT_Size_RequestRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Size_Request                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a size request structure.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Size_Request
+   *
+   * @description:
+   *   A handle to a size request structure.
+   */
   typedef struct FT_Size_RequestRec_  *FT_Size_Request;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Request_Size                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Resize the scale of the active @FT_Size object in a face.          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: A handle to a target face object.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    req  :: A pointer to a @FT_Size_RequestRec.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Although drivers may select the bitmap strike matching the         */
-  /*    request, you should not rely on this if you intend to select a     */
-  /*    particular bitmap strike.  Use @FT_Select_Size instead in that     */
-  /*    case.                                                              */
-  /*                                                                       */
-  /*    The relation between the requested size and the resulting glyph    */
-  /*    size is dependent entirely on how the size is defined in the       */
-  /*    source face.  The font designer chooses the final size of each     */
-  /*    glyph relative to this size.  For more information refer to        */
-  /*    `https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'.    */
-  /*                                                                       */
-  /*    Contrary to @FT_Set_Char_Size, this function doesn't have special  */
-  /*    code to normalize zero-valued widths, heights, or resolutions      */
-  /*    (which lead to errors in most cases).                              */
-  /*                                                                       */
-  /*    Don't use this function if you are using the FreeType cache API.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Request_Size
+   *
+   * @description:
+   *   Resize the scale of the active @FT_Size object in a face.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @input:
+   *   req ::
+   *     A pointer to a @FT_Size_RequestRec.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Although drivers may select the bitmap strike matching the
+   *   request, you should not rely on this if you intend to select a
+   *   particular bitmap strike.  Use @FT_Select_Size instead in that
+   *   case.
+   *
+   *   The relation between the requested size and the resulting glyph
+   *   size is dependent entirely on how the size is defined in the
+   *   source face.  The font designer chooses the final size of each
+   *   glyph relative to this size.  For more information refer to
+   *   `https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'.
+   *
+   *   Contrary to @FT_Set_Char_Size, this function doesn't have special
+   *   code to normalize zero-valued widths, heights, or resolutions
+   *   (which lead to errors in most cases).
+   *
+   *   Don't use this function if you are using the FreeType cache API.
+   */
   FT_EXPORT( FT_Error )
   FT_Request_Size( FT_Face          face,
                    FT_Size_Request  req );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Char_Size                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Request_Size to request the nominal size (in points).     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face            :: A handle to a target face object.               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    char_width      :: The nominal width, in 26.6 fractional points.   */
-  /*                                                                       */
-  /*    char_height     :: The nominal height, in 26.6 fractional points.  */
-  /*                                                                       */
-  /*    horz_resolution :: The horizontal resolution in dpi.               */
-  /*                                                                       */
-  /*    vert_resolution :: The vertical resolution in dpi.                 */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    While this function allows fractional points as input values, the  */
-  /*    resulting ppem value for the given resolution is always rounded to */
-  /*    the nearest integer.                                               */
-  /*                                                                       */
-  /*    If either the character width or height is zero, it is set equal   */
-  /*    to the other value.                                                */
-  /*                                                                       */
-  /*    If either the horizontal or vertical resolution is zero, it is set */
-  /*    equal to the other value.                                          */
-  /*                                                                       */
-  /*    A character width or height smaller than 1pt is set to 1pt; if     */
-  /*    both resolution values are zero, they are set to 72dpi.            */
-  /*                                                                       */
-  /*    Don't use this function if you are using the FreeType cache API.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Char_Size
+   *
+   * @description:
+   *   Call @FT_Request_Size to request the nominal size (in points).
+   *
+   * @inout:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @input:
+   *   char_width ::
+   *     The nominal width, in 26.6 fractional points.
+   *
+   *   char_height ::
+   *     The nominal height, in 26.6 fractional points.
+   *
+   *   horz_resolution ::
+   *     The horizontal resolution in dpi.
+   *
+   *   vert_resolution ::
+   *     The vertical resolution in dpi.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   While this function allows fractional points as input values, the
+   *   resulting ppem value for the given resolution is always rounded to
+   *   the nearest integer.
+   *
+   *   If either the character width or height is zero, it is set equal
+   *   to the other value.
+   *
+   *   If either the horizontal or vertical resolution is zero, it is set
+   *   equal to the other value.
+   *
+   *   A character width or height smaller than 1pt is set to 1pt; if
+   *   both resolution values are zero, they are set to 72dpi.
+   *
+   *   Don't use this function if you are using the FreeType cache API.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Char_Size( FT_Face     face,
                     FT_F26Dot6  char_width,
@@ -2723,116 +2836,129 @@
                     FT_UInt     vert_resolution );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Pixel_Sizes                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Request_Size to request the nominal size (in pixels).     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face         :: A handle to the target face object.                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    pixel_width  :: The nominal width, in pixels.                      */
-  /*                                                                       */
-  /*    pixel_height :: The nominal height, in pixels.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You should not rely on the resulting glyphs matching or being      */
-  /*    constrained to this pixel size.  Refer to @FT_Request_Size to      */
-  /*    understand how requested sizes relate to actual sizes.             */
-  /*                                                                       */
-  /*    Don't use this function if you are using the FreeType cache API.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Pixel_Sizes
+   *
+   * @description:
+   *   Call @FT_Request_Size to request the nominal size (in pixels).
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   * @input:
+   *   pixel_width ::
+   *     The nominal width, in pixels.
+   *
+   *   pixel_height ::
+   *     The nominal height, in pixels.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   You should not rely on the resulting glyphs matching or being
+   *   constrained to this pixel size.  Refer to @FT_Request_Size to
+   *   understand how requested sizes relate to actual sizes.
+   *
+   *   Don't use this function if you are using the FreeType cache API.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Pixel_Sizes( FT_Face  face,
                       FT_UInt  pixel_width,
                       FT_UInt  pixel_height );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Load_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load a glyph into the glyph slot of a face object.                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face        :: A handle to the target face object where the glyph  */
-  /*                   is loaded.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    glyph_index :: The index of the glyph in the font file.  For       */
-  /*                   CID-keyed fonts (either in PS or in CFF format)     */
-  /*                   this argument specifies the CID value.              */
-  /*                                                                       */
-  /*    load_flags  :: A flag indicating what to load for this glyph.  The */
-  /*                   @FT_LOAD_XXX constants can be used to control the   */
-  /*                   glyph loading process (e.g., whether the outline    */
-  /*                   should be scaled, whether to load bitmaps or not,   */
-  /*                   whether to hint the outline, etc).                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The loaded glyph may be transformed.  See @FT_Set_Transform for    */
-  /*    the details.                                                       */
-  /*                                                                       */
-  /*    For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is        */
-  /*    returned for invalid CID values (this is, for CID values that      */
-  /*    don't have a corresponding glyph in the font).  See the discussion */
-  /*    of the @FT_FACE_FLAG_CID_KEYED flag for more details.              */
-  /*                                                                       */
-  /*    If you receive `FT_Err_Glyph_Too_Big', try getting the glyph       */
-  /*    outline at EM size, then scale it manually and fill it as a        */
-  /*    graphics operation.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Load_Glyph
+   *
+   * @description:
+   *   Load a glyph into the glyph slot of a face object.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the target face object where the glyph
+   *     is loaded.
+   *
+   * @input:
+   *   glyph_index ::
+   *     The index of the glyph in the font file.  For
+   *     CID-keyed fonts (either in PS or in CFF format)
+   *     this argument specifies the CID value.
+   *
+   *   load_flags ::
+   *     A flag indicating what to load for this glyph.  The
+   *     @FT_LOAD_XXX constants can be used to control the
+   *     glyph loading process (e.g., whether the outline
+   *     should be scaled, whether to load bitmaps or not,
+   *     whether to hint the outline, etc).
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The loaded glyph may be transformed.  See @FT_Set_Transform for
+   *   the details.
+   *
+   *   For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is
+   *   returned for invalid CID values (this is, for CID values that
+   *   don't have a corresponding glyph in the font).  See the discussion
+   *   of the @FT_FACE_FLAG_CID_KEYED flag for more details.
+   *
+   *   If you receive `FT_Err_Glyph_Too_Big', try getting the glyph
+   *   outline at EM size, then scale it manually and fill it as a
+   *   graphics operation.
+   */
   FT_EXPORT( FT_Error )
   FT_Load_Glyph( FT_Face   face,
                  FT_UInt   glyph_index,
                  FT_Int32  load_flags );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Load_Char                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load a glyph into the glyph slot of a face object, accessed by its */
-  /*    character code.                                                    */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face        :: A handle to a target face object where the glyph    */
-  /*                   is loaded.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    char_code   :: The glyph's character code, according to the        */
-  /*                   current charmap used in the face.                   */
-  /*                                                                       */
-  /*    load_flags  :: A flag indicating what to load for this glyph.  The */
-  /*                   @FT_LOAD_XXX constants can be used to control the   */
-  /*                   glyph loading process (e.g., whether the outline    */
-  /*                   should be scaled, whether to load bitmaps or not,   */
-  /*                   whether to hint the outline, etc).                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph.  */
-  /*                                                                       */
-  /*    Many fonts contain glyphs that can't be loaded by this function    */
-  /*    since its glyph indices are not listed in any of the font's        */
-  /*    charmaps.                                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Load_Char
+   *
+   * @description:
+   *   Load a glyph into the glyph slot of a face object, accessed by its
+   *   character code.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to a target face object where the glyph
+   *     is loaded.
+   *
+   * @input:
+   *   char_code ::
+   *     The glyph's character code, according to the
+   *     current charmap used in the face.
+   *
+   *   load_flags ::
+   *     A flag indicating what to load for this glyph.  The
+   *     @FT_LOAD_XXX constants can be used to control the
+   *     glyph loading process (e.g., whether the outline
+   *     should be scaled, whether to load bitmaps or not,
+   *     whether to hint the outline, etc).
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph.
+   *
+   *   Many fonts contain glyphs that can't be loaded by this function
+   *   since its glyph indices are not listed in any of the font's
+   *   charmaps.
+   *
+   *   If no active cmap is set up (i.e., `face->charmap' is zero), the
+   *   call to @FT_Get_Char_Index is omitted, and the function behaves
+   *   identically to @FT_Load_Glyph.
+   */
   FT_EXPORT( FT_Error )
   FT_Load_Char( FT_Face   face,
                 FT_ULong  char_code,
@@ -2854,15 +2980,15 @@
    *     operation.  In this case, the following happens:
    *
    *     1. FreeType looks for a bitmap for the glyph corresponding to the
-   *        face's current size.  If one is found, the function returns.
-   *        The bitmap data can be accessed from the glyph slot (see note
-   *        below).
+   *     face's current size.  If one is found, the function returns.
+   *     The bitmap data can be accessed from the glyph slot (see note
+   *     below).
    *
    *     2. If no embedded bitmap is searched for or found, FreeType looks
-   *        for a scalable outline.  If one is found, it is loaded from
-   *        the font file, scaled to device pixels, then `hinted' to the
-   *        pixel grid in order to optimize it.  The outline data can be
-   *        accessed from the glyph slot (see note below).
+   *     for a scalable outline.  If one is found, it is loaded from
+   *     the font file, scaled to device pixels, then `hinted' to the
+   *     pixel grid in order to optimize it.  The outline data can be
+   *     accessed from the glyph slot (see note below).
    *
    *     Note that by default the glyph loader doesn't render outlines into
    *     bitmaps.  The following flags are used to modify this default
@@ -2954,11 +3080,24 @@
    *     Disable the auto-hinter.  See also the note below.
    *
    *   FT_LOAD_COLOR ::
+   *     Load colored glyphs.  There are slight differences depending on the
+   *     font format.
+   *
    *     [Since 2.5] Load embedded color bitmap images.  The resulting color
-   *     bitmaps, if available, will have the @FT_PIXEL_MODE_BGRA format.
-   *     If the flag is not set and color bitmaps are found, they are
-   *     converted to 256-level gray bitmaps transparently, using the
-   *     @FT_PIXEL_MODE_GRAY format.
+   *     bitmaps, if available, will have the @FT_PIXEL_MODE_BGRA format,
+   *     with pre-multiplied color channels.  If the flag is not set and
+   *     color bitmaps are found, they are converted to 256-level gray
+   *     bitmaps, using the @FT_PIXEL_MODE_GRAY format.
+   *
+   *     [Since 2.10] If the glyph index contains an entry in the face's
+   *     `COLR' table with a `CPAL' palette table (as defined in the
+   *     OpenType specification), make @FT_Render_Glyph provide a default
+   *     blending of the color glyph layers associated with the glyph index,
+   *     using the same bitmap format as embedded color bitmap images.  This
+   *     is mainly for convenience; for full control of color layers use
+   *     @FT_Get_Color_Glyph_Layer and FreeType's color functions like
+   *     @FT_Palette_Select instead of setting FT_LOAD_COLOR for rendering
+   *     so that the client application can handle blending by itself.
    *
    *   FT_LOAD_COMPUTE_METRICS ::
    *     [Since 2.6.1] Compute glyph metrics from the glyph data, without
@@ -3065,7 +3204,7 @@
    *
    *     Advance widths are rounded to integer values; however, using the
    *     `lsb_delta' and `rsb_delta' fields of @FT_GlyphSlotRec, it is
-   *     possible to get fractional advance widths for sub-pixel positioning
+   *     possible to get fractional advance widths for subpixel positioning
    *     (which is recommended to use).
    *
    *     If configuration option AF_CONFIG_OPTION_TT_SIZE_METRICS is active,
@@ -3100,12 +3239,12 @@
    *   hinting algorithm and have the results rendered in horizontal LCD
    *   pixel mode, with code like
    *
-   *     {
-   *       FT_Load_Glyph( face, glyph_index,
-   *                      load_flags | FT_LOAD_TARGET_LIGHT );
+   *   {
+   *     FT_Load_Glyph( face, glyph_index,
+   *                    load_flags | FT_LOAD_TARGET_LIGHT );
    *
-   *       FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );
-   *     }
+   *     FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );
+   *   }
    *
    *   In general, you should stick with one rendering mode.  For example,
    *   switching between @FT_LOAD_TARGET_NORMAL and @FT_LOAD_TARGET_MONO
@@ -3137,98 +3276,101 @@
 #define FT_LOAD_TARGET_MODE( x )  ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Transform                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set the transformation that is applied to glyph images when they   */
-  /*    are loaded into a glyph slot through @FT_Load_Glyph.               */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: A handle to the source face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    matrix :: A pointer to the transformation's 2x2 matrix.  Use NULL  */
-  /*              for the identity matrix.                                 */
-  /*    delta  :: A pointer to the translation vector.  Use NULL for the   */
-  /*              null vector.                                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The transformation is only applied to scalable image formats after */
-  /*    the glyph has been loaded.  It means that hinting is unaltered by  */
-  /*    the transformation and is performed on the character size given in */
-  /*    the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes.         */
-  /*                                                                       */
-  /*    Note that this also transforms the `face.glyph.advance' field, but */
-  /*    *not* the values in `face.glyph.metrics'.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Transform
+   *
+   * @description:
+   *   Set the transformation that is applied to glyph images when they
+   *   are loaded into a glyph slot through @FT_Load_Glyph.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @input:
+   *   matrix ::
+   *     A pointer to the transformation's 2x2 matrix.  Use NULL
+   *     for the identity matrix.
+   *   delta ::
+   *     A pointer to the translation vector.  Use NULL for the
+   *     null vector.
+   *
+   * @note:
+   *   The transformation is only applied to scalable image formats after
+   *   the glyph has been loaded.  It means that hinting is unaltered by
+   *   the transformation and is performed on the character size given in
+   *   the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes.
+   *
+   *   Note that this also transforms the `face.glyph.advance' field, but
+   *   *not* the values in `face.glyph.metrics'.
+   */
   FT_EXPORT( void )
   FT_Set_Transform( FT_Face     face,
                     FT_Matrix*  matrix,
                     FT_Vector*  delta );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Render_Mode                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Render modes supported by FreeType~2.  Each mode corresponds to a  */
-  /*    specific type of scanline conversion performed on the outline.     */
-  /*                                                                       */
-  /*    For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode'     */
-  /*    field in the @FT_GlyphSlotRec structure gives the format of the    */
-  /*    returned bitmap.                                                   */
-  /*                                                                       */
-  /*    All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity,   */
-  /*    indicating pixel coverage.  Use linear alpha blending and gamma    */
-  /*    correction to correctly render non-monochrome glyph bitmaps onto a */
-  /*    surface; see @FT_Render_Glyph.                                     */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_RENDER_MODE_NORMAL ::                                           */
-  /*      Default render mode; it corresponds to 8-bit anti-aliased        */
-  /*      bitmaps.                                                         */
-  /*                                                                       */
-  /*    FT_RENDER_MODE_LIGHT ::                                            */
-  /*      This is equivalent to @FT_RENDER_MODE_NORMAL.  It is only        */
-  /*      defined as a separate value because render modes are also used   */
-  /*      indirectly to define hinting algorithm selectors.  See           */
-  /*      @FT_LOAD_TARGET_XXX for details.                                 */
-  /*                                                                       */
-  /*    FT_RENDER_MODE_MONO ::                                             */
-  /*      This mode corresponds to 1-bit bitmaps (with 2~levels of         */
-  /*      opacity).                                                        */
-  /*                                                                       */
-  /*    FT_RENDER_MODE_LCD ::                                              */
-  /*      This mode corresponds to horizontal RGB and BGR sub-pixel        */
-  /*      displays like LCD screens.  It produces 8-bit bitmaps that are   */
-  /*      3~times the width of the original glyph outline in pixels, and   */
-  /*      which use the @FT_PIXEL_MODE_LCD mode.                           */
-  /*                                                                       */
-  /*    FT_RENDER_MODE_LCD_V ::                                            */
-  /*      This mode corresponds to vertical RGB and BGR sub-pixel displays */
-  /*      (like PDA screens, rotated LCD displays, etc.).  It produces     */
-  /*      8-bit bitmaps that are 3~times the height of the original        */
-  /*      glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode.   */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Should you define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your      */
-  /*    `ftoption.h', which enables patented ClearType-style rendering,    */
-  /*    the LCD-optimized glyph bitmaps should be filtered to reduce color */
-  /*    fringes inherent to this technology.  You can either set up LCD    */
-  /*    filtering with @FT_Library_SetLcdFilter or @FT_Face_Properties,    */
-  /*    or do the filtering yourself.  The default FreeType LCD rendering  */
-  /*    technology does not require filtering.                             */
-  /*                                                                       */
-  /*    The selected render mode only affects vector glyphs of a font.     */
-  /*    Embedded bitmaps often have a different pixel mode like            */
-  /*    @FT_PIXEL_MODE_MONO.  You can use @FT_Bitmap_Convert to transform  */
-  /*    them into 8-bit pixmaps.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Render_Mode
+   *
+   * @description:
+   *   Render modes supported by FreeType~2.  Each mode corresponds to a
+   *   specific type of scanline conversion performed on the outline.
+   *
+   *   For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode'
+   *   field in the @FT_GlyphSlotRec structure gives the format of the
+   *   returned bitmap.
+   *
+   *   All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity,
+   *   indicating pixel coverage.  Use linear alpha blending and gamma
+   *   correction to correctly render non-monochrome glyph bitmaps onto a
+   *   surface; see @FT_Render_Glyph.
+   *
+   * @values:
+   *   FT_RENDER_MODE_NORMAL ::
+   *     Default render mode; it corresponds to 8-bit anti-aliased
+   *     bitmaps.
+   *
+   *   FT_RENDER_MODE_LIGHT ::
+   *     This is equivalent to @FT_RENDER_MODE_NORMAL.  It is only
+   *     defined as a separate value because render modes are also used
+   *     indirectly to define hinting algorithm selectors.  See
+   *     @FT_LOAD_TARGET_XXX for details.
+   *
+   *   FT_RENDER_MODE_MONO ::
+   *     This mode corresponds to 1-bit bitmaps (with 2~levels of
+   *     opacity).
+   *
+   *   FT_RENDER_MODE_LCD ::
+   *     This mode corresponds to horizontal RGB and BGR subpixel
+   *     displays like LCD screens.  It produces 8-bit bitmaps that are
+   *     3~times the width of the original glyph outline in pixels, and
+   *     which use the @FT_PIXEL_MODE_LCD mode.
+   *
+   *   FT_RENDER_MODE_LCD_V ::
+   *     This mode corresponds to vertical RGB and BGR subpixel displays
+   *     (like PDA screens, rotated LCD displays, etc.).  It produces
+   *     8-bit bitmaps that are 3~times the height of the original
+   *     glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode.
+   *
+   * @note:
+   *   Should you define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your
+   *   `ftoption.h', which enables patented ClearType-style rendering,
+   *   the LCD-optimized glyph bitmaps should be filtered to reduce color
+   *   fringes inherent to this technology.  You can either set up LCD
+   *   filtering with @FT_Library_SetLcdFilter or @FT_Face_Properties,
+   *   or do the filtering yourself.  The default FreeType LCD rendering
+   *   technology does not require filtering.
+   *
+   *   The selected render mode only affects vector glyphs of a font.
+   *   Embedded bitmaps often have a different pixel mode like
+   *   @FT_PIXEL_MODE_MONO.  You can use @FT_Bitmap_Convert to transform
+   *   them into 8-bit pixmaps.
+   */
   typedef enum  FT_Render_Mode_
   {
     FT_RENDER_MODE_NORMAL = 0,
@@ -3248,142 +3390,155 @@
 #define ft_render_mode_mono    FT_RENDER_MODE_MONO
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Render_Glyph                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Convert a given glyph image to a bitmap.  It does so by inspecting */
-  /*    the glyph image format, finding the relevant renderer, and         */
-  /*    invoking it.                                                       */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    slot        :: A handle to the glyph slot containing the image to  */
-  /*                   convert.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    render_mode :: The render mode used to render the glyph image into */
-  /*                   a bitmap.  See @FT_Render_Mode for a list of        */
-  /*                   possible values.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    To get meaningful results, font scaling values must be set with    */
-  /*    functions like @FT_Set_Char_Size before calling `FT_Render_Glyph'. */
-  /*                                                                       */
-  /*    When FreeType outputs a bitmap of a glyph, it really outputs an    */
-  /*    alpha coverage map.  If a pixel is completely covered by a         */
-  /*    filled-in outline, the bitmap contains 0xFF at that pixel, meaning */
-  /*    that 0xFF/0xFF fraction of that pixel is covered, meaning the      */
-  /*    pixel is 100% black (or 0% bright).  If a pixel is only 50%        */
-  /*    covered (value 0x80), the pixel is made 50% black (50% bright or a */
-  /*    middle shade of grey).  0% covered means 0% black (100% bright or  */
-  /*    white).                                                            */
-  /*                                                                       */
-  /*    On high-DPI screens like on smartphones and tablets, the pixels    */
-  /*    are so small that their chance of being completely covered and     */
-  /*    therefore completely black are fairly good.  On the low-DPI        */
-  /*    screens, however, the situation is different.  The pixels are too  */
-  /*    large for most of the details of a glyph and shades of gray are    */
-  /*    the norm rather than the exception.                                */
-  /*                                                                       */
-  /*    This is relevant because all our screens have a second problem:    */
-  /*    they are not linear.  1~+~1 is not~2.  Twice the value does not    */
-  /*    result in twice the brightness.  When a pixel is only 50% covered, */
-  /*    the coverage map says 50% black, and this translates to a pixel    */
-  /*    value of 128 when you use 8~bits per channel (0-255).  However,    */
-  /*    this does not translate to 50% brightness for that pixel on our    */
-  /*    sRGB and gamma~2.2 screens.  Due to their non-linearity, they      */
-  /*    dwell longer in the darks and only a pixel value of about 186      */
-  /*    results in 50% brightness -- 128 ends up too dark on both bright   */
-  /*    and dark backgrounds.  The net result is that dark text looks      */
-  /*    burnt-out, pixely and blotchy on bright background, bright text    */
-  /*    too frail on dark backgrounds, and colored text on colored         */
-  /*    background (for example, red on green) seems to have dark halos or */
-  /*    `dirt' around it.  The situation is especially ugly for diagonal   */
-  /*    stems like in `w' glyph shapes where the quality of FreeType's     */
-  /*    anti-aliasing depends on the correct display of grays.  On         */
-  /*    high-DPI screens where smaller, fully black pixels reign supreme,  */
-  /*    this doesn't matter, but on our low-DPI screens with all the gray  */
-  /*    shades, it does.  0% and 100% brightness are the same things in    */
-  /*    linear and non-linear space, just all the shades in-between        */
-  /*    aren't.                                                            */
-  /*                                                                       */
-  /*    The blending function for placing text over a background is        */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      dst = alpha * src + (1 - alpha) * dst    ,                       */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    which is known as the OVER operator.                               */
-  /*                                                                       */
-  /*    To correctly composite an antialiased pixel of a glyph onto a      */
-  /*    surface,                                                           */
-  /*                                                                       */
-  /*    1. take the foreground and background colors (e.g., in sRGB space) */
-  /*       and apply gamma to get them in a linear space,                  */
-  /*                                                                       */
-  /*    2. use OVER to blend the two linear colors using the glyph pixel   */
-  /*       as the alpha value (remember, the glyph bitmap is an alpha      */
-  /*       coverage bitmap), and                                           */
-  /*                                                                       */
-  /*    3. apply inverse gamma to the blended pixel and write it back to   */
-  /*       the image.                                                      */
-  /*                                                                       */
-  /*    Internal testing at Adobe found that a target inverse gamma of~1.8 */
-  /*    for step~3 gives good results across a wide range of displays with */
-  /*    an sRGB gamma curve or a similar one.                              */
-  /*                                                                       */
-  /*    This process can cost performance.  There is an approximation that */
-  /*    does not need to know about the background color; see              */
-  /*    https://bel.fi/alankila/lcd/ and                                   */
-  /*    https://bel.fi/alankila/lcd/alpcor.html for details.               */
-  /*                                                                       */
-  /*    *ATTENTION*: Linear blending is even more important when dealing   */
-  /*    with subpixel-rendered glyphs to prevent color-fringing!  A        */
-  /*    subpixel-rendered glyph must first be filtered with a filter that  */
-  /*    gives equal weight to the three color primaries and does not       */
-  /*    exceed a sum of 0x100, see section @lcd_filtering.  Then the       */
-  /*    only difference to gray linear blending is that subpixel-rendered  */
-  /*    linear blending is done 3~times per pixel: red foreground subpixel */
-  /*    to red background subpixel and so on for green and blue.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Render_Glyph
+   *
+   * @description:
+   *   Convert a given glyph image to a bitmap.  It does so by inspecting
+   *   the glyph image format, finding the relevant renderer, and
+   *   invoking it.
+   *
+   * @inout:
+   *   slot ::
+   *     A handle to the glyph slot containing the image to
+   *     convert.
+   *
+   * @input:
+   *   render_mode ::
+   *     The render mode used to render the glyph image into
+   *     a bitmap.  See @FT_Render_Mode for a list of
+   *     possible values.
+   *
+   *     If @FT_RENDER_MODE_NORMAL is used, the flag
+   *     @FT_LOAD_COLOR can be additionally set to make the
+   *     function provide a default blending of colored
+   *     glyph layers associated with the current glyph slot
+   *     (provided the font contains such layers) instead of
+   *     rendering the glyph slot's outline.  See
+   *     @FT_LOAD_COLOR for more information.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   To get meaningful results, font scaling values must be set with
+   *   functions like @FT_Set_Char_Size before calling `FT_Render_Glyph'.
+   *
+   *   When FreeType outputs a bitmap of a glyph, it really outputs an
+   *   alpha coverage map.  If a pixel is completely covered by a
+   *   filled-in outline, the bitmap contains 0xFF at that pixel, meaning
+   *   that 0xFF/0xFF fraction of that pixel is covered, meaning the
+   *   pixel is 100% black (or 0% bright).  If a pixel is only 50%
+   *   covered (value 0x80), the pixel is made 50% black (50% bright or a
+   *   middle shade of grey).  0% covered means 0% black (100% bright or
+   *   white).
+   *
+   *   On high-DPI screens like on smartphones and tablets, the pixels
+   *   are so small that their chance of being completely covered and
+   *   therefore completely black are fairly good.  On the low-DPI
+   *   screens, however, the situation is different.  The pixels are too
+   *   large for most of the details of a glyph and shades of gray are
+   *   the norm rather than the exception.
+   *
+   *   This is relevant because all our screens have a second problem:
+   *   they are not linear.  1~+~1 is not~2.  Twice the value does not
+   *   result in twice the brightness.  When a pixel is only 50% covered,
+   *   the coverage map says 50% black, and this translates to a pixel
+   *   value of 128 when you use 8~bits per channel (0-255).  However,
+   *   this does not translate to 50% brightness for that pixel on our
+   *   sRGB and gamma~2.2 screens.  Due to their non-linearity, they
+   *   dwell longer in the darks and only a pixel value of about 186
+   *   results in 50% brightness -- 128 ends up too dark on both bright
+   *   and dark backgrounds.  The net result is that dark text looks
+   *   burnt-out, pixely and blotchy on bright background, bright text
+   *   too frail on dark backgrounds, and colored text on colored
+   *   background (for example, red on green) seems to have dark halos or
+   *   `dirt' around it.  The situation is especially ugly for diagonal
+   *   stems like in `w' glyph shapes where the quality of FreeType's
+   *   anti-aliasing depends on the correct display of grays.  On
+   *   high-DPI screens where smaller, fully black pixels reign supreme,
+   *   this doesn't matter, but on our low-DPI screens with all the gray
+   *   shades, it does.  0% and 100% brightness are the same things in
+   *   linear and non-linear space, just all the shades in-between
+   *   aren't.
+   *
+   *   The blending function for placing text over a background is
+   *
+   *   {
+   *     dst = alpha * src + (1 - alpha) * dst    ,
+   *   }
+   *
+   *   which is known as the OVER operator.
+   *
+   *   To correctly composite an antialiased pixel of a glyph onto a
+   *   surface,
+   *
+   *   1. take the foreground and background colors (e.g., in sRGB space)
+   *      and apply gamma to get them in a linear space,
+   *
+   *   2. use OVER to blend the two linear colors using the glyph pixel
+   *      as the alpha value (remember, the glyph bitmap is an alpha
+   *      coverage bitmap), and
+   *
+   *   3. apply inverse gamma to the blended pixel and write it back to
+   *      the image.
+   *
+   *   Internal testing at Adobe found that a target inverse gamma of~1.8
+   *   for step~3 gives good results across a wide range of displays with
+   *   an sRGB gamma curve or a similar one.
+   *
+   *   This process can cost performance.  There is an approximation that
+   *   does not need to know about the background color; see
+   *   https://bel.fi/alankila/lcd/ and
+   *   https://bel.fi/alankila/lcd/alpcor.html for details.
+   *
+   *   *ATTENTION*: Linear blending is even more important when dealing
+   *   with subpixel-rendered glyphs to prevent color-fringing!  A
+   *   subpixel-rendered glyph must first be filtered with a filter that
+   *   gives equal weight to the three color primaries and does not
+   *   exceed a sum of 0x100, see section @lcd_rendering.  Then the
+   *   only difference to gray linear blending is that subpixel-rendered
+   *   linear blending is done 3~times per pixel: red foreground subpixel
+   *   to red background subpixel and so on for green and blue.
+   */
   FT_EXPORT( FT_Error )
   FT_Render_Glyph( FT_GlyphSlot    slot,
                    FT_Render_Mode  render_mode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Kerning_Mode                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration to specify the format of kerning values returned by */
-  /*    @FT_Get_Kerning.                                                   */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_KERNING_DEFAULT  :: Return grid-fitted kerning distances in     */
-  /*                           26.6 fractional pixels.                     */
-  /*                                                                       */
-  /*    FT_KERNING_UNFITTED :: Return un-grid-fitted kerning distances in  */
-  /*                           26.6 fractional pixels.                     */
-  /*                                                                       */
-  /*    FT_KERNING_UNSCALED :: Return the kerning vector in original font  */
-  /*                           units.                                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    FT_KERNING_DEFAULT returns full pixel values; it also makes        */
-  /*    FreeType heuristically scale down kerning distances at small ppem  */
-  /*    values so that they don't become too big.                          */
-  /*                                                                       */
-  /*    Both FT_KERNING_DEFAULT and FT_KERNING_UNFITTED use the current    */
-  /*    horizontal scaling factor (as set e.g. with @FT_Set_Char_Size) to  */
-  /*    convert font units to pixels.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Kerning_Mode
+   *
+   * @description:
+   *   An enumeration to specify the format of kerning values returned by
+   *   @FT_Get_Kerning.
+   *
+   * @values:
+   *   FT_KERNING_DEFAULT ::
+   *     Return grid-fitted kerning distances in
+   *     26.6 fractional pixels.
+   *
+   *   FT_KERNING_UNFITTED ::
+   *     Return un-grid-fitted kerning distances in
+   *     26.6 fractional pixels.
+   *
+   *   FT_KERNING_UNSCALED ::
+   *     Return the kerning vector in original font
+   *     units.
+   *
+   * @note:
+   *   FT_KERNING_DEFAULT returns full pixel values; it also makes
+   *   FreeType heuristically scale down kerning distances at small ppem
+   *   values so that they don't become too big.
+   *
+   *   Both FT_KERNING_DEFAULT and FT_KERNING_UNFITTED use the current
+   *   horizontal scaling factor (as set e.g. with @FT_Set_Char_Size) to
+   *   convert font units to pixels.
+   */
   typedef enum  FT_Kerning_Mode_
   {
     FT_KERNING_DEFAULT = 0,
@@ -3400,44 +3555,49 @@
 #define ft_kerning_unscaled  FT_KERNING_UNSCALED
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Kerning                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the kerning vector between two glyphs of the same face.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: A handle to a source face object.                   */
-  /*                                                                       */
-  /*    left_glyph  :: The index of the left glyph in the kern pair.       */
-  /*                                                                       */
-  /*    right_glyph :: The index of the right glyph in the kern pair.      */
-  /*                                                                       */
-  /*    kern_mode   :: See @FT_Kerning_Mode for more information.          */
-  /*                   Determines the scale and dimension of the returned  */
-  /*                   kerning vector.                                     */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    akerning    :: The kerning vector.  This is either in font units,  */
-  /*                   fractional pixels (26.6 format), or pixels for      */
-  /*                   scalable formats, and in pixels for fixed-sizes     */
-  /*                   formats.                                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only horizontal layouts (left-to-right & right-to-left) are        */
-  /*    supported by this method.  Other layouts, or more sophisticated    */
-  /*    kernings, are out of the scope of this API function -- they can be */
-  /*    implemented through format-specific interfaces.                    */
-  /*                                                                       */
-  /*    Kerning for OpenType fonts implemented in a `GPOS' table is not    */
-  /*    supported; use @FT_HAS_KERNING to find out whether a font has data */
-  /*    that can be extracted with `FT_Get_Kerning'.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Kerning
+   *
+   * @description:
+   *   Return the kerning vector between two glyphs of the same face.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a source face object.
+   *
+   *   left_glyph ::
+   *     The index of the left glyph in the kern pair.
+   *
+   *   right_glyph ::
+   *     The index of the right glyph in the kern pair.
+   *
+   *   kern_mode ::
+   *     See @FT_Kerning_Mode for more information.
+   *     Determines the scale and dimension of the returned
+   *     kerning vector.
+   *
+   * @output:
+   *   akerning ::
+   *     The kerning vector.  This is either in font units,
+   *     fractional pixels (26.6 format), or pixels for
+   *     scalable formats, and in pixels for fixed-sizes
+   *     formats.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Only horizontal layouts (left-to-right & right-to-left) are
+   *   supported by this method.  Other layouts, or more sophisticated
+   *   kernings, are out of the scope of this API function -- they can be
+   *   implemented through format-specific interfaces.
+   *
+   *   Kerning for OpenType fonts implemented in a `GPOS' table is not
+   *   supported; use @FT_HAS_KERNING to find out whether a font has data
+   *   that can be extracted with `FT_Get_Kerning'.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Kerning( FT_Face     face,
                   FT_UInt     left_glyph,
@@ -3446,39 +3606,43 @@
                   FT_Vector  *akerning );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Track_Kerning                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the track kerning for a given face object at a given size.  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to a source face object.                    */
-  /*                                                                       */
-  /*    point_size :: The point size in 16.16 fractional points.           */
-  /*                                                                       */
-  /*    degree     :: The degree of tightness.  Increasingly negative      */
-  /*                  values represent tighter track kerning, while        */
-  /*                  increasingly positive values represent looser track  */
-  /*                  kerning.  Value zero means no track kerning.         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    akerning   :: The kerning in 16.16 fractional points, to be        */
-  /*                  uniformly applied between all glyphs.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Currently, only the Type~1 font driver supports track kerning,     */
-  /*    using data from AFM files (if attached with @FT_Attach_File or     */
-  /*    @FT_Attach_Stream).                                                */
-  /*                                                                       */
-  /*    Only very few AFM files come with track kerning data; please refer */
-  /*    to Adobe's AFM specification for more details.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Track_Kerning
+   *
+   * @description:
+   *   Return the track kerning for a given face object at a given size.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a source face object.
+   *
+   *   point_size ::
+   *     The point size in 16.16 fractional points.
+   *
+   *   degree ::
+   *     The degree of tightness.  Increasingly negative
+   *     values represent tighter track kerning, while
+   *     increasingly positive values represent looser track
+   *     kerning.  Value zero means no track kerning.
+   *
+   * @output:
+   *   akerning ::
+   *     The kerning in 16.16 fractional points, to be
+   *     uniformly applied between all glyphs.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Currently, only the Type~1 font driver supports track kerning,
+   *   using data from AFM files (if attached with @FT_Attach_File or
+   *   @FT_Attach_Stream).
+   *
+   *   Only very few AFM files come with track kerning data; please refer
+   *   to Adobe's AFM specification for more details.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Track_Kerning( FT_Face    face,
                         FT_Fixed   point_size,
@@ -3486,45 +3650,49 @@
                         FT_Fixed*  akerning );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Glyph_Name                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the ASCII name of a given glyph in a face.  This only     */
-  /*    works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1.   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: A handle to a source face object.                   */
-  /*                                                                       */
-  /*    glyph_index :: The glyph index.                                    */
-  /*                                                                       */
-  /*    buffer_max  :: The maximum number of bytes available in the        */
-  /*                   buffer.                                             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    buffer      :: A pointer to a target buffer where the name is      */
-  /*                   copied to.                                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    An error is returned if the face doesn't provide glyph names or if */
-  /*    the glyph index is invalid.  In all cases of failure, the first    */
-  /*    byte of `buffer' is set to~0 to indicate an empty name.            */
-  /*                                                                       */
-  /*    The glyph name is truncated to fit within the buffer if it is too  */
-  /*    long.  The returned string is always zero-terminated.              */
-  /*                                                                       */
-  /*    Be aware that FreeType reorders glyph indices internally so that   */
-  /*    glyph index~0 always corresponds to the `missing glyph' (called    */
-  /*    `.notdef').                                                        */
-  /*                                                                       */
-  /*    This function always returns an error if the config macro          */
-  /*    `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoption.h'.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Glyph_Name
+   *
+   * @description:
+   *   Retrieve the ASCII name of a given glyph in a face.  This only
+   *   works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a source face object.
+   *
+   *   glyph_index ::
+   *     The glyph index.
+   *
+   *   buffer_max ::
+   *     The maximum number of bytes available in the
+   *     buffer.
+   *
+   * @output:
+   *   buffer ::
+   *     A pointer to a target buffer where the name is
+   *     copied to.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   An error is returned if the face doesn't provide glyph names or if
+   *   the glyph index is invalid.  In all cases of failure, the first
+   *   byte of `buffer' is set to~0 to indicate an empty name.
+   *
+   *   The glyph name is truncated to fit within the buffer if it is too
+   *   long.  The returned string is always zero-terminated.
+   *
+   *   Be aware that FreeType reorders glyph indices internally so that
+   *   glyph index~0 always corresponds to the `missing glyph' (called
+   *   `.notdef').
+   *
+   *   This function always returns an error if the config macro
+   *   `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoption.h'.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Glyph_Name( FT_Face     face,
                      FT_UInt     glyph_index,
@@ -3532,101 +3700,106 @@
                      FT_UInt     buffer_max );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Postscript_Name                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the ASCII PostScript name of a given face, if available.  */
-  /*    This only works with PostScript, TrueType, and OpenType fonts.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the source face object.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A pointer to the face's PostScript name.  NULL if unavailable.     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The returned pointer is owned by the face and is destroyed with    */
-  /*    it.                                                                */
-  /*                                                                       */
-  /*    For variation fonts, this string changes if you select a different */
-  /*    instance, and you have to call `FT_Get_PostScript_Name' again to   */
-  /*    retrieve it.  FreeType follows Adobe TechNote #5902, `Generating   */
-  /*    PostScript Names for Fonts Using OpenType Font Variations'.        */
-  /*                                                                       */
-  /*      https://download.macromedia.com/pub/developer/opentype/tech-notes/5902.AdobePSNameGeneration.html */
-  /*                                                                       */
-  /*    [Since 2.9] Special PostScript names for named instances are only  */
-  /*    returned if the named instance is set with @FT_Set_Named_Instance  */
-  /*    (and the font has corresponding entries in its `fvar' table).  If  */
-  /*    @FT_IS_VARIATION returns true, the algorithmically derived         */
-  /*    PostScript name is provided, not looking up special entries for    */
-  /*    named instances.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Postscript_Name
+   *
+   * @description:
+   *   Retrieve the ASCII PostScript name of a given face, if available.
+   *   This only works with PostScript, TrueType, and OpenType fonts.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @return:
+   *   A pointer to the face's PostScript name.  NULL if unavailable.
+   *
+   * @note:
+   *   The returned pointer is owned by the face and is destroyed with
+   *   it.
+   *
+   *   For variation fonts, this string changes if you select a different
+   *   instance, and you have to call `FT_Get_PostScript_Name' again to
+   *   retrieve it.  FreeType follows Adobe TechNote #5902, `Generating
+   *   PostScript Names for Fonts Using OpenType Font Variations'.
+   *
+   *     https://download.macromedia.com/pub/developer/opentype/tech-notes/5902.AdobePSNameGeneration.html
+   *
+   *   [Since 2.9] Special PostScript names for named instances are only
+   *   returned if the named instance is set with @FT_Set_Named_Instance
+   *   (and the font has corresponding entries in its `fvar' table).  If
+   *   @FT_IS_VARIATION returns true, the algorithmically derived
+   *   PostScript name is provided, not looking up special entries for
+   *   named instances.
+   */
   FT_EXPORT( const char* )
   FT_Get_Postscript_Name( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Select_Charmap                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Select a given charmap by its encoding tag (as listed in           */
-  /*    `freetype.h').                                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face     :: A handle to the source face object.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    encoding :: A handle to the selected encoding.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function returns an error if no charmap in the face           */
-  /*    corresponds to the encoding queried here.                          */
-  /*                                                                       */
-  /*    Because many fonts contain more than a single cmap for Unicode     */
-  /*    encoding, this function has some special code to select the one    */
-  /*    that covers Unicode best (`best' in the sense that a UCS-4 cmap is */
-  /*    preferred to a UCS-2 cmap).  It is thus preferable to              */
-  /*    @FT_Set_Charmap in this case.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Select_Charmap
+   *
+   * @description:
+   *   Select a given charmap by its encoding tag (as listed in
+   *   `freetype.h').
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @input:
+   *   encoding ::
+   *     A handle to the selected encoding.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function returns an error if no charmap in the face
+   *   corresponds to the encoding queried here.
+   *
+   *   Because many fonts contain more than a single cmap for Unicode
+   *   encoding, this function has some special code to select the one
+   *   that covers Unicode best (`best' in the sense that a UCS-4 cmap is
+   *   preferred to a UCS-2 cmap).  It is thus preferable to
+   *   @FT_Set_Charmap in this case.
+   */
   FT_EXPORT( FT_Error )
   FT_Select_Charmap( FT_Face      face,
                      FT_Encoding  encoding );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Charmap                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Select a given charmap for character code to glyph index mapping.  */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face    :: A handle to the source face object.                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    charmap :: A handle to the selected charmap.                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function returns an error if the charmap is not part of       */
-  /*    the face (i.e., if it is not listed in the `face->charmaps'        */
-  /*    table).                                                            */
-  /*                                                                       */
-  /*    It also fails if an OpenType type~14 charmap is selected (which    */
-  /*    doesn't map character codes to glyph indices at all).              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Charmap
+   *
+   * @description:
+   *   Select a given charmap for character code to glyph index mapping.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @input:
+   *   charmap ::
+   *     A handle to the selected charmap.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function returns an error if the charmap is not part of
+   *   the face (i.e., if it is not listed in the `face->charmaps'
+   *   table).
+   *
+   *   It also fails if an OpenType type~14 charmap is selected (which
+   *   doesn't map character codes to glyph indices at all).
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Charmap( FT_Face     face,
                   FT_CharMap  charmap );
@@ -3653,125 +3826,132 @@
   FT_Get_Charmap_Index( FT_CharMap  charmap );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Char_Index                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the glyph index of a given character code.  This function   */
-  /*    uses the currently selected charmap to do the mapping.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the source face object.                    */
-  /*                                                                       */
-  /*    charcode :: The character code.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The glyph index.  0~means `undefined character code'.              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If you use FreeType to manipulate the contents of font files       */
-  /*    directly, be aware that the glyph index returned by this function  */
-  /*    doesn't always correspond to the internal indices used within the  */
-  /*    file.  This is done to ensure that value~0 always corresponds to   */
-  /*    the `missing glyph'.  If the first glyph is not named `.notdef',   */
-  /*    then for Type~1 and Type~42 fonts, `.notdef' will be moved into    */
-  /*    the glyph ID~0 position, and whatever was there will be moved to   */
-  /*    the position `.notdef' had.  For Type~1 fonts, if there is no      */
-  /*    `.notdef' glyph at all, then one will be created at index~0 and    */
-  /*    whatever was there will be moved to the last index -- Type~42      */
-  /*    fonts are considered invalid under this condition.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Char_Index
+   *
+   * @description:
+   *   Return the glyph index of a given character code.  This function
+   *   uses the currently selected charmap to do the mapping.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   charcode ::
+   *     The character code.
+   *
+   * @return:
+   *   The glyph index.  0~means `undefined character code'.
+   *
+   * @note:
+   *   If you use FreeType to manipulate the contents of font files
+   *   directly, be aware that the glyph index returned by this function
+   *   doesn't always correspond to the internal indices used within the
+   *   file.  This is done to ensure that value~0 always corresponds to
+   *   the `missing glyph'.  If the first glyph is not named `.notdef',
+   *   then for Type~1 and Type~42 fonts, `.notdef' will be moved into
+   *   the glyph ID~0 position, and whatever was there will be moved to
+   *   the position `.notdef' had.  For Type~1 fonts, if there is no
+   *   `.notdef' glyph at all, then one will be created at index~0 and
+   *   whatever was there will be moved to the last index -- Type~42
+   *   fonts are considered invalid under this condition.
+   */
   FT_EXPORT( FT_UInt )
   FT_Get_Char_Index( FT_Face   face,
                      FT_ULong  charcode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_First_Char                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the first character code in the current charmap of a given  */
-  /*    face, together with its corresponding glyph index.                 */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face    :: A handle to the source face object.                     */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    agindex :: Glyph index of first character code.  0~if charmap is   */
-  /*               empty.                                                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The charmap's first character code.                                */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You should use this function together with @FT_Get_Next_Char to    */
-  /*    parse all character codes available in a given charmap.  The code  */
-  /*    should look like this:                                             */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FT_ULong  charcode;                                              */
-  /*      FT_UInt   gindex;                                                */
-  /*                                                                       */
-  /*                                                                       */
-  /*      charcode = FT_Get_First_Char( face, &gindex );                   */
-  /*      while ( gindex != 0 )                                            */
-  /*      {                                                                */
-  /*        ... do something with (charcode,gindex) pair ...               */
-  /*                                                                       */
-  /*        charcode = FT_Get_Next_Char( face, charcode, &gindex );        */
-  /*      }                                                                */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Be aware that character codes can have values up to 0xFFFFFFFF;    */
-  /*    this might happen for non-Unicode or malformed cmaps.  However,    */
-  /*    even with regular Unicode encoding, so-called `last resort fonts'  */
-  /*    (using SFNT cmap format 13, see function @FT_Get_CMap_Format)      */
-  /*    normally have entries for all Unicode characters up to 0x1FFFFF,   */
-  /*    which can cause *a lot* of iterations.                             */
-  /*                                                                       */
-  /*    Note that `*agindex' is set to~0 if the charmap is empty.  The     */
-  /*    result itself can be~0 in two cases: if the charmap is empty or    */
-  /*    if the value~0 is the first valid character code.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_First_Char
+   *
+   * @description:
+   *   Return the first character code in the current charmap of a given
+   *   face, together with its corresponding glyph index.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @output:
+   *   agindex ::
+   *     Glyph index of first character code.  0~if charmap is
+   *     empty.
+   *
+   * @return:
+   *   The charmap's first character code.
+   *
+   * @note:
+   *   You should use this function together with @FT_Get_Next_Char to
+   *   parse all character codes available in a given charmap.  The code
+   *   should look like this:
+   *
+   *   {
+   *     FT_ULong  charcode;
+   *     FT_UInt   gindex;
+   *
+   *
+   *     charcode = FT_Get_First_Char( face, &gindex );
+   *     while ( gindex != 0 )
+   *     {
+   *       ... do something with (charcode,gindex) pair ...
+   *
+   *       charcode = FT_Get_Next_Char( face, charcode, &gindex );
+   *     }
+   *   }
+   *
+   *   Be aware that character codes can have values up to 0xFFFFFFFF;
+   *   this might happen for non-Unicode or malformed cmaps.  However,
+   *   even with regular Unicode encoding, so-called `last resort fonts'
+   *   (using SFNT cmap format 13, see function @FT_Get_CMap_Format)
+   *   normally have entries for all Unicode characters up to 0x1FFFFF,
+   *   which can cause *a lot* of iterations.
+   *
+   *   Note that `*agindex' is set to~0 if the charmap is empty.  The
+   *   result itself can be~0 in two cases: if the charmap is empty or
+   *   if the value~0 is the first valid character code.
+   */
   FT_EXPORT( FT_ULong )
   FT_Get_First_Char( FT_Face   face,
                      FT_UInt  *agindex );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Next_Char                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the next character code in the current charmap of a given   */
-  /*    face following the value `char_code', as well as the corresponding */
-  /*    glyph index.                                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face      :: A handle to the source face object.                   */
-  /*                                                                       */
-  /*    char_code :: The starting character code.                          */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    agindex   :: Glyph index of next character code.  0~if charmap     */
-  /*                 is empty.                                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The charmap's next character code.                                 */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You should use this function with @FT_Get_First_Char to walk       */
-  /*    over all character codes available in a given charmap.  See the    */
-  /*    note for that function for a simple code example.                  */
-  /*                                                                       */
-  /*    Note that `*agindex' is set to~0 when there are no more codes in   */
-  /*    the charmap.                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Next_Char
+   *
+   * @description:
+   *   Return the next character code in the current charmap of a given
+   *   face following the value `char_code', as well as the corresponding
+   *   glyph index.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   char_code ::
+   *     The starting character code.
+   *
+   * @output:
+   *   agindex ::
+   *     Glyph index of next character code.  0~if charmap
+   *     is empty.
+   *
+   * @return:
+   *   The charmap's next character code.
+   *
+   * @note:
+   *   You should use this function with @FT_Get_First_Char to walk
+   *   over all character codes available in a given charmap.  See the
+   *   note for that function for a simple code example.
+   *
+   *   Note that `*agindex' is set to~0 when there are no more codes in
+   *   the charmap.
+   */
   FT_EXPORT( FT_ULong )
   FT_Get_Next_Char( FT_Face    face,
                     FT_ULong   char_code,
@@ -3822,7 +4002,7 @@
    * @return:
    *   FreeType error code.  0~means success.
    *
-   * @note:
+   * @example:
    *   Here an example that sets three properties.  You must define
    *   FT_CONFIG_OPTION_SUBPIXEL_RENDERING to make the LCD filter examples
    *   work.
@@ -3877,22 +4057,24 @@
                       FT_Parameter*  properties );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Name_Index                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the glyph index of a given glyph name.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the source face object.                  */
-  /*                                                                       */
-  /*    glyph_name :: The glyph name.                                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The glyph index.  0~means `undefined character code'.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Name_Index
+   *
+   * @description:
+   *   Return the glyph index of a given glyph name.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   glyph_name ::
+   *     The glyph name.
+   *
+   * @return:
+   *   The glyph index.  0~means `undefined character code'.
+   */
   FT_EXPORT( FT_UInt )
   FT_Get_Name_Index( FT_Face     face,
                      FT_String*  glyph_name );
@@ -3900,7 +4082,7 @@
 
   /*************************************************************************
    *
-   * @macro:
+   * @enum:
    *   FT_SUBGLYPH_FLAG_XXX
    *
    * @description:
@@ -3909,6 +4091,8 @@
    *   meaning of the various flags (which get synthesized for
    *   non-OpenType subglyphs).
    *
+   *     https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description
+   *
    * @values:
    *   FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS ::
    *   FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES ::
@@ -3930,7 +4114,7 @@
 
   /*************************************************************************
    *
-   * @func:
+   * @function:
    *   FT_Get_SubGlyph_Info
    *
    * @description:
@@ -3981,59 +4165,227 @@
                         FT_Matrix    *p_transform );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_FSTYPE_XXX                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit flags used in the `fsType' field of the OS/2 table   */
-  /*    in a TrueType or OpenType font and the `FSType' entry in a         */
-  /*    PostScript font.  These bit flags are returned by                  */
-  /*    @FT_Get_FSType_Flags; they inform client applications of embedding */
-  /*    and subsetting restrictions associated with a font.                */
-  /*                                                                       */
-  /*    See                                                                */
-  /*    https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf */
-  /*    for more details.                                                  */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_FSTYPE_INSTALLABLE_EMBEDDING ::                                 */
-  /*      Fonts with no fsType bit set may be embedded and permanently     */
-  /*      installed on the remote system by an application.                */
-  /*                                                                       */
-  /*    FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING ::                          */
-  /*      Fonts that have only this bit set must not be modified, embedded */
-  /*      or exchanged in any manner without first obtaining permission of */
-  /*      the font software copyright owner.                               */
-  /*                                                                       */
-  /*    FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING ::                           */
-  /*      The font may be embedded and temporarily loaded on the remote    */
-  /*      system.  Documents containing Preview & Print fonts must be      */
-  /*      opened `read-only'; no edits can be applied to the document.     */
-  /*                                                                       */
-  /*    FT_FSTYPE_EDITABLE_EMBEDDING ::                                    */
-  /*      The font may be embedded but must only be installed temporarily  */
-  /*      on other systems.  In contrast to Preview & Print fonts,         */
-  /*      documents containing editable fonts may be opened for reading,   */
-  /*      editing is permitted, and changes may be saved.                  */
-  /*                                                                       */
-  /*    FT_FSTYPE_NO_SUBSETTING ::                                         */
-  /*      The font may not be subsetted prior to embedding.                */
-  /*                                                                       */
-  /*    FT_FSTYPE_BITMAP_EMBEDDING_ONLY ::                                 */
-  /*      Only bitmaps contained in the font may be embedded; no outline   */
-  /*      data may be embedded.  If there are no bitmaps available in the  */
-  /*      font, then the font is unembeddable.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The flags are ORed together, thus more than a single value can be  */
-  /*    returned.                                                          */
-  /*                                                                       */
-  /*    While the `fsType' flags can indicate that a font may be embedded, */
-  /*    a license with the font vendor may be separately required to use   */
-  /*    the font in this way.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @section:
+   *   layer_management
+   *
+   * @title:
+   *   Glyph Layer Management
+   *
+   * @abstract:
+   *   Retrieving and manipulating OpenType's `COLR' table data.
+   *
+   * @description:
+   *   The functions described here allow access of colored glyph layer data
+   *   in OpenType's `COLR' tables.
+   */
+
+
+  /**********************************************************************
+   *
+   * @struct:
+   *   FT_LayerIterator
+   *
+   * @description:
+   *   This iterator object is needed for @FT_Get_Color_Glyph_Layer.
+   *
+   * @fields:
+   *   num_layers ::
+   *     The number of glyph layers for the requested glyph index.  Will be
+   *     set by @FT_Get_Color_Glyph_Layer.
+   *
+   *   layer ::
+   *     The current layer.  Will be set by @FT_Get_Color_Glyph_Layer.
+   *
+   *   p ::
+   *     An opaque pointer into `COLR' table data.  The caller must set this
+   *     to NULL before the first call of @FT_Get_Color_Glyph_Layer.
+   */
+  typedef struct  FT_LayerIterator_
+  {
+    FT_UInt   num_layers;
+    FT_UInt   layer;
+    FT_Byte*  p;
+
+  } FT_LayerIterator;
+
+
+  /*************************************************************************
+   *
+   * @function:
+   *   FT_Get_Color_Glyph_Layer
+   *
+   * @description:
+   *   This is an interface to the `COLR' table in OpenType fonts to
+   *   iteratively retrieve the colored glyph layers associated with the
+   *   current glyph slot.
+   *
+   *     https://docs.microsoft.com/en-us/typography/opentype/spec/colr
+   *
+   *   The glyph layer data for a given glyph index, if present, provides an
+   *   alternative, multi-colour glyph representation: Instead of rendering
+   *   the outline or bitmap with the given glyph index, glyphs with the
+   *   indices and colors returned by this function are rendered layer by
+   *   layer.
+   *
+   *   The returned elements are ordered in the z~direction from bottom to
+   *   top; the `n'th element should be rendered with the associated palette
+   *   color and blended on top of the already rendered layers (elements 0,
+   *   1, ..., n-1).
+   *
+   * @input:
+   *   face ::
+   *     A handle to the parent face object.
+   *
+   *   base_glyph ::
+   *     The glyph index the colored glyph layers are associated with.
+   *
+   * @inout:
+   *   iterator ::
+   *     An @FT_LayerIterator object.  For the first call you should set
+   *     `iterator->p' to NULL.  For all following calls, simply use the
+   *     same object again.
+   *
+   * @output:
+   *   aglyph_index ::
+   *     The glyph index of the current layer.
+   *
+   *   acolor_index ::
+   *     The color index into the font face's color palette of the current
+   *     layer.  The value 0xFFFF is special; it doesn't reference a palette
+   *     entry but indicates that the text foreground color should be used
+   *     instead (to be set up by the application outside of FreeType).
+   *
+   *     The color palette can be retrieved with @FT_Palette_Select.
+   *
+   * @return:
+   *   Value~1 if everything is OK.  If there are no more layers (or if
+   *   there are no layers at all), value~0 gets returned.  In case of an
+   *   error, value~0 is returned also.
+   *
+   * @note:
+   *   This function is necessary if you want to handle glyph layers by
+   *   yourself.  In particular, functions that operate with @FT_GlyphRec
+   *   objects (like @FT_Get_Glyph or @FT_Glyph_To_Bitmap) don't have access
+   *   to this information.
+   *
+   *   @FT_Render_Glyph, however, handles colored glyph layers
+   *   automatically if the @FT_LOAD_COLOR flag is passed to it.
+   *
+   * @example:
+   *   {
+   *     FT_Color*         palette;
+   *     FT_LayerIterator  iterator;
+   *
+   *     FT_Bool  have_layers;
+   *     FT_UInt  layer_glyph_index;
+   *     FT_UInt  layer_color_index;
+   *
+   *
+   *     error = FT_Palette_Select( face, palette_index, &palette );
+   *     if ( error )
+   *       palette = NULL;
+   *
+   *     iterator.p  = NULL;
+   *     have_layers = FT_Get_Color_Glyph_Layer( face,
+   *                                             glyph_index,
+   *                                             &layer_glyph_index,
+   *                                             &layer_color_index,
+   *                                             &iterator );
+   *
+   *     if ( palette && have_layers )
+   *     {
+   *       do
+   *       {
+   *         FT_Color  layer_color;
+   *
+   *
+   *         if ( layer_color_index == 0xFFFF )
+   *           layer_color = text_foreground_color;
+   *         else
+   *           layer_color = palette[layer_color_index];
+   *
+   *         // Load and render glyph `layer_glyph_index', then
+   *         // blend resulting pixmap (using color `layer_color')
+   *         // with previously created pixmaps.
+   *
+   *       } while ( FT_Get_Color_Glyph_Layer( face,
+   *                                           glyph_index,
+   *                                           &layer_glyph_index,
+   *                                           &layer_color_index,
+   *                                           &iterator ) );
+   *     }
+   *   }
+   */
+  FT_EXPORT( FT_Bool )
+  FT_Get_Color_Glyph_Layer( FT_Face            face,
+                            FT_UInt            base_glyph,
+                            FT_UInt           *aglyph_index,
+                            FT_UInt           *acolor_index,
+                            FT_LayerIterator*  iterator );
+
+
+  /**************************************************************************
+   *
+   * @section:
+   *   base_interface
+   *
+   */
+
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_FSTYPE_XXX
+   *
+   * @description:
+   *   A list of bit flags used in the `fsType' field of the OS/2 table
+   *   in a TrueType or OpenType font and the `FSType' entry in a
+   *   PostScript font.  These bit flags are returned by
+   *   @FT_Get_FSType_Flags; they inform client applications of embedding
+   *   and subsetting restrictions associated with a font.
+   *
+   *   See
+   *   https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf
+   *   for more details.
+   *
+   * @values:
+   *   FT_FSTYPE_INSTALLABLE_EMBEDDING ::
+   *     Fonts with no fsType bit set may be embedded and permanently
+   *     installed on the remote system by an application.
+   *
+   *   FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING ::
+   *     Fonts that have only this bit set must not be modified, embedded
+   *     or exchanged in any manner without first obtaining permission of
+   *     the font software copyright owner.
+   *
+   *   FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING ::
+   *     The font may be embedded and temporarily loaded on the remote
+   *     system.  Documents containing Preview & Print fonts must be
+   *     opened `read-only'; no edits can be applied to the document.
+   *
+   *   FT_FSTYPE_EDITABLE_EMBEDDING ::
+   *     The font may be embedded but must only be installed temporarily
+   *     on other systems.  In contrast to Preview & Print fonts,
+   *     documents containing editable fonts may be opened for reading,
+   *     editing is permitted, and changes may be saved.
+   *
+   *   FT_FSTYPE_NO_SUBSETTING ::
+   *     The font may not be subsetted prior to embedding.
+   *
+   *   FT_FSTYPE_BITMAP_EMBEDDING_ONLY ::
+   *     Only bitmaps contained in the font may be embedded; no outline
+   *     data may be embedded.  If there are no bitmaps available in the
+   *     font, then the font is unembeddable.
+   *
+   * @note:
+   *   The flags are ORed together, thus more than a single value can be
+   *   returned.
+   *
+   *   While the `fsType' flags can indicate that a font may be embedded,
+   *   a license with the font vendor may be separately required to use
+   *   the font in this way.
+   */
 #define FT_FSTYPE_INSTALLABLE_EMBEDDING         0x0000
 #define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING  0x0002
 #define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING   0x0004
@@ -4042,492 +4394,503 @@
 #define FT_FSTYPE_BITMAP_EMBEDDING_ONLY         0x0200
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_FSType_Flags                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the `fsType' flags for a font.                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the source face object.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The `fsType' flags, see @FT_FSTYPE_XXX.                            */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Use this function rather than directly reading the `fs_type' field */
-  /*    in the @PS_FontInfoRec structure, which is only guaranteed to      */
-  /*    return the correct results for Type~1 fonts.                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.8                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_FSType_Flags
+   *
+   * @description:
+   *   Return the `fsType' flags for a font.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @return:
+   *   The `fsType' flags, see @FT_FSTYPE_XXX.
+   *
+   * @note:
+   *   Use this function rather than directly reading the `fs_type' field
+   *   in the @PS_FontInfoRec structure, which is only guaranteed to
+   *   return the correct results for Type~1 fonts.
+   *
+   * @since:
+   *   2.3.8
+   */
   FT_EXPORT( FT_UShort )
   FT_Get_FSType_Flags( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    glyph_variants                                                     */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Unicode Variation Sequences                                        */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    The FreeType~2 interface to Unicode Variation Sequences (UVS),     */
-  /*    using the SFNT cmap format~14.                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Many characters, especially for CJK scripts, have variant forms.   */
-  /*    They are a sort of grey area somewhere between being totally       */
-  /*    irrelevant and semantically distinct; for this reason, the Unicode */
-  /*    consortium decided to introduce Variation Sequences (VS),          */
-  /*    consisting of a Unicode base character and a variation selector    */
-  /*    instead of further extending the already huge number of            */
-  /*    characters.                                                        */
-  /*                                                                       */
-  /*    Unicode maintains two different sets, namely `Standardized         */
-  /*    Variation Sequences' and registered `Ideographic Variation         */
-  /*    Sequences' (IVS), collected in the `Ideographic Variation          */
-  /*    Database' (IVD).                                                   */
-  /*                                                                       */
-  /*      https://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt */
-  /*      https://unicode.org/reports/tr37/                                */
-  /*      https://unicode.org/ivd/                                         */
-  /*                                                                       */
-  /*    To date (January 2017), the character with the most ideographic    */
-  /*    variations is U+9089, having 32 such IVS.                          */
-  /*                                                                       */
-  /*    Three Mongolian Variation Selectors have the values U+180B-U+180D; */
-  /*    256 generic Variation Selectors are encoded in the ranges          */
-  /*    U+FE00-U+FE0F and U+E0100-U+E01EF.  IVS currently use Variation    */
-  /*    Selectors from the range U+E0100-U+E01EF only.                     */
-  /*                                                                       */
-  /*    A VS consists of the base character value followed by a single     */
-  /*    Variation Selector.  For example, to get the first variation of    */
-  /*    U+9089, you have to write the character sequence `U+9089 U+E0100'. */
-  /*                                                                       */
-  /*    Adobe and MS decided to support both standardized and ideographic  */
-  /*    VS with a new cmap subtable (format~14).  It is an odd subtable    */
-  /*    because it is not a mapping of input code points to glyphs, but    */
-  /*    contains lists of all variations supported by the font.            */
-  /*                                                                       */
-  /*    A variation may be either `default' or `non-default' for a given   */
-  /*    font.  A default variation is the one you will get for that code   */
-  /*    point if you look it up in the standard Unicode cmap.  A           */
-  /*    non-default variation is a different glyph.                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   glyph_variants
+   *
+   * @title:
+   *   Unicode Variation Sequences
+   *
+   * @abstract:
+   *   The FreeType~2 interface to Unicode Variation Sequences (UVS),
+   *   using the SFNT cmap format~14.
+   *
+   * @description:
+   *   Many characters, especially for CJK scripts, have variant forms.
+   *   They are a sort of grey area somewhere between being totally
+   *   irrelevant and semantically distinct; for this reason, the Unicode
+   *   consortium decided to introduce Variation Sequences (VS),
+   *   consisting of a Unicode base character and a variation selector
+   *   instead of further extending the already huge number of
+   *   characters.
+   *
+   *   Unicode maintains two different sets, namely `Standardized
+   *   Variation Sequences' and registered `Ideographic Variation
+   *   Sequences' (IVS), collected in the `Ideographic Variation
+   *   Database' (IVD).
+   *
+   *     https://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt
+   *     https://unicode.org/reports/tr37/
+   *     https://unicode.org/ivd/
+   *
+   *   To date (January 2017), the character with the most ideographic
+   *   variations is U+9089, having 32 such IVS.
+   *
+   *   Three Mongolian Variation Selectors have the values U+180B-U+180D;
+   *   256 generic Variation Selectors are encoded in the ranges
+   *   U+FE00-U+FE0F and U+E0100-U+E01EF.  IVS currently use Variation
+   *   Selectors from the range U+E0100-U+E01EF only.
+   *
+   *   A VS consists of the base character value followed by a single
+   *   Variation Selector.  For example, to get the first variation of
+   *   U+9089, you have to write the character sequence `U+9089 U+E0100'.
+   *
+   *   Adobe and MS decided to support both standardized and ideographic
+   *   VS with a new cmap subtable (format~14).  It is an odd subtable
+   *   because it is not a mapping of input code points to glyphs, but
+   *   contains lists of all variations supported by the font.
+   *
+   *   A variation may be either `default' or `non-default' for a given
+   *   font.  A default variation is the one you will get for that code
+   *   point if you look it up in the standard Unicode cmap.  A
+   *   non-default variation is a different glyph.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetCharVariantIndex                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the glyph index of a given character code as modified by    */
-  /*    the variation selector.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /*    charcode ::                                                        */
-  /*      The character code point in Unicode.                             */
-  /*                                                                       */
-  /*    variantSelector ::                                                 */
-  /*      The Unicode code point of the variation selector.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The glyph index.  0~means either `undefined character code', or    */
-  /*    `undefined selector code', or `no variation selector cmap          */
-  /*    subtable', or `current CharMap is not Unicode'.                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If you use FreeType to manipulate the contents of font files       */
-  /*    directly, be aware that the glyph index returned by this function  */
-  /*    doesn't always correspond to the internal indices used within      */
-  /*    the file.  This is done to ensure that value~0 always corresponds  */
-  /*    to the `missing glyph'.                                            */
-  /*                                                                       */
-  /*    This function is only meaningful if                                */
-  /*      a) the font has a variation selector cmap sub table,             */
-  /*    and                                                                */
-  /*      b) the current charmap has a Unicode encoding.                   */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetCharVariantIndex
+   *
+   * @description:
+   *   Return the glyph index of a given character code as modified by
+   *   the variation selector.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   charcode ::
+   *     The character code point in Unicode.
+   *
+   *   variantSelector ::
+   *     The Unicode code point of the variation selector.
+   *
+   * @return:
+   *   The glyph index.  0~means either `undefined character code', or
+   *   `undefined selector code', or `no variation selector cmap
+   *   subtable', or `current CharMap is not Unicode'.
+   *
+   * @note:
+   *   If you use FreeType to manipulate the contents of font files
+   *   directly, be aware that the glyph index returned by this function
+   *   doesn't always correspond to the internal indices used within
+   *   the file.  This is done to ensure that value~0 always corresponds
+   *   to the `missing glyph'.
+   *
+   *   This function is only meaningful if
+   *     a) the font has a variation selector cmap sub table,
+   *   and
+   *     b) the current charmap has a Unicode encoding.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_UInt )
   FT_Face_GetCharVariantIndex( FT_Face   face,
                                FT_ULong  charcode,
                                FT_ULong  variantSelector );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetCharVariantIsDefault                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Check whether this variation of this Unicode character is the one  */
-  /*    to be found in the `cmap'.                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /*    charcode ::                                                        */
-  /*      The character codepoint in Unicode.                              */
-  /*                                                                       */
-  /*    variantSelector ::                                                 */
-  /*      The Unicode codepoint of the variation selector.                 */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    1~if found in the standard (Unicode) cmap, 0~if found in the       */
-  /*    variation selector cmap, or -1 if it is not a variation.           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function is only meaningful if the font has a variation       */
-  /*    selector cmap subtable.                                            */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetCharVariantIsDefault
+   *
+   * @description:
+   *   Check whether this variation of this Unicode character is the one
+   *   to be found in the `cmap'.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   charcode ::
+   *     The character codepoint in Unicode.
+   *
+   *   variantSelector ::
+   *     The Unicode codepoint of the variation selector.
+   *
+   * @return:
+   *   1~if found in the standard (Unicode) cmap, 0~if found in the
+   *   variation selector cmap, or -1 if it is not a variation.
+   *
+   * @note:
+   *   This function is only meaningful if the font has a variation
+   *   selector cmap subtable.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_Int )
   FT_Face_GetCharVariantIsDefault( FT_Face   face,
                                    FT_ULong  charcode,
                                    FT_ULong  variantSelector );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetVariantSelectors                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a zero-terminated list of Unicode variation selectors found */
-  /*    in the font.                                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A pointer to an array of selector code points, or NULL if there is */
-  /*    no valid variation selector cmap subtable.                         */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The last item in the array is~0; the array is owned by the         */
-  /*    @FT_Face object but can be overwritten or released on the next     */
-  /*    call to a FreeType function.                                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetVariantSelectors
+   *
+   * @description:
+   *   Return a zero-terminated list of Unicode variation selectors found
+   *   in the font.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @return:
+   *   A pointer to an array of selector code points, or NULL if there is
+   *   no valid variation selector cmap subtable.
+   *
+   * @note:
+   *   The last item in the array is~0; the array is owned by the
+   *   @FT_Face object but can be overwritten or released on the next
+   *   call to a FreeType function.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_UInt32* )
   FT_Face_GetVariantSelectors( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetVariantsOfChar                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a zero-terminated list of Unicode variation selectors found */
-  /*    for the specified character code.                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /*    charcode ::                                                        */
-  /*      The character codepoint in Unicode.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A pointer to an array of variation selector code points that are   */
-  /*    active for the given character, or NULL if the corresponding list  */
-  /*    is empty.                                                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The last item in the array is~0; the array is owned by the         */
-  /*    @FT_Face object but can be overwritten or released on the next     */
-  /*    call to a FreeType function.                                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetVariantsOfChar
+   *
+   * @description:
+   *   Return a zero-terminated list of Unicode variation selectors found
+   *   for the specified character code.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   charcode ::
+   *     The character codepoint in Unicode.
+   *
+   * @return:
+   *   A pointer to an array of variation selector code points that are
+   *   active for the given character, or NULL if the corresponding list
+   *   is empty.
+   *
+   * @note:
+   *   The last item in the array is~0; the array is owned by the
+   *   @FT_Face object but can be overwritten or released on the next
+   *   call to a FreeType function.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_UInt32* )
   FT_Face_GetVariantsOfChar( FT_Face   face,
                              FT_ULong  charcode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetCharsOfVariant                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a zero-terminated list of Unicode character codes found for */
-  /*    the specified variation selector.                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /*    variantSelector ::                                                 */
-  /*      The variation selector code point in Unicode.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A list of all the code points that are specified by this selector  */
-  /*    (both default and non-default codes are returned) or NULL if there */
-  /*    is no valid cmap or the variation selector is invalid.             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The last item in the array is~0; the array is owned by the         */
-  /*    @FT_Face object but can be overwritten or released on the next     */
-  /*    call to a FreeType function.                                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetCharsOfVariant
+   *
+   * @description:
+   *   Return a zero-terminated list of Unicode character codes found for
+   *   the specified variation selector.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   variantSelector ::
+   *     The variation selector code point in Unicode.
+   *
+   * @return:
+   *   A list of all the code points that are specified by this selector
+   *   (both default and non-default codes are returned) or NULL if there
+   *   is no valid cmap or the variation selector is invalid.
+   *
+   * @note:
+   *   The last item in the array is~0; the array is owned by the
+   *   @FT_Face object but can be overwritten or released on the next
+   *   call to a FreeType function.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_UInt32* )
   FT_Face_GetCharsOfVariant( FT_Face   face,
                              FT_ULong  variantSelector );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    computations                                                       */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Computations                                                       */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Crunching fixed numbers and vectors.                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains various functions used to perform            */
-  /*    computations on 16.16 fixed-float numbers or 2d vectors.           */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_MulDiv                                                          */
-  /*    FT_MulFix                                                          */
-  /*    FT_DivFix                                                          */
-  /*    FT_RoundFix                                                        */
-  /*    FT_CeilFix                                                         */
-  /*    FT_FloorFix                                                        */
-  /*    FT_Vector_Transform                                                */
-  /*    FT_Matrix_Multiply                                                 */
-  /*    FT_Matrix_Invert                                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   computations
+   *
+   * @title:
+   *   Computations
+   *
+   * @abstract:
+   *   Crunching fixed numbers and vectors.
+   *
+   * @description:
+   *   This section contains various functions used to perform
+   *   computations on 16.16 fixed-float numbers or 2d vectors.
+   *
+   * @order:
+   *   FT_MulDiv
+   *   FT_MulFix
+   *   FT_DivFix
+   *   FT_RoundFix
+   *   FT_CeilFix
+   *   FT_FloorFix
+   *   FT_Vector_Transform
+   *   FT_Matrix_Multiply
+   *   FT_Matrix_Invert
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_MulDiv                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute `(a*b)/c' with maximum accuracy, using a 64-bit            */
-  /*    intermediate integer whenever necessary.                           */
-  /*                                                                       */
-  /*    This function isn't necessarily as fast as some processor specific */
-  /*    operations, but is at least completely portable.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The first multiplier.                                         */
-  /*                                                                       */
-  /*    b :: The second multiplier.                                        */
-  /*                                                                       */
-  /*    c :: The divisor.                                                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result of `(a*b)/c'.  This function never traps when trying to */
-  /*    divide by zero; it simply returns `MaxInt' or `MinInt' depending   */
-  /*    on the signs of `a' and `b'.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_MulDiv
+   *
+   * @description:
+   *   Compute `(a*b)/c' with maximum accuracy, using a 64-bit
+   *   intermediate integer whenever necessary.
+   *
+   *   This function isn't necessarily as fast as some processor-specific
+   *   operations, but is at least completely portable.
+   *
+   * @input:
+   *   a ::
+   *     The first multiplier.
+   *
+   *   b ::
+   *     The second multiplier.
+   *
+   *   c ::
+   *     The divisor.
+   *
+   * @return:
+   *   The result of `(a*b)/c'.  This function never traps when trying to
+   *   divide by zero; it simply returns `MaxInt' or `MinInt' depending
+   *   on the signs of `a' and `b'.
+   */
   FT_EXPORT( FT_Long )
   FT_MulDiv( FT_Long  a,
              FT_Long  b,
              FT_Long  c );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_MulFix                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute `(a*b)/0x10000' with maximum accuracy.  Its main use is to */
-  /*    multiply a given value by a 16.16 fixed-point factor.              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The first multiplier.                                         */
-  /*                                                                       */
-  /*    b :: The second multiplier.  Use a 16.16 factor here whenever      */
-  /*         possible (see note below).                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result of `(a*b)/0x10000'.                                     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function has been optimized for the case where the absolute   */
-  /*    value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */
-  /*    As this happens mainly when scaling from notional units to         */
-  /*    fractional pixels in FreeType, it resulted in noticeable speed     */
-  /*    improvements between versions 2.x and 1.x.                         */
-  /*                                                                       */
-  /*    As a conclusion, always try to place a 16.16 factor as the         */
-  /*    _second_ argument of this function; this can make a great          */
-  /*    difference.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_MulFix
+   *
+   * @description:
+   *   Compute `(a*b)/0x10000' with maximum accuracy.  Its main use is to
+   *   multiply a given value by a 16.16 fixed-point factor.
+   *
+   * @input:
+   *   a ::
+   *     The first multiplier.
+   *
+   *   b ::
+   *     The second multiplier.  Use a 16.16 factor here whenever
+   *     possible (see note below).
+   *
+   * @return:
+   *   The result of `(a*b)/0x10000'.
+   *
+   * @note:
+   *   This function has been optimized for the case where the absolute
+   *   value of `a' is less than 2048, and `b' is a 16.16 scaling factor.
+   *   As this happens mainly when scaling from notional units to
+   *   fractional pixels in FreeType, it resulted in noticeable speed
+   *   improvements between versions 2.x and 1.x.
+   *
+   *   As a conclusion, always try to place a 16.16 factor as the
+   *   _second_ argument of this function; this can make a great
+   *   difference.
+   */
   FT_EXPORT( FT_Long )
   FT_MulFix( FT_Long  a,
              FT_Long  b );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_DivFix                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute `(a*0x10000)/b' with maximum accuracy.  Its main use is to */
-  /*    divide a given value by a 16.16 fixed-point factor.                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The numerator.                                                */
-  /*                                                                       */
-  /*    b :: The denominator.  Use a 16.16 factor here.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result of `(a*0x10000)/b'.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_DivFix
+   *
+   * @description:
+   *   Compute `(a*0x10000)/b' with maximum accuracy.  Its main use is to
+   *   divide a given value by a 16.16 fixed-point factor.
+   *
+   * @input:
+   *   a ::
+   *     The numerator.
+   *
+   *   b ::
+   *     The denominator.  Use a 16.16 factor here.
+   *
+   * @return:
+   *   The result of `(a*0x10000)/b'.
+   */
   FT_EXPORT( FT_Long )
   FT_DivFix( FT_Long  a,
              FT_Long  b );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_RoundFix                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Round a 16.16 fixed number.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The number to be rounded.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    `a' rounded to the nearest 16.16 fixed integer, halfway cases away */
-  /*    from zero.                                                         */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The function uses wrap-around arithmetic.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_RoundFix
+   *
+   * @description:
+   *   Round a 16.16 fixed number.
+   *
+   * @input:
+   *   a ::
+   *     The number to be rounded.
+   *
+   * @return:
+   *   `a' rounded to the nearest 16.16 fixed integer, halfway cases away
+   *   from zero.
+   *
+   * @note:
+   *   The function uses wrap-around arithmetic.
+   */
   FT_EXPORT( FT_Fixed )
   FT_RoundFix( FT_Fixed  a );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_CeilFix                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the smallest following integer of a 16.16 fixed number.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The number for which the ceiling function is to be computed.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    `a' rounded towards plus infinity.                                 */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The function uses wrap-around arithmetic.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_CeilFix
+   *
+   * @description:
+   *   Compute the smallest following integer of a 16.16 fixed number.
+   *
+   * @input:
+   *   a ::
+   *     The number for which the ceiling function is to be computed.
+   *
+   * @return:
+   *   `a' rounded towards plus infinity.
+   *
+   * @note:
+   *   The function uses wrap-around arithmetic.
+   */
   FT_EXPORT( FT_Fixed )
   FT_CeilFix( FT_Fixed  a );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_FloorFix                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the largest previous integer of a 16.16 fixed number.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The number for which the floor function is to be computed.    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    `a' rounded towards minus infinity.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_FloorFix
+   *
+   * @description:
+   *   Compute the largest previous integer of a 16.16 fixed number.
+   *
+   * @input:
+   *   a ::
+   *     The number for which the floor function is to be computed.
+   *
+   * @return:
+   *   `a' rounded towards minus infinity.
+   */
   FT_EXPORT( FT_Fixed )
   FT_FloorFix( FT_Fixed  a );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Vector_Transform                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Transform a single vector through a 2x2 matrix.                    */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    vector :: The target vector to transform.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    matrix :: A pointer to the source 2x2 matrix.                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The result is undefined if either `vector' or `matrix' is invalid. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Vector_Transform
+   *
+   * @description:
+   *   Transform a single vector through a 2x2 matrix.
+   *
+   * @inout:
+   *   vector ::
+   *     The target vector to transform.
+   *
+   * @input:
+   *   matrix ::
+   *     A pointer to the source 2x2 matrix.
+   *
+   * @note:
+   *   The result is undefined if either `vector' or `matrix' is invalid.
+   */
   FT_EXPORT( void )
   FT_Vector_Transform( FT_Vector*        vec,
                        const FT_Matrix*  matrix );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    version                                                            */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    FreeType Version                                                   */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Functions and macros related to FreeType versions.                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Note that those functions and macros are of limited use because    */
-  /*    even a new release of FreeType with only documentation changes     */
-  /*    increases the version number.                                      */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Library_Version                                                 */
-  /*                                                                       */
-  /*    FREETYPE_MAJOR                                                     */
-  /*    FREETYPE_MINOR                                                     */
-  /*    FREETYPE_PATCH                                                     */
-  /*                                                                       */
-  /*    FT_Face_CheckTrueTypePatents                                       */
-  /*    FT_Face_SetUnpatentedHinting                                       */
-  /*                                                                       */
-  /*    FREETYPE_XXX                                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   version
+   *
+   * @title:
+   *   FreeType Version
+   *
+   * @abstract:
+   *   Functions and macros related to FreeType versions.
+   *
+   * @description:
+   *   Note that those functions and macros are of limited use because
+   *   even a new release of FreeType with only documentation changes
+   *   increases the version number.
+   *
+   * @order:
+   *   FT_Library_Version
+   *
+   *   FREETYPE_MAJOR
+   *   FREETYPE_MINOR
+   *   FREETYPE_PATCH
+   *
+   *   FT_Face_CheckTrueTypePatents
+   *   FT_Face_SetUnpatentedHinting
+   *
+   */
 
 
   /*************************************************************************
@@ -4540,9 +4903,12 @@
    *   Use @FT_Library_Version to access them at runtime.
    *
    * @values:
-   *   FREETYPE_MAJOR :: The major version number.
-   *   FREETYPE_MINOR :: The minor version number.
-   *   FREETYPE_PATCH :: The patch level.
+   *   FREETYPE_MAJOR ::
+   *     The major version number.
+   *   FREETYPE_MINOR ::
+   *     The minor version number.
+   *   FREETYPE_PATCH ::
+   *     The patch level.
    *
    * @note:
    *   The version number of FreeType if built as a dynamic link library
@@ -4552,38 +4918,42 @@
    */
 #define FREETYPE_MAJOR  2
 #define FREETYPE_MINOR  9
-#define FREETYPE_PATCH  0
+#define FREETYPE_PATCH  1
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Library_Version                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the version of the FreeType library being used.  This is    */
-  /*    useful when dynamically linking to the library, since one cannot   */
-  /*    use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and               */
-  /*    @FREETYPE_PATCH.                                                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A source library handle.                                */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    amajor  :: The major version number.                               */
-  /*                                                                       */
-  /*    aminor  :: The minor version number.                               */
-  /*                                                                       */
-  /*    apatch  :: The patch version number.                               */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The reason why this function takes a `library' argument is because */
-  /*    certain programs implement library initialization in a custom way  */
-  /*    that doesn't use @FT_Init_FreeType.                                */
-  /*                                                                       */
-  /*    In such cases, the library version might not be available before   */
-  /*    the library object has been created.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Library_Version
+   *
+   * @description:
+   *   Return the version of the FreeType library being used.  This is
+   *   useful when dynamically linking to the library, since one cannot
+   *   use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and
+   *   @FREETYPE_PATCH.
+   *
+   * @input:
+   *   library ::
+   *     A source library handle.
+   *
+   * @output:
+   *   amajor ::
+   *     The major version number.
+   *
+   *   aminor ::
+   *     The minor version number.
+   *
+   *   apatch ::
+   *     The patch version number.
+   *
+   * @note:
+   *   The reason why this function takes a `library' argument is because
+   *   certain programs implement library initialization in a custom way
+   *   that doesn't use @FT_Init_FreeType.
+   *
+   *   In such cases, the library version might not be available before
+   *   the library object has been created.
+   */
   FT_EXPORT( void )
   FT_Library_Version( FT_Library   library,
                       FT_Int      *amajor,
@@ -4591,52 +4961,55 @@
                       FT_Int      *apatch );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_CheckTrueTypePatents                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deprecated, does nothing.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A face handle.                                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Always returns false.                                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Since May 2010, TrueType hinting is no longer patented.            */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.5                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_CheckTrueTypePatents
+   *
+   * @description:
+   *   Deprecated, does nothing.
+   *
+   * @input:
+   *   face ::
+   *     A face handle.
+   *
+   * @return:
+   *   Always returns false.
+   *
+   * @note:
+   *   Since May 2010, TrueType hinting is no longer patented.
+   *
+   * @since:
+   *   2.3.5
+   */
   FT_EXPORT( FT_Bool )
   FT_Face_CheckTrueTypePatents( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_SetUnpatentedHinting                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deprecated, does nothing.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face  :: A face handle.                                            */
-  /*                                                                       */
-  /*    value :: New boolean setting.                                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Always returns false.                                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Since May 2010, TrueType hinting is no longer patented.            */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.5                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_SetUnpatentedHinting
+   *
+   * @description:
+   *   Deprecated, does nothing.
+   *
+   * @input:
+   *   face ::
+   *     A face handle.
+   *
+   *   value ::
+   *     New boolean setting.
+   *
+   * @return:
+   *   Always returns false.
+   *
+   * @note:
+   *   Since May 2010, TrueType hinting is no longer patented.
+   *
+   * @since:
+   *   2.3.5
+   */
   FT_EXPORT( FT_Bool )
   FT_Face_SetUnpatentedHinting( FT_Face  face,
                                 FT_Bool  value );
diff --git a/include/freetype/ftadvanc.h b/include/freetype/ftadvanc.h
index f78e8b1..9c3f545 100644
--- a/include/freetype/ftadvanc.h
+++ b/include/freetype/ftadvanc.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftadvanc.h                                                             */
-/*                                                                         */
-/*    Quick computation of advance widths (specification only).            */
-/*                                                                         */
-/*  Copyright 2008-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftadvanc.h
+ *
+ *   Quick computation of advance widths (specification only).
+ *
+ * Copyright 2008-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTADVANC_H_
@@ -56,68 +56,72 @@
    */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Const>                                                               */
-  /*    FT_ADVANCE_FLAG_FAST_ONLY                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A bit-flag to be OR-ed with the `flags' parameter of the           */
-  /*    @FT_Get_Advance and @FT_Get_Advances functions.                    */
-  /*                                                                       */
-  /*    If set, it indicates that you want these functions to fail if the  */
-  /*    corresponding hinting mode or font driver doesn't allow for very   */
-  /*    quick advance computation.                                         */
-  /*                                                                       */
-  /*    Typically, glyphs that are either unscaled, unhinted, bitmapped,   */
-  /*    or light-hinted can have their advance width computed very         */
-  /*    quickly.                                                           */
-  /*                                                                       */
-  /*    Normal and bytecode hinted modes that require loading, scaling,    */
-  /*    and hinting of the glyph outline, are extremely slow by            */
-  /*    comparison.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_ADVANCE_FLAG_FAST_ONLY
+   *
+   * @description:
+   *   A bit-flag to be OR-ed with the `flags' parameter of the
+   *   @FT_Get_Advance and @FT_Get_Advances functions.
+   *
+   *   If set, it indicates that you want these functions to fail if the
+   *   corresponding hinting mode or font driver doesn't allow for very
+   *   quick advance computation.
+   *
+   *   Typically, glyphs that are either unscaled, unhinted, bitmapped,
+   *   or light-hinted can have their advance width computed very
+   *   quickly.
+   *
+   *   Normal and bytecode hinted modes that require loading, scaling,
+   *   and hinting of the glyph outline, are extremely slow by
+   *   comparison.
+   */
 #define FT_ADVANCE_FLAG_FAST_ONLY  0x20000000L
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Advance                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the advance value of a given glyph outline in an          */
-  /*    @FT_Face.                                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: The source @FT_Face handle.                          */
-  /*                                                                       */
-  /*    gindex     :: The glyph index.                                     */
-  /*                                                                       */
-  /*    load_flags :: A set of bit flags similar to those used when        */
-  /*                  calling @FT_Load_Glyph, used to determine what kind  */
-  /*                  of advances you need.                                */
-  /* <Output>                                                              */
-  /*    padvance :: The advance value.  If scaling is performed (based on  */
-  /*                the value of `load_flags'), the advance value is in    */
-  /*                16.16 format.  Otherwise, it is in font units.         */
-  /*                                                                       */
-  /*                If @FT_LOAD_VERTICAL_LAYOUT is set, this is the        */
-  /*                vertical advance corresponding to a vertical layout.   */
-  /*                Otherwise, it is the horizontal advance in a           */
-  /*                horizontal layout.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
-  /*    if the corresponding font backend doesn't have a quick way to      */
-  /*    retrieve the advances.                                             */
-  /*                                                                       */
-  /*    A scaled advance is returned in 16.16 format but isn't transformed */
-  /*    by the affine transformation specified by @FT_Set_Transform.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Advance
+   *
+   * @description:
+   *   Retrieve the advance value of a given glyph outline in an
+   *   @FT_Face.
+   *
+   * @input:
+   *   face ::
+   *     The source @FT_Face handle.
+   *
+   *   gindex ::
+   *     The glyph index.
+   *
+   *   load_flags ::
+   *     A set of bit flags similar to those used when
+   *     calling @FT_Load_Glyph, used to determine what kind
+   *     of advances you need.
+   * @output:
+   *   padvance ::
+   *     The advance value.  If scaling is performed (based on
+   *     the value of `load_flags'), the advance value is in
+   *     16.16 format.  Otherwise, it is in font units.
+   *
+   *     If @FT_LOAD_VERTICAL_LAYOUT is set, this is the
+   *     vertical advance corresponding to a vertical layout.
+   *     Otherwise, it is the horizontal advance in a
+   *     horizontal layout.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and
+   *   if the corresponding font backend doesn't have a quick way to
+   *   retrieve the advances.
+   *
+   *   A scaled advance is returned in 16.16 format but isn't transformed
+   *   by the affine transformation specified by @FT_Set_Transform.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Advance( FT_Face    face,
                   FT_UInt    gindex,
@@ -125,50 +129,55 @@
                   FT_Fixed  *padvance );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Advances                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the advance values of several glyph outlines in an        */
-  /*    @FT_Face.                                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: The source @FT_Face handle.                         */
-  /*                                                                       */
-  /*    start       :: The first glyph index.                              */
-  /*                                                                       */
-  /*    count       :: The number of advance values you want to retrieve.  */
-  /*                                                                       */
-  /*    load_flags  :: A set of bit flags similar to those used when       */
-  /*                   calling @FT_Load_Glyph.                             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    padvance :: The advance values.  This array, to be provided by the */
-  /*                caller, must contain at least `count' elements.        */
-  /*                                                                       */
-  /*                If scaling is performed (based on the value of         */
-  /*                `load_flags'), the advance values are in 16.16 format. */
-  /*                Otherwise, they are in font units.                     */
-  /*                                                                       */
-  /*                If @FT_LOAD_VERTICAL_LAYOUT is set, these are the      */
-  /*                vertical advances corresponding to a vertical layout.  */
-  /*                Otherwise, they are the horizontal advances in a       */
-  /*                horizontal layout.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
-  /*    if the corresponding font backend doesn't have a quick way to      */
-  /*    retrieve the advances.                                             */
-  /*                                                                       */
-  /*    Scaled advances are returned in 16.16 format but aren't            */
-  /*    transformed by the affine transformation specified by              */
-  /*    @FT_Set_Transform.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Advances
+   *
+   * @description:
+   *   Retrieve the advance values of several glyph outlines in an
+   *   @FT_Face.
+   *
+   * @input:
+   *   face ::
+   *     The source @FT_Face handle.
+   *
+   *   start ::
+   *     The first glyph index.
+   *
+   *   count ::
+   *     The number of advance values you want to retrieve.
+   *
+   *   load_flags ::
+   *     A set of bit flags similar to those used when
+   *     calling @FT_Load_Glyph.
+   *
+   * @output:
+   *   padvance ::
+   *     The advance values.  This array, to be provided by the
+   *     caller, must contain at least `count' elements.
+   *
+   *     If scaling is performed (based on the value of
+   *     `load_flags'), the advance values are in 16.16 format.
+   *     Otherwise, they are in font units.
+   *
+   *     If @FT_LOAD_VERTICAL_LAYOUT is set, these are the
+   *     vertical advances corresponding to a vertical layout.
+   *     Otherwise, they are the horizontal advances in a
+   *     horizontal layout.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and
+   *   if the corresponding font backend doesn't have a quick way to
+   *   retrieve the advances.
+   *
+   *   Scaled advances are returned in 16.16 format but aren't
+   *   transformed by the affine transformation specified by
+   *   @FT_Set_Transform.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Advances( FT_Face    face,
                    FT_UInt    start,
diff --git a/include/freetype/ftbbox.h b/include/freetype/ftbbox.h
index f9eb70b..9a0dcfc 100644
--- a/include/freetype/ftbbox.h
+++ b/include/freetype/ftbbox.h
@@ -1,30 +1,30 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbbox.h                                                               */
-/*                                                                         */
-/*    FreeType exact bbox computation (specification).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbbox.h
+ *
+ *   FreeType exact bbox computation (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This component has a _single_ role: to compute exact outline bounding */
-  /* boxes.                                                                */
-  /*                                                                       */
-  /* It is separated from the rest of the engine for various technical     */
-  /* reasons.  It may well be integrated in `ftoutln' later.               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This component has a _single_ role: to compute exact outline bounding
+   * boxes.
+   *
+   * It is separated from the rest of the engine for various technical
+   * reasons.  It may well be integrated in `ftoutln' later.
+   *
+   */
 
 
 #ifndef FTBBOX_H_
@@ -44,43 +44,45 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    outline_processing                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   outline_processing
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Get_BBox                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the exact bounding box of an outline.  This is slower      */
-  /*    than computing the control box.  However, it uses an advanced      */
-  /*    algorithm that returns _very_ quickly when the two boxes           */
-  /*    coincide.  Otherwise, the outline Bezier arcs are traversed to     */
-  /*    extract their extrema.                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    outline :: A pointer to the source outline.                        */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    abbox   :: The outline's exact bounding box.                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If the font is tricky and the glyph has been loaded with           */
-  /*    @FT_LOAD_NO_SCALE, the resulting BBox is meaningless.  To get      */
-  /*    reasonable values for the BBox it is necessary to load the glyph   */
-  /*    at a large ppem value (so that the hinting instructions can        */
-  /*    properly shift and scale the subglyphs), then extracting the BBox, */
-  /*    which can be eventually converted back to font units.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Get_BBox
+   *
+   * @description:
+   *   Compute the exact bounding box of an outline.  This is slower
+   *   than computing the control box.  However, it uses an advanced
+   *   algorithm that returns _very_ quickly when the two boxes
+   *   coincide.  Otherwise, the outline Bezier arcs are traversed to
+   *   extract their extrema.
+   *
+   * @input:
+   *   outline ::
+   *     A pointer to the source outline.
+   *
+   * @output:
+   *   abbox ::
+   *     The outline's exact bounding box.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   If the font is tricky and the glyph has been loaded with
+   *   @FT_LOAD_NO_SCALE, the resulting BBox is meaningless.  To get
+   *   reasonable values for the BBox it is necessary to load the glyph
+   *   at a large ppem value (so that the hinting instructions can
+   *   properly shift and scale the subglyphs), then extracting the BBox,
+   *   which can be eventually converted back to font units.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Get_BBox( FT_Outline*  outline,
                        FT_BBox     *abbox );
diff --git a/include/freetype/ftbdf.h b/include/freetype/ftbdf.h
index 1b6dea6..69dbb4d 100644
--- a/include/freetype/ftbdf.h
+++ b/include/freetype/ftbdf.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbdf.h                                                                */
-/*                                                                         */
-/*    FreeType API for accessing BDF-specific strings (specification).     */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbdf.h
+ *
+ *   FreeType API for accessing BDF-specific strings (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTBDF_H_
@@ -32,22 +32,22 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    bdf_fonts                                                          */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    BDF and PCF Files                                                  */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    BDF and PCF specific API.                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of functions specific to BDF */
-  /*    and PCF fonts.                                                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   bdf_fonts
+   *
+   * @title:
+   *   BDF and PCF Files
+   *
+   * @abstract:
+   *   BDF and PCF specific API.
+   *
+   * @description:
+   *   This section contains the declaration of functions specific to BDF
+   *   and PCF fonts.
+   *
+   */
 
 
   /**********************************************************************
@@ -93,28 +93,28 @@
   typedef struct BDF_PropertyRec_*  BDF_Property;
 
 
- /**********************************************************************
-  *
-  * @struct:
-  *    BDF_PropertyRec
-  *
-  * @description:
-  *    This structure models a given BDF/PCF property.
-  *
-  * @fields:
-  *    type ::
-  *      The property type.
-  *
-  *    u.atom ::
-  *      The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.  May be
-  *      NULL, indicating an empty string.
-  *
-  *    u.integer ::
-  *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
-  *
-  *    u.cardinal ::
-  *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
-  */
+  /**********************************************************************
+   *
+   * @struct:
+   *    BDF_PropertyRec
+   *
+   * @description:
+   *    This structure models a given BDF/PCF property.
+   *
+   * @fields:
+   *    type ::
+   *      The property type.
+   *
+   *    u.atom ::
+   *      The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.  May be
+   *      NULL, indicating an empty string.
+   *
+   *    u.integer ::
+   *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
+   *
+   *    u.cardinal ::
+   *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
+   */
   typedef struct  BDF_PropertyRec_
   {
     BDF_PropertyType  type;
@@ -128,73 +128,76 @@
   } BDF_PropertyRec;
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_Get_BDF_Charset_ID
-  *
-  * @description:
-  *    Retrieve a BDF font character set identity, according to
-  *    the BDF specification.
-  *
-  * @input:
-  *    face ::
-  *       A handle to the input face.
-  *
-  * @output:
-  *    acharset_encoding ::
-  *       Charset encoding, as a C~string, owned by the face.
-  *
-  *    acharset_registry ::
-  *       Charset registry, as a C~string, owned by the face.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   This function only works with BDF faces, returning an error otherwise.
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_Get_BDF_Charset_ID
+   *
+   * @description:
+   *    Retrieve a BDF font character set identity, according to
+   *    the BDF specification.
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   * @output:
+   *    acharset_encoding ::
+   *      Charset encoding, as a C~string, owned by the face.
+   *
+   *    acharset_registry ::
+   *      Charset registry, as a C~string, owned by the face.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function only works with BDF faces, returning an error otherwise.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_BDF_Charset_ID( FT_Face       face,
                          const char*  *acharset_encoding,
                          const char*  *acharset_registry );
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_Get_BDF_Property
-  *
-  * @description:
-  *    Retrieve a BDF property from a BDF or PCF font file.
-  *
-  * @input:
-  *    face :: A handle to the input face.
-  *
-  *    name :: The property name.
-  *
-  * @output:
-  *    aproperty :: The property.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   This function works with BDF _and_ PCF fonts.  It returns an error
-  *   otherwise.  It also returns an error if the property is not in the
-  *   font.
-  *
-  *   A `property' is a either key-value pair within the STARTPROPERTIES
-  *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
-  *   `info->props' array within a `FontRec' structure of a PCF font.
-  *
-  *   Integer properties are always stored as `signed' within PCF fonts;
-  *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
-  *   for BDF fonts only.
-  *
-  *   In case of error, `aproperty->type' is always set to
-  *   @BDF_PROPERTY_TYPE_NONE.
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_Get_BDF_Property
+   *
+   * @description:
+   *    Retrieve a BDF property from a BDF or PCF font file.
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    name ::
+   *      The property name.
+   *
+   * @output:
+   *    aproperty ::
+   *      The property.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function works with BDF _and_ PCF fonts.  It returns an error
+   *   otherwise.  It also returns an error if the property is not in the
+   *   font.
+   *
+   *   A `property' is a either key-value pair within the STARTPROPERTIES
+   *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
+   *   `info->props' array within a `FontRec' structure of a PCF font.
+   *
+   *   Integer properties are always stored as `signed' within PCF fonts;
+   *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
+   *   for BDF fonts only.
+   *
+   *   In case of error, `aproperty->type' is always set to
+   *   @BDF_PROPERTY_TYPE_NONE.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_BDF_Property( FT_Face           face,
                        const char*       prop_name,
diff --git a/include/freetype/ftbitmap.h b/include/freetype/ftbitmap.h
index a43187c..c9370af 100644
--- a/include/freetype/ftbitmap.h
+++ b/include/freetype/ftbitmap.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbitmap.h                                                             */
-/*                                                                         */
-/*    FreeType utility functions for bitmaps (specification).              */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbitmap.h
+ *
+ *   FreeType utility functions for bitmaps (specification).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTBITMAP_H_
@@ -22,6 +22,7 @@
 
 #include <ft2build.h>
 #include FT_FREETYPE_H
+#include FT_COLOR_H
 
 #ifdef FREETYPE_H
 #error "freetype.h of FreeType 1 has been loaded!"
@@ -33,39 +34,40 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    bitmap_handling                                                    */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Bitmap Handling                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Handling FT_Bitmap objects.                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains functions for handling @FT_Bitmap objects.   */
-  /*    Note that none of the functions changes the bitmap's `flow' (as    */
-  /*    indicated by the sign of the `pitch' field in `FT_Bitmap').        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   bitmap_handling
+   *
+   * @title:
+   *   Bitmap Handling
+   *
+   * @abstract:
+   *   Handling FT_Bitmap objects.
+   *
+   * @description:
+   *   This section contains functions for handling @FT_Bitmap objects.
+   *   Note that none of the functions changes the bitmap's `flow' (as
+   *   indicated by the sign of the `pitch' field in `FT_Bitmap').
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Init                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a pointer to an @FT_Bitmap structure.                   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    abitmap :: A pointer to the bitmap structure.                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    A deprecated name for the same function is `FT_Bitmap_New'.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Init
+   *
+   * @description:
+   *   Initialize a pointer to an @FT_Bitmap structure.
+   *
+   * @inout:
+   *   abitmap ::
+   *     A pointer to the bitmap structure.
+   *
+   * @note:
+   *   A deprecated name for the same function is `FT_Bitmap_New'.
+   */
   FT_EXPORT( void )
   FT_Bitmap_Init( FT_Bitmap  *abitmap );
 
@@ -75,66 +77,73 @@
   FT_Bitmap_New( FT_Bitmap  *abitmap );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Copy                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Copy a bitmap into another one.                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to a library object.                           */
-  /*                                                                       */
-  /*    source  :: A handle to the source bitmap.                          */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    target  :: A handle to the target bitmap.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Copy
+   *
+   * @description:
+   *   Copy a bitmap into another one.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   source ::
+   *     A handle to the source bitmap.
+   *
+   * @output:
+   *   target ::
+   *     A handle to the target bitmap.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Bitmap_Copy( FT_Library        library,
                   const FT_Bitmap  *source,
                   FT_Bitmap        *target );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Embolden                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Embolden a bitmap.  The new bitmap will be about `xStrength'       */
-  /*    pixels wider and `yStrength' pixels higher.  The left and bottom   */
-  /*    borders are kept unchanged.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library   :: A handle to a library object.                         */
-  /*                                                                       */
-  /*    xStrength :: How strong the glyph is emboldened horizontally.      */
-  /*                 Expressed in 26.6 pixel format.                       */
-  /*                                                                       */
-  /*    yStrength :: How strong the glyph is emboldened vertically.        */
-  /*                 Expressed in 26.6 pixel format.                       */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    bitmap    :: A handle to the target bitmap.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The current implementation restricts `xStrength' to be less than   */
-  /*    or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.      */
-  /*                                                                       */
-  /*    If you want to embolden the bitmap owned by a @FT_GlyphSlotRec,    */
-  /*    you should call @FT_GlyphSlot_Own_Bitmap on the slot first.        */
-  /*                                                                       */
-  /*    Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format    */
-  /*    are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Embolden
+   *
+   * @description:
+   *   Embolden a bitmap.  The new bitmap will be about `xStrength'
+   *   pixels wider and `yStrength' pixels higher.  The left and bottom
+   *   borders are kept unchanged.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   xStrength ::
+   *     How strong the glyph is emboldened horizontally.
+   *     Expressed in 26.6 pixel format.
+   *
+   *   yStrength ::
+   *     How strong the glyph is emboldened vertically.
+   *     Expressed in 26.6 pixel format.
+   *
+   * @inout:
+   *   bitmap ::
+   *     A handle to the target bitmap.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The current implementation restricts `xStrength' to be less than
+   *   or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.
+   *
+   *   If you want to embolden the bitmap owned by a @FT_GlyphSlotRec,
+   *   you should call @FT_GlyphSlot_Own_Bitmap on the slot first.
+   *
+   *   Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format
+   *   are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).
+   */
   FT_EXPORT( FT_Error )
   FT_Bitmap_Embolden( FT_Library  library,
                       FT_Bitmap*  bitmap,
@@ -142,39 +151,43 @@
                       FT_Pos      yStrength );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Convert                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */
-  /*    to a bitmap object with depth 8bpp, making the number of used      */
-  /*    bytes line (a.k.a. the `pitch') a multiple of `alignment'.         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library   :: A handle to a library object.                         */
-  /*                                                                       */
-  /*    source    :: The source bitmap.                                    */
-  /*                                                                       */
-  /*    alignment :: The pitch of the bitmap is a multiple of this         */
-  /*                 parameter.  Common values are 1, 2, or 4.             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    target    :: The target bitmap.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    It is possible to call @FT_Bitmap_Convert multiple times without   */
-  /*    calling @FT_Bitmap_Done (the memory is simply reallocated).        */
-  /*                                                                       */
-  /*    Use @FT_Bitmap_Done to finally remove the bitmap object.           */
-  /*                                                                       */
-  /*    The `library' argument is taken to have access to FreeType's       */
-  /*    memory handling functions.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Convert
+   *
+   * @description:
+   *   Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp
+   *   to a bitmap object with depth 8bpp, making the number of used
+   *   bytes per line (a.k.a. the `pitch') a multiple of `alignment'.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   source ::
+   *     The source bitmap.
+   *
+   *   alignment ::
+   *     The pitch of the bitmap is a multiple of this
+   *     argument.  Common values are 1, 2, or 4.
+   *
+   * @output:
+   *   target ::
+   *     The target bitmap.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   It is possible to call @FT_Bitmap_Convert multiple times without
+   *   calling @FT_Bitmap_Done (the memory is simply reallocated).
+   *
+   *   Use @FT_Bitmap_Done to finally remove the bitmap object.
+   *
+   *   The `library' argument is taken to have access to FreeType's
+   *   memory handling functions.
+   */
   FT_EXPORT( FT_Error )
   FT_Bitmap_Convert( FT_Library        library,
                      const FT_Bitmap  *source,
@@ -182,48 +195,109 @@
                      FT_Int            alignment );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_GlyphSlot_Own_Bitmap                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Make sure that a glyph slot owns `slot->bitmap'.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    slot :: The glyph slot.                                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function is to be used in combination with                    */
-  /*    @FT_Bitmap_Embolden.                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Blend
+   *
+   * @description:
+   *   Blend a bitmap onto another bitmap, using a given color.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   source ::
+   *     The source bitmap, which can have any @FT_Pixel_Mode format.
+   *
+   *   source_offset ::
+   *     The offset vector to the upper left corner of the source bitmap in
+   *     26.6 pixel format.  This can be a fractional pixel value.
+   *
+   *   color ::
+   *     The color used to draw `source' onto `target'.
+   *
+   * @inout:
+   *   target ::
+   *     A handle to an `FT_Bitmap' object.  It should be either initialized
+   *     as empty with a call to @FT_Bitmap_Init, or it should be of type
+   *     @FT_PIXEL_MODE_BGRA.
+   *
+   *   atarget_offset ::
+   *     The offset vector to the upper left corner of the target bitmap in
+   *     26.6 pixel format.  It should represent an integer offset; the
+   *     function will set the lowest six bits to zero to enforce that.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function doesn't perform clipping.
+   *
+   *   The bitmap in `target' gets allocated or reallocated as needed; the
+   *   vector `atarget_offset' is updated accordingly.
+   *
+   *   In case of allocation or reallocation, the bitmap's pitch is set to
+   *   `4~*~width'.  Both `source' and `target' must have the same bitmap
+   *   flow (as indicated by the sign of the `pitch' field).
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Bitmap_Blend( FT_Library         library,
+                   const FT_Bitmap*   source,
+                   const FT_Vector    source_offset,
+                   FT_Bitmap*         target,
+                   FT_Vector         *atarget_offset,
+                   FT_Color           color );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_GlyphSlot_Own_Bitmap
+   *
+   * @description:
+   *   Make sure that a glyph slot owns `slot->bitmap'.
+   *
+   * @input:
+   *   slot ::
+   *     The glyph slot.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function is to be used in combination with
+   *   @FT_Bitmap_Embolden.
+   */
   FT_EXPORT( FT_Error )
   FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Done                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy a bitmap object initialized with @FT_Bitmap_Init.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to a library object.                           */
-  /*                                                                       */
-  /*    bitmap  :: The bitmap object to be freed.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `library' argument is taken to have access to FreeType's       */
-  /*    memory handling functions.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Done
+   *
+   * @description:
+   *   Destroy a bitmap object initialized with @FT_Bitmap_Init.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   bitmap ::
+   *     The bitmap object to be freed.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The `library' argument is taken to have access to FreeType's
+   *   memory handling functions.
+   */
   FT_EXPORT( FT_Error )
   FT_Bitmap_Done( FT_Library  library,
                   FT_Bitmap  *bitmap );
diff --git a/include/freetype/ftbzip2.h b/include/freetype/ftbzip2.h
index 6edfa03..07a7367 100644
--- a/include/freetype/ftbzip2.h
+++ b/include/freetype/ftbzip2.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbzip2.h                                                              */
-/*                                                                         */
-/*    Bzip2-compressed stream support.                                     */
-/*                                                                         */
-/*  Copyright 2010-2018 by                                                 */
-/*  Joel Klinghed.                                                         */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbzip2.h
+ *
+ *   Bzip2-compressed stream support.
+ *
+ * Copyright 2010-2018 by
+ * Joel Klinghed.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTBZIP2_H_
@@ -31,62 +31,62 @@
 
 FT_BEGIN_HEADER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    bzip2                                                              */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    BZIP2 Streams                                                      */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Using bzip2-compressed font files.                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of Bzip2-specific functions. */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   bzip2
+   *
+   * @title:
+   *   BZIP2 Streams
+   *
+   * @abstract:
+   *   Using bzip2-compressed font files.
+   *
+   * @description:
+   *   This section contains the declaration of Bzip2-specific functions.
+   *
+   */
 
 
- /************************************************************************
-  *
-  * @function:
-  *   FT_Stream_OpenBzip2
-  *
-  * @description:
-  *   Open a new stream to parse bzip2-compressed font files.  This is
-  *   mainly used to support the compressed `*.pcf.bz2' fonts that come
-  *   with XFree86.
-  *
-  * @input:
-  *   stream ::
-  *     The target embedding stream.
-  *
-  *   source ::
-  *     The source stream.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   The source stream must be opened _before_ calling this function.
-  *
-  *   Calling the internal function `FT_Stream_Close' on the new stream will
-  *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
-  *   objects will be released to the heap.
-  *
-  *   The stream implementation is very basic and resets the decompression
-  *   process each time seeking backwards is needed within the stream.
-  *
-  *   In certain builds of the library, bzip2 compression recognition is
-  *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
-  *   This means that if no font driver is capable of handling the raw
-  *   compressed file, the library will try to open a bzip2 compressed stream
-  *   from it and re-open the face with it.
-  *
-  *   This function may return `FT_Err_Unimplemented_Feature' if your build
-  *   of FreeType was not compiled with bzip2 support.
-  */
+  /************************************************************************
+   *
+   * @function:
+   *   FT_Stream_OpenBzip2
+   *
+   * @description:
+   *   Open a new stream to parse bzip2-compressed font files.  This is
+   *   mainly used to support the compressed `*.pcf.bz2' fonts that come
+   *   with XFree86.
+   *
+   * @input:
+   *   stream ::
+   *     The target embedding stream.
+   *
+   *   source ::
+   *     The source stream.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The source stream must be opened _before_ calling this function.
+   *
+   *   Calling the internal function `FT_Stream_Close' on the new stream will
+   *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
+   *   objects will be released to the heap.
+   *
+   *   The stream implementation is very basic and resets the decompression
+   *   process each time seeking backwards is needed within the stream.
+   *
+   *   In certain builds of the library, bzip2 compression recognition is
+   *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
+   *   This means that if no font driver is capable of handling the raw
+   *   compressed file, the library will try to open a bzip2 compressed stream
+   *   from it and re-open the face with it.
+   *
+   *   This function may return `FT_Err_Unimplemented_Feature' if your build
+   *   of FreeType was not compiled with bzip2 support.
+   */
   FT_EXPORT( FT_Error )
   FT_Stream_OpenBzip2( FT_Stream  stream,
                        FT_Stream  source );
diff --git a/include/freetype/ftcache.h b/include/freetype/ftcache.h
index 52d5f00..5dedb52 100644
--- a/include/freetype/ftcache.h
+++ b/include/freetype/ftcache.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcache.h                                                              */
-/*                                                                         */
-/*    FreeType Cache subsystem (specification).                            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcache.h
+ *
+ *   FreeType Cache subsystem (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTCACHE_H_
@@ -29,16 +29,16 @@
 
   /*************************************************************************
    *
-   * <Section>
-   *    cache_subsystem
+   * @section:
+   *   cache_subsystem
    *
-   * <Title>
-   *    Cache Sub-System
+   * @title:
+   *   Cache Sub-System
    *
-   * <Abstract>
-   *    How to cache face, size, and glyph data with FreeType~2.
+   * @abstract:
+   *   How to cache face, size, and glyph data with FreeType~2.
    *
-   * <Description>
+   * @description:
    *   This section describes the FreeType~2 cache sub-system, which is used
    *   to limit the number of concurrently opened @FT_Face and @FT_Size
    *   objects, as well as caching information like character maps and glyph
@@ -100,7 +100,7 @@
    *   We hope to also provide a kerning cache in the near future.
    *
    *
-   * <Order>
+   * @order:
    *   FTC_Manager
    *   FTC_FaceID
    *   FTC_Face_Requester
@@ -144,7 +144,8 @@
 
   /*************************************************************************
    *
-   * @type: FTC_FaceID
+   * @type:
+   *   FTC_FaceID
    *
    * @description:
    *   An opaque pointer type that is used to identity face objects.  The
@@ -181,7 +182,7 @@
    *   the cache manager to translate a given @FTC_FaceID into a new valid
    *   @FT_Face object, on demand.
    *
-   * <Input>
+   * @input:
    *   face_id ::
    *     The face ID to resolve.
    *
@@ -191,14 +192,14 @@
    *   req_data ::
    *     Application-provided request data (see note below).
    *
-   * <Output>
+   * @output:
    *   aface ::
    *     A new @FT_Face handle.
    *
-   * <Return>
+   * @return:
    *   FreeType error code.  0~means success.
    *
-   * <Note>
+   * @note:
    *   The third parameter `req_data' is the same as the one passed by the
    *   client when @FTC_Manager_New is called.
    *
@@ -226,84 +227,91 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FTC_Manager                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This object corresponds to one instance of the cache-subsystem.    */
-  /*    It is used to cache one or more @FT_Face objects, along with       */
-  /*    corresponding @FT_Size objects.                                    */
-  /*                                                                       */
-  /*    The manager intentionally limits the total number of opened        */
-  /*    @FT_Face and @FT_Size objects to control memory usage.  See the    */
-  /*    `max_faces' and `max_sizes' parameters of @FTC_Manager_New.        */
-  /*                                                                       */
-  /*    The manager is also used to cache `nodes' of various types while   */
-  /*    limiting their total memory usage.                                 */
-  /*                                                                       */
-  /*    All limitations are enforced by keeping lists of managed objects   */
-  /*    in most-recently-used order, and flushing old nodes to make room   */
-  /*    for new ones.                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FTC_Manager
+   *
+   * @description:
+   *   This object corresponds to one instance of the cache-subsystem.
+   *   It is used to cache one or more @FT_Face objects, along with
+   *   corresponding @FT_Size objects.
+   *
+   *   The manager intentionally limits the total number of opened
+   *   @FT_Face and @FT_Size objects to control memory usage.  See the
+   *   `max_faces' and `max_sizes' parameters of @FTC_Manager_New.
+   *
+   *   The manager is also used to cache `nodes' of various types while
+   *   limiting their total memory usage.
+   *
+   *   All limitations are enforced by keeping lists of managed objects
+   *   in most-recently-used order, and flushing old nodes to make room
+   *   for new ones.
+   */
   typedef struct FTC_ManagerRec_*  FTC_Manager;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FTC_Node                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An opaque handle to a cache node object.  Each cache node is       */
-  /*    reference-counted.  A node with a count of~0 might be flushed      */
-  /*    out of a full cache whenever a lookup request is performed.        */
-  /*                                                                       */
-  /*    If you look up nodes, you have the ability to `acquire' them,      */
-  /*    i.e., to increment their reference count.  This will prevent the   */
-  /*    node from being flushed out of the cache until you explicitly      */
-  /*    `release' it (see @FTC_Node_Unref).                                */
-  /*                                                                       */
-  /*    See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup.         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FTC_Node
+   *
+   * @description:
+   *   An opaque handle to a cache node object.  Each cache node is
+   *   reference-counted.  A node with a count of~0 might be flushed
+   *   out of a full cache whenever a lookup request is performed.
+   *
+   *   If you look up nodes, you have the ability to `acquire' them,
+   *   i.e., to increment their reference count.  This will prevent the
+   *   node from being flushed out of the cache until you explicitly
+   *   `release' it (see @FTC_Node_Unref).
+   *
+   *   See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup.
+   */
   typedef struct FTC_NodeRec_*  FTC_Node;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_Manager_New                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new cache manager.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library   :: The parent FreeType library handle to use.            */
-  /*                                                                       */
-  /*    max_faces :: Maximum number of opened @FT_Face objects managed by  */
-  /*                 this cache instance.  Use~0 for defaults.             */
-  /*                                                                       */
-  /*    max_sizes :: Maximum number of opened @FT_Size objects managed by  */
-  /*                 this cache instance.  Use~0 for defaults.             */
-  /*                                                                       */
-  /*    max_bytes :: Maximum number of bytes to use for cached data nodes. */
-  /*                 Use~0 for defaults.  Note that this value does not    */
-  /*                 account for managed @FT_Face and @FT_Size objects.    */
-  /*                                                                       */
-  /*    requester :: An application-provided callback used to translate    */
-  /*                 face IDs into real @FT_Face objects.                  */
-  /*                                                                       */
-  /*    req_data  :: A generic pointer that is passed to the requester     */
-  /*                 each time it is called (see @FTC_Face_Requester).     */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    amanager  :: A handle to a new manager object.  0~in case of       */
-  /*                 failure.                                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_Manager_New
+   *
+   * @description:
+   *   Create a new cache manager.
+   *
+   * @input:
+   *   library ::
+   *     The parent FreeType library handle to use.
+   *
+   *   max_faces ::
+   *     Maximum number of opened @FT_Face objects managed by
+   *     this cache instance.  Use~0 for defaults.
+   *
+   *   max_sizes ::
+   *     Maximum number of opened @FT_Size objects managed by
+   *     this cache instance.  Use~0 for defaults.
+   *
+   *   max_bytes ::
+   *     Maximum number of bytes to use for cached data nodes.
+   *     Use~0 for defaults.  Note that this value does not
+   *     account for managed @FT_Face and @FT_Size objects.
+   *
+   *   requester ::
+   *     An application-provided callback used to translate
+   *     face IDs into real @FT_Face objects.
+   *
+   *   req_data ::
+   *     A generic pointer that is passed to the requester
+   *     each time it is called (see @FTC_Face_Requester).
+   *
+   * @output:
+   *   amanager ::
+   *     A handle to a new manager object.  0~in case of
+   *     failure.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FTC_Manager_New( FT_Library          library,
                    FT_UInt             max_faces,
@@ -314,114 +322,125 @@
                    FTC_Manager        *amanager );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_Manager_Reset                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Empty a given cache manager.  This simply gets rid of all the      */
-  /*    currently cached @FT_Face and @FT_Size objects within the manager. */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    manager :: A handle to the manager.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_Manager_Reset
+   *
+   * @description:
+   *   Empty a given cache manager.  This simply gets rid of all the
+   *   currently cached @FT_Face and @FT_Size objects within the manager.
+   *
+   * @inout:
+   *   manager ::
+   *     A handle to the manager.
+   */
   FT_EXPORT( void )
   FTC_Manager_Reset( FTC_Manager  manager );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_Manager_Done                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy a given manager after emptying it.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    manager :: A handle to the target cache manager object.            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_Manager_Done
+   *
+   * @description:
+   *   Destroy a given manager after emptying it.
+   *
+   * @input:
+   *   manager ::
+   *     A handle to the target cache manager object.
+   */
   FT_EXPORT( void )
   FTC_Manager_Done( FTC_Manager  manager );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_Manager_LookupFace                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the @FT_Face object that corresponds to a given face ID   */
-  /*    through a cache manager.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    manager :: A handle to the cache manager.                          */
-  /*                                                                       */
-  /*    face_id :: The ID of the face object.                              */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aface   :: A handle to the face object.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The returned @FT_Face object is always owned by the manager.  You  */
-  /*    should never try to discard it yourself.                           */
-  /*                                                                       */
-  /*    The @FT_Face object doesn't necessarily have a current size object */
-  /*    (i.e., face->size can be~0).  If you need a specific `font size',  */
-  /*    use @FTC_Manager_LookupSize instead.                               */
-  /*                                                                       */
-  /*    Never change the face's transformation matrix (i.e., never call    */
-  /*    the @FT_Set_Transform function) on a returned face!  If you need   */
-  /*    to transform glyphs, do it yourself after glyph loading.           */
-  /*                                                                       */
-  /*    When you perform a lookup, out-of-memory errors are detected       */
-  /*    _within_ the lookup and force incremental flushes of the cache     */
-  /*    until enough memory is released for the lookup to succeed.         */
-  /*                                                                       */
-  /*    If a lookup fails with `FT_Err_Out_Of_Memory' the cache has        */
-  /*    already been completely flushed, and still no memory was available */
-  /*    for the operation.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_Manager_LookupFace
+   *
+   * @description:
+   *   Retrieve the @FT_Face object that corresponds to a given face ID
+   *   through a cache manager.
+   *
+   * @input:
+   *   manager ::
+   *     A handle to the cache manager.
+   *
+   *   face_id ::
+   *     The ID of the face object.
+   *
+   * @output:
+   *   aface ::
+   *     A handle to the face object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The returned @FT_Face object is always owned by the manager.  You
+   *   should never try to discard it yourself.
+   *
+   *   The @FT_Face object doesn't necessarily have a current size object
+   *   (i.e., face->size can be~0).  If you need a specific `font size',
+   *   use @FTC_Manager_LookupSize instead.
+   *
+   *   Never change the face's transformation matrix (i.e., never call
+   *   the @FT_Set_Transform function) on a returned face!  If you need
+   *   to transform glyphs, do it yourself after glyph loading.
+   *
+   *   When you perform a lookup, out-of-memory errors are detected
+   *   _within_ the lookup and force incremental flushes of the cache
+   *   until enough memory is released for the lookup to succeed.
+   *
+   *   If a lookup fails with `FT_Err_Out_Of_Memory' the cache has
+   *   already been completely flushed, and still no memory was available
+   *   for the operation.
+   */
   FT_EXPORT( FT_Error )
   FTC_Manager_LookupFace( FTC_Manager  manager,
                           FTC_FaceID   face_id,
                           FT_Face     *aface );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FTC_ScalerRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to describe a given character size in either      */
-  /*    pixels or points to the cache manager.  See                        */
-  /*    @FTC_Manager_LookupSize.                                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    face_id :: The source face ID.                                     */
-  /*                                                                       */
-  /*    width   :: The character width.                                    */
-  /*                                                                       */
-  /*    height  :: The character height.                                   */
-  /*                                                                       */
-  /*    pixel   :: A Boolean.  If 1, the `width' and `height' fields are   */
-  /*               interpreted as integer pixel character sizes.           */
-  /*               Otherwise, they are expressed as 1/64th of points.      */
-  /*                                                                       */
-  /*    x_res   :: Only used when `pixel' is value~0 to indicate the       */
-  /*               horizontal resolution in dpi.                           */
-  /*                                                                       */
-  /*    y_res   :: Only used when `pixel' is value~0 to indicate the       */
-  /*               vertical resolution in dpi.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This type is mainly used to retrieve @FT_Size objects through the  */
-  /*    cache manager.                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FTC_ScalerRec
+   *
+   * @description:
+   *   A structure used to describe a given character size in either
+   *   pixels or points to the cache manager.  See
+   *   @FTC_Manager_LookupSize.
+   *
+   * @fields:
+   *   face_id ::
+   *     The source face ID.
+   *
+   *   width ::
+   *     The character width.
+   *
+   *   height ::
+   *     The character height.
+   *
+   *   pixel ::
+   *     A Boolean.  If 1, the `width' and `height' fields are
+   *     interpreted as integer pixel character sizes.
+   *     Otherwise, they are expressed as 1/64th of points.
+   *
+   *   x_res ::
+   *     Only used when `pixel' is value~0 to indicate the
+   *     horizontal resolution in dpi.
+   *
+   *   y_res ::
+   *     Only used when `pixel' is value~0 to indicate the
+   *     vertical resolution in dpi.
+   *
+   * @note:
+   *   This type is mainly used to retrieve @FT_Size objects through the
+   *   cache manager.
+   */
   typedef struct  FTC_ScalerRec_
   {
     FTC_FaceID  face_id;
@@ -434,75 +453,80 @@
   } FTC_ScalerRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FTC_Scaler                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an @FTC_ScalerRec structure.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FTC_Scaler
+   *
+   * @description:
+   *   A handle to an @FTC_ScalerRec structure.
+   */
   typedef struct FTC_ScalerRec_*  FTC_Scaler;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_Manager_LookupSize                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the @FT_Size object that corresponds to a given           */
-  /*    @FTC_ScalerRec pointer through a cache manager.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    manager :: A handle to the cache manager.                          */
-  /*                                                                       */
-  /*    scaler  :: A scaler handle.                                        */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    asize   :: A handle to the size object.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The returned @FT_Size object is always owned by the manager.  You  */
-  /*    should never try to discard it by yourself.                        */
-  /*                                                                       */
-  /*    You can access the parent @FT_Face object simply as `size->face'   */
-  /*    if you need it.  Note that this object is also owned by the        */
-  /*    manager.                                                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    When you perform a lookup, out-of-memory errors are detected       */
-  /*    _within_ the lookup and force incremental flushes of the cache     */
-  /*    until enough memory is released for the lookup to succeed.         */
-  /*                                                                       */
-  /*    If a lookup fails with `FT_Err_Out_Of_Memory' the cache has        */
-  /*    already been completely flushed, and still no memory is available  */
-  /*    for the operation.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_Manager_LookupSize
+   *
+   * @description:
+   *   Retrieve the @FT_Size object that corresponds to a given
+   *   @FTC_ScalerRec pointer through a cache manager.
+   *
+   * @input:
+   *   manager ::
+   *     A handle to the cache manager.
+   *
+   *   scaler ::
+   *     A scaler handle.
+   *
+   * @output:
+   *   asize ::
+   *     A handle to the size object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The returned @FT_Size object is always owned by the manager.  You
+   *   should never try to discard it by yourself.
+   *
+   *   You can access the parent @FT_Face object simply as `size->face'
+   *   if you need it.  Note that this object is also owned by the
+   *   manager.
+   *
+   * @note:
+   *   When you perform a lookup, out-of-memory errors are detected
+   *   _within_ the lookup and force incremental flushes of the cache
+   *   until enough memory is released for the lookup to succeed.
+   *
+   *   If a lookup fails with `FT_Err_Out_Of_Memory' the cache has
+   *   already been completely flushed, and still no memory is available
+   *   for the operation.
+   */
   FT_EXPORT( FT_Error )
   FTC_Manager_LookupSize( FTC_Manager  manager,
                           FTC_Scaler   scaler,
                           FT_Size     *asize );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_Node_Unref                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Decrement a cache node's internal reference count.  When the count */
-  /*    reaches 0, it is not destroyed but becomes eligible for subsequent */
-  /*    cache flushes.                                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    node    :: The cache node handle.                                  */
-  /*                                                                       */
-  /*    manager :: The cache manager handle.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_Node_Unref
+   *
+   * @description:
+   *   Decrement a cache node's internal reference count.  When the count
+   *   reaches 0, it is not destroyed but becomes eligible for subsequent
+   *   cache flushes.
+   *
+   * @input:
+   *   node ::
+   *     The cache node handle.
+   *
+   *   manager ::
+   *     The cache manager handle.
+   */
   FT_EXPORT( void )
   FTC_Node_Unref( FTC_Node     node,
                   FTC_Manager  manager );
@@ -680,83 +704,90 @@
             (d1)->flags   == (d2)->flags   )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FTC_ImageCache                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a glyph image cache object.  They are designed to      */
-  /*    hold many distinct glyph images while not exceeding a certain      */
-  /*    memory threshold.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FTC_ImageCache
+   *
+   * @description:
+   *   A handle to a glyph image cache object.  They are designed to
+   *   hold many distinct glyph images while not exceeding a certain
+   *   memory threshold.
+   */
   typedef struct FTC_ImageCacheRec_*  FTC_ImageCache;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_ImageCache_New                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new glyph image cache.                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    manager :: The parent manager for the image cache.                 */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    acache  :: A handle to the new glyph image cache object.           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_ImageCache_New
+   *
+   * @description:
+   *   Create a new glyph image cache.
+   *
+   * @input:
+   *   manager ::
+   *     The parent manager for the image cache.
+   *
+   * @output:
+   *   acache ::
+   *     A handle to the new glyph image cache object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FTC_ImageCache_New( FTC_Manager      manager,
                       FTC_ImageCache  *acache );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_ImageCache_Lookup                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve a given glyph image from a glyph image cache.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    cache  :: A handle to the source glyph image cache.                */
-  /*                                                                       */
-  /*    type   :: A pointer to a glyph image type descriptor.              */
-  /*                                                                       */
-  /*    gindex :: The glyph index to retrieve.                             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aglyph :: The corresponding @FT_Glyph object.  0~in case of        */
-  /*              failure.                                                 */
-  /*                                                                       */
-  /*    anode  :: Used to return the address of the corresponding cache    */
-  /*              node after incrementing its reference count (see note    */
-  /*              below).                                                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The returned glyph is owned and managed by the glyph image cache.  */
-  /*    Never try to transform or discard it manually!  You can however    */
-  /*    create a copy with @FT_Glyph_Copy and modify the new one.          */
-  /*                                                                       */
-  /*    If `anode' is _not_ NULL, it receives the address of the cache     */
-  /*    node containing the glyph image, after increasing its reference    */
-  /*    count.  This ensures that the node (as well as the @FT_Glyph) will */
-  /*    always be kept in the cache until you call @FTC_Node_Unref to      */
-  /*    `release' it.                                                      */
-  /*                                                                       */
-  /*    If `anode' is NULL, the cache node is left unchanged, which means  */
-  /*    that the @FT_Glyph could be flushed out of the cache on the next   */
-  /*    call to one of the caching sub-system APIs.  Don't assume that it  */
-  /*    is persistent!                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_ImageCache_Lookup
+   *
+   * @description:
+   *   Retrieve a given glyph image from a glyph image cache.
+   *
+   * @input:
+   *   cache ::
+   *     A handle to the source glyph image cache.
+   *
+   *   type ::
+   *     A pointer to a glyph image type descriptor.
+   *
+   *   gindex ::
+   *     The glyph index to retrieve.
+   *
+   * @output:
+   *   aglyph ::
+   *     The corresponding @FT_Glyph object.  0~in case of
+   *     failure.
+   *
+   *   anode ::
+   *     Used to return the address of the corresponding cache
+   *     node after incrementing its reference count (see note
+   *     below).
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The returned glyph is owned and managed by the glyph image cache.
+   *   Never try to transform or discard it manually!  You can however
+   *   create a copy with @FT_Glyph_Copy and modify the new one.
+   *
+   *   If `anode' is _not_ NULL, it receives the address of the cache
+   *   node containing the glyph image, after increasing its reference
+   *   count.  This ensures that the node (as well as the @FT_Glyph) will
+   *   always be kept in the cache until you call @FTC_Node_Unref to
+   *   `release' it.
+   *
+   *   If `anode' is NULL, the cache node is left unchanged, which means
+   *   that the @FT_Glyph could be flushed out of the cache on the next
+   *   call to one of the caching sub-system APIs.  Don't assume that it
+   *   is persistent!
+   */
   FT_EXPORT( FT_Error )
   FTC_ImageCache_Lookup( FTC_ImageCache  cache,
                          FTC_ImageType   type,
@@ -765,54 +796,60 @@
                          FTC_Node       *anode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_ImageCache_LookupScaler                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec    */
-  /*    to specify the face ID and its size.                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    cache      :: A handle to the source glyph image cache.            */
-  /*                                                                       */
-  /*    scaler     :: A pointer to a scaler descriptor.                    */
-  /*                                                                       */
-  /*    load_flags :: The corresponding load flags.                        */
-  /*                                                                       */
-  /*    gindex     :: The glyph index to retrieve.                         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aglyph     :: The corresponding @FT_Glyph object.  0~in case of    */
-  /*                  failure.                                             */
-  /*                                                                       */
-  /*    anode      :: Used to return the address of the corresponding      */
-  /*                  cache node after incrementing its reference count    */
-  /*                  (see note below).                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The returned glyph is owned and managed by the glyph image cache.  */
-  /*    Never try to transform or discard it manually!  You can however    */
-  /*    create a copy with @FT_Glyph_Copy and modify the new one.          */
-  /*                                                                       */
-  /*    If `anode' is _not_ NULL, it receives the address of the cache     */
-  /*    node containing the glyph image, after increasing its reference    */
-  /*    count.  This ensures that the node (as well as the @FT_Glyph) will */
-  /*    always be kept in the cache until you call @FTC_Node_Unref to      */
-  /*    `release' it.                                                      */
-  /*                                                                       */
-  /*    If `anode' is NULL, the cache node is left unchanged, which means  */
-  /*    that the @FT_Glyph could be flushed out of the cache on the next   */
-  /*    call to one of the caching sub-system APIs.  Don't assume that it  */
-  /*    is persistent!                                                     */
-  /*                                                                       */
-  /*    Calls to @FT_Set_Char_Size and friends have no effect on cached    */
-  /*    glyphs; you should always use the FreeType cache API instead.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_ImageCache_LookupScaler
+   *
+   * @description:
+   *   A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec
+   *   to specify the face ID and its size.
+   *
+   * @input:
+   *   cache ::
+   *     A handle to the source glyph image cache.
+   *
+   *   scaler ::
+   *     A pointer to a scaler descriptor.
+   *
+   *   load_flags ::
+   *     The corresponding load flags.
+   *
+   *   gindex ::
+   *     The glyph index to retrieve.
+   *
+   * @output:
+   *   aglyph ::
+   *     The corresponding @FT_Glyph object.  0~in case of
+   *     failure.
+   *
+   *   anode ::
+   *     Used to return the address of the corresponding
+   *     cache node after incrementing its reference count
+   *     (see note below).
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The returned glyph is owned and managed by the glyph image cache.
+   *   Never try to transform or discard it manually!  You can however
+   *   create a copy with @FT_Glyph_Copy and modify the new one.
+   *
+   *   If `anode' is _not_ NULL, it receives the address of the cache
+   *   node containing the glyph image, after increasing its reference
+   *   count.  This ensures that the node (as well as the @FT_Glyph) will
+   *   always be kept in the cache until you call @FTC_Node_Unref to
+   *   `release' it.
+   *
+   *   If `anode' is NULL, the cache node is left unchanged, which means
+   *   that the @FT_Glyph could be flushed out of the cache on the next
+   *   call to one of the caching sub-system APIs.  Don't assume that it
+   *   is persistent!
+   *
+   *   Calls to @FT_Set_Char_Size and friends have no effect on cached
+   *   glyphs; you should always use the FreeType cache API instead.
+   */
   FT_EXPORT( FT_Error )
   FTC_ImageCache_LookupScaler( FTC_ImageCache  cache,
                                FTC_Scaler      scaler,
@@ -822,53 +859,63 @@
                                FTC_Node       *anode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FTC_SBit                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a small bitmap descriptor.  See the @FTC_SBitRec       */
-  /*    structure for details.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FTC_SBit
+   *
+   * @description:
+   *   A handle to a small bitmap descriptor.  See the @FTC_SBitRec
+   *   structure for details.
+   */
   typedef struct FTC_SBitRec_*  FTC_SBit;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FTC_SBitRec                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A very compact structure used to describe a small glyph bitmap.    */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    width     :: The bitmap width in pixels.                           */
-  /*                                                                       */
-  /*    height    :: The bitmap height in pixels.                          */
-  /*                                                                       */
-  /*    left      :: The horizontal distance from the pen position to the  */
-  /*                 left bitmap border (a.k.a. `left side bearing', or    */
-  /*                 `lsb').                                               */
-  /*                                                                       */
-  /*    top       :: The vertical distance from the pen position (on the   */
-  /*                 baseline) to the upper bitmap border (a.k.a. `top     */
-  /*                 side bearing').  The distance is positive for upwards */
-  /*                 y~coordinates.                                        */
-  /*                                                                       */
-  /*    format    :: The format of the glyph bitmap (monochrome or gray).  */
-  /*                                                                       */
-  /*    max_grays :: Maximum gray level value (in the range 1 to~255).     */
-  /*                                                                       */
-  /*    pitch     :: The number of bytes per bitmap line.  May be positive */
-  /*                 or negative.                                          */
-  /*                                                                       */
-  /*    xadvance  :: The horizontal advance width in pixels.               */
-  /*                                                                       */
-  /*    yadvance  :: The vertical advance height in pixels.                */
-  /*                                                                       */
-  /*    buffer    :: A pointer to the bitmap pixels.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FTC_SBitRec
+   *
+   * @description:
+   *   A very compact structure used to describe a small glyph bitmap.
+   *
+   * @fields:
+   *   width ::
+   *     The bitmap width in pixels.
+   *
+   *   height ::
+   *     The bitmap height in pixels.
+   *
+   *   left ::
+   *     The horizontal distance from the pen position to the
+   *     left bitmap border (a.k.a. `left side bearing', or
+   *     `lsb').
+   *
+   *   top ::
+   *     The vertical distance from the pen position (on the
+   *     baseline) to the upper bitmap border (a.k.a. `top
+   *     side bearing').  The distance is positive for upwards
+   *     y~coordinates.
+   *
+   *   format ::
+   *     The format of the glyph bitmap (monochrome or gray).
+   *
+   *   max_grays ::
+   *     Maximum gray level value (in the range 1 to~255).
+   *
+   *   pitch ::
+   *     The number of bytes per bitmap line.  May be positive
+   *     or negative.
+   *
+   *   xadvance ::
+   *     The horizontal advance width in pixels.
+   *
+   *   yadvance ::
+   *     The vertical advance height in pixels.
+   *
+   *   buffer ::
+   *     A pointer to the bitmap pixels.
+   */
   typedef struct  FTC_SBitRec_
   {
     FT_Byte   width;
@@ -887,87 +934,94 @@
   } FTC_SBitRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FTC_SBitCache                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a small bitmap cache.  These are special cache objects */
-  /*    used to store small glyph bitmaps (and anti-aliased pixmaps) in a  */
-  /*    much more efficient way than the traditional glyph image cache     */
-  /*    implemented by @FTC_ImageCache.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FTC_SBitCache
+   *
+   * @description:
+   *   A handle to a small bitmap cache.  These are special cache objects
+   *   used to store small glyph bitmaps (and anti-aliased pixmaps) in a
+   *   much more efficient way than the traditional glyph image cache
+   *   implemented by @FTC_ImageCache.
+   */
   typedef struct FTC_SBitCacheRec_*  FTC_SBitCache;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_SBitCache_New                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new cache to store small glyph bitmaps.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    manager :: A handle to the source cache manager.                   */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    acache  :: A handle to the new sbit cache.  NULL in case of error. */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_SBitCache_New
+   *
+   * @description:
+   *   Create a new cache to store small glyph bitmaps.
+   *
+   * @input:
+   *   manager ::
+   *     A handle to the source cache manager.
+   *
+   * @output:
+   *   acache ::
+   *     A handle to the new sbit cache.  NULL in case of error.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FTC_SBitCache_New( FTC_Manager     manager,
                      FTC_SBitCache  *acache );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_SBitCache_Lookup                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Look up a given small glyph bitmap in a given sbit cache and       */
-  /*    `lock' it to prevent its flushing from the cache until needed.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    cache  :: A handle to the source sbit cache.                       */
-  /*                                                                       */
-  /*    type   :: A pointer to the glyph image type descriptor.            */
-  /*                                                                       */
-  /*    gindex :: The glyph index.                                         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    sbit   :: A handle to a small bitmap descriptor.                   */
-  /*                                                                       */
-  /*    anode  :: Used to return the address of the corresponding cache    */
-  /*              node after incrementing its reference count (see note    */
-  /*              below).                                                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The small bitmap descriptor and its bit buffer are owned by the    */
-  /*    cache and should never be freed by the application.  They might    */
-  /*    as well disappear from memory on the next cache lookup, so don't   */
-  /*    treat them as persistent data.                                     */
-  /*                                                                       */
-  /*    The descriptor's `buffer' field is set to~0 to indicate a missing  */
-  /*    glyph bitmap.                                                      */
-  /*                                                                       */
-  /*    If `anode' is _not_ NULL, it receives the address of the cache     */
-  /*    node containing the bitmap, after increasing its reference count.  */
-  /*    This ensures that the node (as well as the image) will always be   */
-  /*    kept in the cache until you call @FTC_Node_Unref to `release' it.  */
-  /*                                                                       */
-  /*    If `anode' is NULL, the cache node is left unchanged, which means  */
-  /*    that the bitmap could be flushed out of the cache on the next      */
-  /*    call to one of the caching sub-system APIs.  Don't assume that it  */
-  /*    is persistent!                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_SBitCache_Lookup
+   *
+   * @description:
+   *   Look up a given small glyph bitmap in a given sbit cache and
+   *   `lock' it to prevent its flushing from the cache until needed.
+   *
+   * @input:
+   *   cache ::
+   *     A handle to the source sbit cache.
+   *
+   *   type ::
+   *     A pointer to the glyph image type descriptor.
+   *
+   *   gindex ::
+   *     The glyph index.
+   *
+   * @output:
+   *   sbit ::
+   *     A handle to a small bitmap descriptor.
+   *
+   *   anode ::
+   *     Used to return the address of the corresponding cache
+   *     node after incrementing its reference count (see note
+   *     below).
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The small bitmap descriptor and its bit buffer are owned by the
+   *   cache and should never be freed by the application.  They might
+   *   as well disappear from memory on the next cache lookup, so don't
+   *   treat them as persistent data.
+   *
+   *   The descriptor's `buffer' field is set to~0 to indicate a missing
+   *   glyph bitmap.
+   *
+   *   If `anode' is _not_ NULL, it receives the address of the cache
+   *   node containing the bitmap, after increasing its reference count.
+   *   This ensures that the node (as well as the image) will always be
+   *   kept in the cache until you call @FTC_Node_Unref to `release' it.
+   *
+   *   If `anode' is NULL, the cache node is left unchanged, which means
+   *   that the bitmap could be flushed out of the cache on the next
+   *   call to one of the caching sub-system APIs.  Don't assume that it
+   *   is persistent!
+   */
   FT_EXPORT( FT_Error )
   FTC_SBitCache_Lookup( FTC_SBitCache    cache,
                         FTC_ImageType    type,
@@ -976,53 +1030,59 @@
                         FTC_Node        *anode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_SBitCache_LookupScaler                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec     */
-  /*    to specify the face ID and its size.                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    cache      :: A handle to the source sbit cache.                   */
-  /*                                                                       */
-  /*    scaler     :: A pointer to the scaler descriptor.                  */
-  /*                                                                       */
-  /*    load_flags :: The corresponding load flags.                        */
-  /*                                                                       */
-  /*    gindex     :: The glyph index.                                     */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    sbit       :: A handle to a small bitmap descriptor.               */
-  /*                                                                       */
-  /*    anode      :: Used to return the address of the corresponding      */
-  /*                  cache node after incrementing its reference count    */
-  /*                  (see note below).                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The small bitmap descriptor and its bit buffer are owned by the    */
-  /*    cache and should never be freed by the application.  They might    */
-  /*    as well disappear from memory on the next cache lookup, so don't   */
-  /*    treat them as persistent data.                                     */
-  /*                                                                       */
-  /*    The descriptor's `buffer' field is set to~0 to indicate a missing  */
-  /*    glyph bitmap.                                                      */
-  /*                                                                       */
-  /*    If `anode' is _not_ NULL, it receives the address of the cache     */
-  /*    node containing the bitmap, after increasing its reference count.  */
-  /*    This ensures that the node (as well as the image) will always be   */
-  /*    kept in the cache until you call @FTC_Node_Unref to `release' it.  */
-  /*                                                                       */
-  /*    If `anode' is NULL, the cache node is left unchanged, which means  */
-  /*    that the bitmap could be flushed out of the cache on the next      */
-  /*    call to one of the caching sub-system APIs.  Don't assume that it  */
-  /*    is persistent!                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FTC_SBitCache_LookupScaler
+   *
+   * @description:
+   *   A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec
+   *   to specify the face ID and its size.
+   *
+   * @input:
+   *   cache ::
+   *     A handle to the source sbit cache.
+   *
+   *   scaler ::
+   *     A pointer to the scaler descriptor.
+   *
+   *   load_flags ::
+   *     The corresponding load flags.
+   *
+   *   gindex ::
+   *     The glyph index.
+   *
+   * @output:
+   *   sbit ::
+   *     A handle to a small bitmap descriptor.
+   *
+   *   anode ::
+   *     Used to return the address of the corresponding
+   *     cache node after incrementing its reference count
+   *     (see note below).
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The small bitmap descriptor and its bit buffer are owned by the
+   *   cache and should never be freed by the application.  They might
+   *   as well disappear from memory on the next cache lookup, so don't
+   *   treat them as persistent data.
+   *
+   *   The descriptor's `buffer' field is set to~0 to indicate a missing
+   *   glyph bitmap.
+   *
+   *   If `anode' is _not_ NULL, it receives the address of the cache
+   *   node containing the bitmap, after increasing its reference count.
+   *   This ensures that the node (as well as the image) will always be
+   *   kept in the cache until you call @FTC_Node_Unref to `release' it.
+   *
+   *   If `anode' is NULL, the cache node is left unchanged, which means
+   *   that the bitmap could be flushed out of the cache on the next
+   *   call to one of the caching sub-system APIs.  Don't assume that it
+   *   is persistent!
+   */
   FT_EXPORT( FT_Error )
   FTC_SBitCache_LookupScaler( FTC_SBitCache  cache,
                               FTC_Scaler     scaler,
diff --git a/include/freetype/ftchapters.h b/include/freetype/ftchapters.h
index 51257bb..f4297d3 100644
--- a/include/freetype/ftchapters.h
+++ b/include/freetype/ftchapters.h
@@ -1,139 +1,145 @@
-/***************************************************************************/
-/*                                                                         */
-/* This file defines the structure of the FreeType reference.              */
-/* It is used by the python script that generates the HTML files.          */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * This file defines the structure of the FreeType reference.
+ * It is used by the python script that generates the HTML files.
+ *
+ */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    general_remarks                                                      */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    General Remarks                                                      */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    header_inclusion                                                     */
-/*    user_allocation                                                      */
-/*                                                                         */
-/***************************************************************************/
+  /****************************************************************************
+   *
+   * @chapter:
+   *   general_remarks
+   *
+   * @title:
+   *   General Remarks
+   *
+   * @sections:
+   *   header_inclusion
+   *   user_allocation
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    core_api                                                             */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Core API                                                             */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    version                                                              */
-/*    basic_types                                                          */
-/*    base_interface                                                       */
-/*    glyph_variants                                                       */
-/*    glyph_management                                                     */
-/*    mac_specific                                                         */
-/*    sizes_management                                                     */
-/*    header_file_macros                                                   */
-/*                                                                         */
-/***************************************************************************/
+  /****************************************************************************
+   *
+   * @chapter:
+   *   core_api
+   *
+   * @title:
+   *   Core API
+   *
+   * @sections:
+   *   version
+   *   basic_types
+   *   base_interface
+   *   glyph_variants
+   *   color_management
+   *   layer_management
+   *   glyph_management
+   *   mac_specific
+   *   sizes_management
+   *   header_file_macros
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    format_specific                                                      */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Format-Specific API                                                  */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    multiple_masters                                                     */
-/*    truetype_tables                                                      */
-/*    type1_tables                                                         */
-/*    sfnt_names                                                           */
-/*    bdf_fonts                                                            */
-/*    cid_fonts                                                            */
-/*    pfr_fonts                                                            */
-/*    winfnt_fonts                                                         */
-/*    font_formats                                                         */
-/*    gasp_table                                                           */
-/*                                                                         */
-/***************************************************************************/
+  /****************************************************************************
+   *
+   * @chapter:
+   *   format_specific
+   *
+   * @title:
+   *   Format-Specific API
+   *
+   * @sections:
+   *   multiple_masters
+   *   truetype_tables
+   *   type1_tables
+   *   sfnt_names
+   *   bdf_fonts
+   *   cid_fonts
+   *   pfr_fonts
+   *   winfnt_fonts
+   *   font_formats
+   *   gasp_table
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    module_specific                                                      */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Controlling FreeType Modules                                         */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    auto_hinter                                                          */
-/*    cff_driver                                                           */
-/*    t1_cid_driver                                                        */
-/*    tt_driver                                                            */
-/*    pcf_driver                                                           */
-/*    properties                                                           */
-/*    parameter_tags                                                       */
-/*                                                                         */
-/***************************************************************************/
+  /****************************************************************************
+   *
+   * @chapter:
+   *   module_specific
+   *
+   * @title:
+   *   Controlling FreeType Modules
+   *
+   * @sections:
+   *   auto_hinter
+   *   cff_driver
+   *   t1_cid_driver
+   *   tt_driver
+   *   pcf_driver
+   *   properties
+   *   parameter_tags
+   *   lcd_rendering
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    cache_subsystem                                                      */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Cache Sub-System                                                     */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    cache_subsystem                                                      */
-/*                                                                         */
-/***************************************************************************/
+  /****************************************************************************
+   *
+   * @chapter:
+   *   cache_subsystem
+   *
+   * @title:
+   *   Cache Sub-System
+   *
+   * @sections:
+   *   cache_subsystem
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    support_api                                                          */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Support API                                                          */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    computations                                                         */
-/*    list_processing                                                      */
-/*    outline_processing                                                   */
-/*    quick_advance                                                        */
-/*    bitmap_handling                                                      */
-/*    raster                                                               */
-/*    glyph_stroker                                                        */
-/*    system_interface                                                     */
-/*    module_management                                                    */
-/*    gzip                                                                 */
-/*    lzw                                                                  */
-/*    bzip2                                                                */
-/*    lcd_filtering                                                        */
-/*                                                                         */
-/***************************************************************************/
+  /****************************************************************************
+   *
+   * @chapter:
+   *   support_api
+   *
+   * @title:
+   *   Support API
+   *
+   * @sections:
+   *   computations
+   *   list_processing
+   *   outline_processing
+   *   quick_advance
+   *   bitmap_handling
+   *   raster
+   *   glyph_stroker
+   *   system_interface
+   *   module_management
+   *   gzip
+   *   lzw
+   *   bzip2
+   *
+   */
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    error_codes                                                          */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Error Codes                                                          */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    error_enumerations                                                   */
-/*    error_code_values                                                    */
-/*                                                                         */
-/***************************************************************************/
+
+  /****************************************************************************
+   *
+   * @chapter:
+   *   error_codes
+   *
+   * @title:
+   *   Error Codes
+   *
+   * @sections:
+   *   error_enumerations
+   *   error_code_values
+   *
+   */
+
+
+/* END */
diff --git a/include/freetype/ftcid.h b/include/freetype/ftcid.h
index 5e9100a..b427cbd 100644
--- a/include/freetype/ftcid.h
+++ b/include/freetype/ftcid.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcid.h                                                                */
-/*                                                                         */
-/*    FreeType API for accessing CID font information (specification).     */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Dereg Clegg and Michael Toftdal.                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcid.h
+ *
+ *   FreeType API for accessing CID font information (specification).
+ *
+ * Copyright 2007-2018 by
+ * Dereg Clegg and Michael Toftdal.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTCID_H_
@@ -32,22 +32,22 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    cid_fonts                                                          */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    CID Fonts                                                          */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    CID-keyed font specific API.                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of CID-keyed font specific   */
-  /*    functions.                                                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   cid_fonts
+   *
+   * @title:
+   *   CID Fonts
+   *
+   * @abstract:
+   *   CID-keyed font-specific API.
+   *
+   * @description:
+   *   This section contains the declaration of CID-keyed font-specific
+   *   functions.
+   *
+   */
 
 
   /**********************************************************************
@@ -61,17 +61,17 @@
    *
    * @input:
    *    face ::
-   *       A handle to the input face.
+   *      A handle to the input face.
    *
    * @output:
    *    registry ::
-   *       The registry, as a C~string, owned by the face.
+   *      The registry, as a C~string, owned by the face.
    *
    *    ordering ::
-   *       The ordering, as a C~string, owned by the face.
+   *      The ordering, as a C~string, owned by the face.
    *
    *    supplement ::
-   *       The supplement.
+   *      The supplement.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -102,11 +102,11 @@
    *
    * @input:
    *    face ::
-   *       A handle to the input face.
+   *      A handle to the input face.
    *
    * @output:
    *    is_cid ::
-   *       The type of the face as an @FT_Bool.
+   *      The type of the face as an @FT_Bool.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -133,14 +133,14 @@
    *
    * @input:
    *    face ::
-   *       A handle to the input face.
+   *      A handle to the input face.
    *
    *    glyph_index ::
-   *       The input glyph index.
+   *      The input glyph index.
    *
    * @output:
    *    cid ::
-   *       The CID as an @FT_UInt.
+   *      The CID as an @FT_UInt.
    *
    * @return:
    *    FreeType error code.  0~means success.
diff --git a/include/freetype/ftcolor.h b/include/freetype/ftcolor.h
new file mode 100644
index 0000000..e4fa4af
--- /dev/null
+++ b/include/freetype/ftcolor.h
@@ -0,0 +1,315 @@
+/****************************************************************************
+ *
+ * ftcolor.h
+ *
+ *   FreeType's glyph color management (specification).
+ *
+ * Copyright 2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
+
+
+#ifndef FTCOLOR_H_
+#define FTCOLOR_H_
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+
+#ifdef FREETYPE_H
+#error "freetype.h of FreeType 1 has been loaded!"
+#error "Please fix the directory search order for header files"
+#error "so that freetype.h of FreeType 2 is found first."
+#endif
+
+
+FT_BEGIN_HEADER
+
+
+  /**************************************************************************
+   *
+   * @section:
+   *   color_management
+   *
+   * @title:
+   *   Glyph Color Management
+   *
+   * @abstract:
+   *   Retrieving and manipulating OpenType's `CPAL' table data.
+   *
+   * @description:
+   *   The functions described here allow access and manipulation of color
+   *   palette entries in OpenType's `CPAL' tables.
+   */
+
+
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Color
+   *
+   * @description:
+   *   This structure models a BGRA color value of a `CPAL' palette entry.
+   *
+   *   The used color space is sRGB; the colors are not pre-multiplied, and
+   *   alpha values must be explicitly set.
+   *
+   * @fields:
+   *   blue ::
+   *     Blue value.
+   *
+   *   green ::
+   *     Green value.
+   *
+   *   red ::
+   *     Red value.
+   *
+   *   alpha ::
+   *     Alpha value, giving the red, green, and blue color's opacity.
+   *
+   * @since:
+   *   2.10
+   */
+  typedef struct  FT_Color_
+  {
+    FT_Byte  blue;
+    FT_Byte  green;
+    FT_Byte  red;
+    FT_Byte  alpha;
+
+  } FT_Color;
+
+
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_PALETTE_XXX
+   *
+   * @description:
+   *   A list of bit field constants used in the `palette_flags' array of
+   *   the @FT_Palette_Data structure to indicate for which background a
+   *   palette with a given index is usable.
+   *
+   * @values:
+   *   FT_PALETTE_FOR_LIGHT_BACKGROUND ::
+   *     The palette is appropriate to use when displaying the font on a
+   *     light background such as white.
+   *
+   *   FT_PALETTE_FOR_DARK_BACKGROUND ::
+   *     The palette is appropriate to use when displaying the font on a
+   *     dark background such as black.
+   *
+   * @since:
+   *   2.10
+   */
+#define FT_PALETTE_FOR_LIGHT_BACKGROUND  0x01
+#define FT_PALETTE_FOR_DARK_BACKGROUND   0x02
+
+
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Palette_Data
+   *
+   * @description:
+   *   This structure holds the data of the `CPAL' table.
+   *
+   * @fields:
+   *   num_palettes ::
+   *     The number of palettes.
+   *
+   *   palette_name_ids ::
+   *     A read-only array of palette name IDs with `num_palettes' elements,
+   *     corresponding to entries like `dark' or `light' in the font's
+   *     `name' table.
+   *
+   *     An empty name ID in the `CPAL' table gets represented as value
+   *     0xFFFF.
+   *
+   *     NULL if the font's `CPAL' table doesn't contain appropriate data.
+   *
+   *   palette_flags ::
+   *     A read-only array of palette flags with `num_palettes' elements.
+   *     Possible values are an ORed combination of
+   *     @FT_PALETTE_FOR_LIGHT_BACKGROUND and
+   *     @FT_PALETTE_FOR_DARK_BACKGROUND.
+   *
+   *     NULL if the font's `CPAL' table doesn't contain appropriate data.
+   *
+   *   num_palette_entries ::
+   *     The number of entries in a single palette.  All palettes have the
+   *     same size.
+   *
+   *   palette_entry_name_ids ::
+   *     A read-only array of palette entry name IDs with
+   *     `num_palette_entries'.  In each palette, entries with the same
+   *     index have the same function.  For example, index~0 might
+   *     correspond to string `outline' in the font's `name' table to
+   *     indicate that this palette entry is used for outlines, index~1
+   *     might correspond to `fill' to indicate the filling color palette
+   *     entry, etc.
+   *
+   *     An empty entry name ID in the `CPAL' table gets represented as
+   *     value 0xFFFF.
+   *
+   *     NULL if the font's `CPAL' table doesn't contain appropriate data.
+   *
+   * @note:
+   *   Use function @FT_Get_Sfnt_Name to map name IDs and entry name IDs to
+   *   name strings.
+   *
+   * @since:
+   *   2.10
+   */
+  typedef struct  FT_Palette_Data_ {
+    FT_UShort         num_palettes;
+    const FT_UShort*  palette_name_ids;
+    const FT_UShort*  palette_flags;
+
+    FT_UShort         num_palette_entries;
+    const FT_UShort*  palette_entry_name_ids;
+
+  } FT_Palette_Data;
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Palette_Data_Get
+   *
+   * @description:
+   *   Retrieve the face's color palette data.
+   *
+   * @input:
+   *   face ::
+   *     The source face handle.
+   *
+   * @output:
+   *   apalette ::
+   *     A pointer to an @FT_Palette_Data structure.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   All arrays in the returned @FT_Palette_Data structure are read-only.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_COLOR_LAYERS' is not defined in `ftoption.h'.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Palette_Data_Get( FT_Face           face,
+                       FT_Palette_Data  *apalette );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Palette_Select
+   *
+   * @description:
+   *   This function has two purposes.
+   *
+   *   (1) It activates a palette for rendering color glyphs, and
+   *
+   *   (2) it retrieves all (unmodified) color entries of this palette.  This
+   *       function returns a read-write array, which means that a calling
+   *       application can modify the palette entries on demand.
+   *
+   * A corollary of (2) is that calling the function, then modifying some
+   * values, then calling the function again with the same arguments resets
+   * all color entries to the original `CPAL' values; all user modifications
+   * are lost.
+   *
+   * @input:
+   *   face ::
+   *     The source face handle.
+   *
+   *   palette_index ::
+   *     The palette index.
+   *
+   * @output:
+   *   apalette ::
+   *     An array of color entries for a palette with index `palette_index'.
+   *     If `apalette' is set to NULL, no array gets returned (and no color
+   *     entries can be modified).
+   *
+   *     In case the font doesn't support color palettes, NULL is returned.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The number of color entries is given by the `num_palette_entries'
+   *   field in the @FT_Palette_Data structure.
+   *
+   *   The array pointed to by `apalette_entries' is owned and managed by
+   *   FreeType.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_COLOR_LAYERS' is not defined in `ftoption.h'.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Palette_Select( FT_Face     face,
+                     FT_UShort   palette_index,
+                     FT_Color*  *apalette );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Palette_Set_Foreground_Color
+   *
+   * @description:
+   *   `COLR' uses palette index 0xFFFF to indicate a `text foreground
+   *   color'.  This function sets this value.
+   *
+   * @input:
+   *   face ::
+   *     The source face handle.
+   *
+   *   foreground_color ::
+   *     An `FT_Color' structure to define the text foreground color.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   If this function isn't called, the text foreground color is set to
+   *   white opaque (BGRA value 0xFFFFFFFF) if
+   *   @FT_PALETTE_FOR_DARK_BACKGROUND is present for the current
+   *   palette, and black opaque (BGRA value 0x000000FF) otherwise,
+   *   including the case that no palette types are available in the `CPAL'
+   *   table.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_COLOR_LAYERS' is not defined in `ftoption.h'.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Palette_Set_Foreground_Color( FT_Face   face,
+                                   FT_Color  foreground_color );
+
+  /* */
+
+
+FT_END_HEADER
+
+#endif /* FTCOLOR_H_ */
+
+
+/* END */
diff --git a/include/freetype/ftdriver.h b/include/freetype/ftdriver.h
index 02d104d..b0a53d6 100644
--- a/include/freetype/ftdriver.h
+++ b/include/freetype/ftdriver.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdriver.h                                                             */
-/*                                                                         */
-/*    FreeType API for controlling driver modules (specification only).    */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdriver.h
+ *
+ *   FreeType API for controlling driver modules (specification only).
+ *
+ * Copyright 2017-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTDRIVER_H_
@@ -111,9 +111,9 @@
    *
    *   One of the reasons to not hint horizontally is antialiasing for LCD
    *   screens: The pixel geometry of modern displays supplies three
-   *   vertical sub-pixels as the eye moves horizontally across each visible
+   *   vertical subpixels as the eye moves horizontally across each visible
    *   pixel.  On devices where we can be certain this characteristic is
-   *   present a rasterizer can take advantage of the sub-pixels to add
+   *   present a rasterizer can take advantage of the subpixels to add
    *   increments of weight.  In Western writing systems this turns out to
    *   be the more critical direction anyway; the weights and spacing of
    *   vertical stems (see above) are central to Armenian, Cyrillic, Greek,
@@ -371,6 +371,13 @@
    *   `freetype' if T1_CONFIG_OPTION_OLD_ENGINE is defined, and `adobe'
    *   otherwise.
    *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   This property can be set via the `FREETYPE_PROPERTIES' environment
+   *   variable (using values `adobe' or `freetype').
+   *
+   * @example:
    *   The following example code demonstrates how to select Adobe's hinting
    *   engine for the `cff' module (omitting the error handling).
    *
@@ -385,12 +392,6 @@
    *                               "hinting-engine", &hinting_engine );
    *   }
    *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values `adobe' or `freetype').
-   *
    * @since:
    *   2.4.12 (for `cff' module)
    *
@@ -428,7 +429,7 @@
    *   at smaller sizes.
    *
    *   By default, the Adobe engines for CFF, Type~1, and CID fonts darken
-   *   stems at smaller sizes, regardless of hinting, to enhance contrast. 
+   *   stems at smaller sizes, regardless of hinting, to enhance contrast.
    *   Setting this property, stem darkening gets switched off.
    *
    *   For the auto-hinter, stem-darkening is experimental currently and
@@ -442,6 +443,15 @@
    *   Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is
    *   set.
    *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   This property can be set via the `FREETYPE_PROPERTIES' environment
+   *   variable (using values 1 and 0 for `on' and `off', respectively).
+   *   It can also be set per face using @FT_Face_Properties with
+   *   @FT_PARAM_TAG_STEM_DARKENING.
+   *
+   * @example:
    *   {
    *     FT_Library  library;
    *     FT_Bool     no_stem_darkening = TRUE;
@@ -453,14 +463,6 @@
    *                               "no-stem-darkening", &no_stem_darkening );
    *   }
    *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values 1 and 0 for `on' and `off', respectively).
-   *   It can also be set per face using @FT_Face_Properties with
-   *   @FT_PARAM_TAG_STEM_DARKENING.
-   *
    * @since:
    *   2.4.12 (for `cff' module)
    *
@@ -492,22 +494,8 @@
    *   control points can be set with the macro
    *   `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'; the CFF, Type~1, and CID
    *   drivers share these values.  At runtime, the control points can be
-   *   changed using the `darkening-parameters' property, as the following
-   *   example demonstrates for the Type~1 driver.
-   *
-   *   {
-   *     FT_Library  library;
-   *     FT_Int      darken_params[8] = {  500, 300,   // x1, y1
-   *                                      1000, 200,   // x2, y2
-   *                                      1500, 100,   // x3, y3
-   *                                      2000,   0 }; // x4, y4
-   *
-   *
-   *     FT_Init_FreeType( &library );
-   *
-   *     FT_Property_Set( library, "type1",
-   *                               "darkening-parameters", darken_params );
-   *   }
+   *   changed using the `darkening-parameters' property (see the example
+   *   below that demonstrates this for the Type~1 driver).
    *
    *   The x~values give the stem width, and the y~values the darkening
    *   amount.  The unit is 1000th of pixels.  All coordinate values must be
@@ -531,6 +519,21 @@
    *     type1:darkening-parameters=500,300,1000,200,1500,100,2000,0
    *   }
    *
+   * @example:
+   *   {
+   *     FT_Library  library;
+   *     FT_Int      darken_params[8] = {  500, 300,   // x1, y1
+   *                                      1000, 200,   // x2, y2
+   *                                      1500, 100,   // x3, y3
+   *                                      2000,   0 }; // x4, y4
+   *
+   *
+   *     FT_Init_FreeType( &library );
+   *
+   *     FT_Property_Set( library, "type1",
+   *                               "darkening-parameters", darken_params );
+   *   }
+   *
    * @since:
    *   2.5.1 (for `cff' module)
    *
@@ -594,6 +597,13 @@
    *
    *   If `no-long-family-names' is set, this feature gets switched off.
    *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   This property can be set via the `FREETYPE_PROPERTIES' environment
+   *   variable (using values 1 and 0 for `on' and `off', respectively).
+   *
+   * @example:
    *   {
    *     FT_Library  library;
    *     FT_Bool     no_long_family_names = TRUE;
@@ -606,12 +616,6 @@
    *                               &no_long_family_names );
    *   }
    *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values 1 and 0 for `on' and `off', respectively).
-   *
    * @since:
    *   2.8
    */
@@ -778,6 +782,13 @@
    *   chosen interpreter, it simply ignores instructions on vertical stems
    *   to arrive at very similar results.
    *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   This property can be set via the `FREETYPE_PROPERTIES' environment
+   *   variable (using values `35', `38', or `40').
+   *
+   * @example:
    *   The following example code demonstrates how to deactivate subpixel
    *   hinting (omitting the error handling).
    *
@@ -794,12 +805,6 @@
    *                               &interpreter_version );
    *   }
    *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values `35', `38', or `40').
-   *
    * @since:
    *   2.5
    */
@@ -834,6 +839,7 @@
    *   the auto-hinter so that the global analysis of the font shapes
    *   actually uses the modified mapping.
    *
+   * @example:
    *   The following example code demonstrates how to access it (omitting
    *   the error handling).
    *
@@ -1026,17 +1032,6 @@
    *   @FT_AUTOHINTER_SCRIPT_CJK.  Using the `fallback-script' property,
    *   this fallback value can be changed.
    *
-   *   {
-   *     FT_Library  library;
-   *     FT_UInt     fallback_script = FT_AUTOHINTER_SCRIPT_NONE;
-   *
-   *
-   *     FT_Init_FreeType( &library );
-   *
-   *     FT_Property_Set( library, "autofitter",
-   *                               "fallback-script", &fallback_script );
-   *   }
-   *
    * @note:
    *   This property can be used with @FT_Property_Get also.
    *
@@ -1048,6 +1043,18 @@
    *   an @FT_Face structure but not loaded any glyph (using the
    *   auto-hinter), a change of the fallback script will affect this face.
    *
+   * @example:
+   *   {
+   *     FT_Library  library;
+   *     FT_UInt     fallback_script = FT_AUTOHINTER_SCRIPT_NONE;
+   *
+   *
+   *     FT_Init_FreeType( &library );
+   *
+   *     FT_Property_Set( library, "autofitter",
+   *                               "fallback-script", &fallback_script );
+   *   }
+   *
    * @since:
    *   2.4.11
    *
@@ -1074,17 +1081,6 @@
    *   By default, this is @FT_AUTOHINTER_SCRIPT_LATIN.  Using the
    *   `default-script' property, this default value can be changed.
    *
-   *   {
-   *     FT_Library  library;
-   *     FT_UInt     default_script = FT_AUTOHINTER_SCRIPT_NONE;
-   *
-   *
-   *     FT_Init_FreeType( &library );
-   *
-   *     FT_Property_Set( library, "autofitter",
-   *                               "default-script", &default_script );
-   *   }
-   *
    * @note:
    *   This property can be used with @FT_Property_Get also.
    *
@@ -1096,6 +1092,18 @@
    *   an @FT_Face structure but not loaded any glyph (using the
    *   auto-hinter), a change of the default script will affect this face.
    *
+   * @example:
+   *   {
+   *     FT_Library  library;
+   *     FT_UInt     default_script = FT_AUTOHINTER_SCRIPT_NONE;
+   *
+   *
+   *     FT_Init_FreeType( &library );
+   *
+   *     FT_Property_Set( library, "autofitter",
+   *                               "default-script", &default_script );
+   *   }
+   *
    * @since:
    *   2.5.3
    *
@@ -1114,6 +1122,13 @@
    *   this property to improve the legibility of small font sizes if
    *   necessary.
    *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   Set this value right after calling @FT_Set_Char_Size, but before
+   *   loading any glyph (using the auto-hinter).
+   *
+   * @example:
    *   {
    *     FT_Library               library;
    *     FT_Face                  face;
@@ -1131,12 +1146,6 @@
    *                               "increase-x-height", &prop );
    *   }
    *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   Set this value right after calling @FT_Set_Char_Size, but before
-   *   loading any glyph (using the auto-hinter).
-   *
    * @since:
    *   2.4.11
    *
@@ -1179,19 +1188,7 @@
    *   To find out a glyph's optimal scaling and shifting value, various
    *   parameter combinations are tried and scored.
    *
-   *   By default, warping is off.  The example below shows how to switch on
-   *   warping (omitting the error handling).
-   *
-   *   {
-   *     FT_Library  library;
-   *     FT_Bool     warping = 1;
-   *
-   *
-   *     FT_Init_FreeType( &library );
-   *
-   *     FT_Property_Set( library, "autofitter",
-   *                               "warping", &warping );
-   *   }
+   *   By default, warping is off.
    *
    * @note:
    *   This property can be used with @FT_Property_Get also.
@@ -1207,6 +1204,20 @@
    *   change its value before rendering any face.  Otherwise, you should
    *   reload all faces that get auto-hinted in `normal' hinting mode.
    *
+   * @example:
+   *   This example shows how to switch on warping (omitting the error
+   *   handling).
+   *
+   *   {
+   *     FT_Library  library;
+   *     FT_Bool     warping = 1;
+   *
+   *
+   *     FT_Init_FreeType( &library );
+   *
+   *     FT_Property_Set( library, "autofitter", "warping", &warping );
+   *   }
+   *
    * @since:
    *   2.6
    *
diff --git a/include/freetype/fterrdef.h b/include/freetype/fterrdef.h
index 8ffd346..3d91ed0 100644
--- a/include/freetype/fterrdef.h
+++ b/include/freetype/fterrdef.h
@@ -1,58 +1,58 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fterrdef.h                                                             */
-/*                                                                         */
-/*    FreeType error codes (specification).                                */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fterrdef.h
+ *
+ *   FreeType error codes (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   error_code_values                                                   */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*   Error Code Values                                                   */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*   All possible error codes returned by FreeType functions.            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   The list below is taken verbatim from the file `fterrdef.h'         */
-  /*   (loaded automatically by including `FT_FREETYPE_H').  The first     */
-  /*   argument of the `FT_ERROR_DEF_' macro is the error label; by        */
-  /*   default, the prefix `FT_Err_' gets added so that you get error      */
-  /*   names like `FT_Err_Cannot_Open_Resource'.  The second argument is   */
-  /*   the error code, and the last argument an error string, which is not */
-  /*   used by FreeType.                                                   */
-  /*                                                                       */
-  /*   Within your application you should *only* use error names and       */
-  /*   *never* its numeric values!  The latter might (and actually do)     */
-  /*   change in forthcoming FreeType versions.                            */
-  /*                                                                       */
-  /*   Macro `FT_NOERRORDEF_' defines `FT_Err_Ok', which is always zero.   */
-  /*   See the `Error Enumerations' subsection how to automatically        */
-  /*   generate a list of error strings.                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *  error_code_values
+   *
+   * @title:
+   *  Error Code Values
+   *
+   * @abstract:
+   *  All possible error codes returned by FreeType functions.
+   *
+   * @description:
+   *  The list below is taken verbatim from the file `fterrdef.h'
+   *  (loaded automatically by including `FT_FREETYPE_H').  The first
+   *  argument of the `FT_ERROR_DEF_' macro is the error label; by
+   *  default, the prefix `FT_Err_' gets added so that you get error
+   *  names like `FT_Err_Cannot_Open_Resource'.  The second argument is
+   *  the error code, and the last argument an error string, which is not
+   *  used by FreeType.
+   *
+   *  Within your application you should *only* use error names and
+   *  *never* its numeric values!  The latter might (and actually do)
+   *  change in forthcoming FreeType versions.
+   *
+   *  Macro `FT_NOERRORDEF_' defines `FT_Err_Ok', which is always zero.
+   *  See the `Error Enumerations' subsection how to automatically
+   *  generate a list of error strings.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Err_XXX                                                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Err_XXX
+   *
+   */
 
   /* generic errors */
 
diff --git a/include/freetype/fterrors.h b/include/freetype/fterrors.h
index f6ee5c2..d602bd5 100644
--- a/include/freetype/fterrors.h
+++ b/include/freetype/fterrors.h
@@ -1,101 +1,101 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fterrors.h                                                             */
-/*                                                                         */
-/*    FreeType error code handling (specification).                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fterrors.h
+ *
+ *   FreeType error code handling (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   error_enumerations                                                  */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*   Error Enumerations                                                  */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*   How to handle errors and error strings.                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   The header file `fterrors.h' (which is automatically included by    */
-  /*   `freetype.h' defines the handling of FreeType's enumeration         */
-  /*   constants.  It can also be used to generate error message strings   */
-  /*   with a small macro trick explained below.                           */
-  /*                                                                       */
-  /*   *Error* *Formats*                                                   */
-  /*                                                                       */
-  /*   The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be   */
-  /*   defined in `ftoption.h' in order to make the higher byte indicate   */
-  /*   the module where the error has happened (this is not compatible     */
-  /*   with standard builds of FreeType~2, however).  See the file         */
-  /*   `ftmoderr.h' for more details.                                      */
-  /*                                                                       */
-  /*   *Error* *Message* *Strings*                                         */
-  /*                                                                       */
-  /*   Error definitions are set up with special macros that allow client  */
-  /*   applications to build a table of error message strings.  The        */
-  /*   strings are not included in a normal build of FreeType~2 to save    */
-  /*   space (most client applications do not use them).                   */
-  /*                                                                       */
-  /*   To do so, you have to define the following macros before including  */
-  /*   this file.                                                          */
-  /*                                                                       */
-  /*   {                                                                   */
-  /*     FT_ERROR_START_LIST                                               */
-  /*   }                                                                   */
-  /*                                                                       */
-  /*   This macro is called before anything else to define the start of    */
-  /*   the error list.  It is followed by several FT_ERROR_DEF calls.      */
-  /*                                                                       */
-  /*   {                                                                   */
-  /*     FT_ERROR_DEF( e, v, s )                                           */
-  /*   }                                                                   */
-  /*                                                                       */
-  /*   This macro is called to define one single error.  `e' is the error  */
-  /*   code identifier (e.g., `Invalid_Argument'), `v' is the error's      */
-  /*   numerical value, and `s' is the corresponding error string.         */
-  /*                                                                       */
-  /*   {                                                                   */
-  /*     FT_ERROR_END_LIST                                                 */
-  /*   }                                                                   */
-  /*                                                                       */
-  /*   This macro ends the list.                                           */
-  /*                                                                       */
-  /*   Additionally, you have to undefine `FTERRORS_H_' before #including  */
-  /*   this file.                                                          */
-  /*                                                                       */
-  /*   Here is a simple example.                                           */
-  /*                                                                       */
-  /*   {                                                                   */
-  /*     #undef FTERRORS_H_                                                */
-  /*     #define FT_ERRORDEF( e, v, s )  { e, s },                         */
-  /*     #define FT_ERROR_START_LIST     {                                 */
-  /*     #define FT_ERROR_END_LIST       { 0, NULL } };                    */
-  /*                                                                       */
-  /*     const struct                                                      */
-  /*     {                                                                 */
-  /*       int          err_code;                                          */
-  /*       const char*  err_msg;                                           */
-  /*     } ft_errors[] =                                                   */
-  /*                                                                       */
-  /*     #include FT_ERRORS_H                                              */
-  /*   }                                                                   */
-  /*                                                                       */
-  /*   Note that `FT_Err_Ok' is _not_ defined with `FT_ERRORDEF' but with  */
-  /*   `FT_NOERRORDEF'; it is always zero.                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *  error_enumerations
+   *
+   * @title:
+   *  Error Enumerations
+   *
+   * @abstract:
+   *  How to handle errors and error strings.
+   *
+   * @description:
+   *  The header file `fterrors.h' (which is automatically included by
+   *  `freetype.h' defines the handling of FreeType's enumeration
+   *  constants.  It can also be used to generate error message strings
+   *  with a small macro trick explained below.
+   *
+   *  *Error* *Formats*
+   *
+   *  The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be
+   *  defined in `ftoption.h' in order to make the higher byte indicate
+   *  the module where the error has happened (this is not compatible
+   *  with standard builds of FreeType~2, however).  See the file
+   *  `ftmoderr.h' for more details.
+   *
+   *  *Error* *Message* *Strings*
+   *
+   *  Error definitions are set up with special macros that allow client
+   *  applications to build a table of error message strings.  The
+   *  strings are not included in a normal build of FreeType~2 to save
+   *  space (most client applications do not use them).
+   *
+   *  To do so, you have to define the following macros before including
+   *  this file.
+   *
+   *  {
+   *    FT_ERROR_START_LIST
+   *  }
+   *
+   *  This macro is called before anything else to define the start of
+   *  the error list.  It is followed by several FT_ERROR_DEF calls.
+   *
+   *  {
+   *    FT_ERROR_DEF( e, v, s )
+   *  }
+   *
+   *  This macro is called to define one single error.  `e' is the error
+   *  code identifier (e.g., `Invalid_Argument'), `v' is the error's
+   *  numerical value, and `s' is the corresponding error string.
+   *
+   *  {
+   *    FT_ERROR_END_LIST
+   *  }
+   *
+   *  This macro ends the list.
+   *
+   *  Additionally, you have to undefine `FTERRORS_H_' before #including
+   *  this file.
+   *
+   *  Here is a simple example.
+   *
+   *  {
+   *    #undef FTERRORS_H_
+   *    #define FT_ERRORDEF( e, v, s )  { e, s },
+   *    #define FT_ERROR_START_LIST     {
+   *    #define FT_ERROR_END_LIST       { 0, NULL } };
+   *
+   *    const struct
+   *    {
+   *      int          err_code;
+   *      const char*  err_msg;
+   *    } ft_errors[] =
+   *
+   *    #include FT_ERRORS_H
+   *  }
+   *
+   *  Note that `FT_Err_Ok' is _not_ defined with `FT_ERRORDEF' but with
+   *  `FT_NOERRORDEF'; it is always zero.
+   *
+   */
 
   /* */
 
diff --git a/include/freetype/ftfntfmt.h b/include/freetype/ftfntfmt.h
index cc86efa..3f3d410 100644
--- a/include/freetype/ftfntfmt.h
+++ b/include/freetype/ftfntfmt.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftfntfmt.h                                                             */
-/*                                                                         */
-/*    Support functions for font formats.                                  */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftfntfmt.h
+ *
+ *   Support functions for font formats.
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTFNTFMT_H_
@@ -32,49 +32,49 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   font_formats                                                        */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*   Font Formats                                                        */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*   Getting the font format.                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   The single function in this section can be used to get the font     */
-  /*   format.  Note that this information is not needed normally;         */
-  /*   however, there are special cases (like in PDF devices) where it is  */
-  /*   important to differentiate, in spite of FreeType's uniform API.     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *  font_formats
+   *
+   * @title:
+   *  Font Formats
+   *
+   * @abstract:
+   *  Getting the font format.
+   *
+   * @description:
+   *  The single function in this section can be used to get the font
+   *  format.  Note that this information is not needed normally;
+   *  however, there are special cases (like in PDF devices) where it is
+   *  important to differentiate, in spite of FreeType's uniform API.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*   FT_Get_Font_Format                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   Return a string describing the format of a given face.  Possible    */
-  /*   values are `TrueType', `Type~1', `BDF', `PCF', `Type~42',           */
-  /*   `CID~Type~1', `CFF', `PFR', and `Windows~FNT'.                      */
-  /*                                                                       */
-  /*   The return value is suitable to be used as an X11 FONT_PROPERTY.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*   face ::                                                             */
-  /*     Input face handle.                                                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*   Font format string.  NULL in case of error.                         */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*   A deprecated name for the same function is                          */
-  /*   `FT_Get_X11_Font_Format'.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *  FT_Get_Font_Format
+   *
+   * @description:
+   *  Return a string describing the format of a given face.  Possible
+   *  values are `TrueType', `Type~1', `BDF', `PCF', `Type~42',
+   *  `CID~Type~1', `CFF', `PFR', and `Windows~FNT'.
+   *
+   *  The return value is suitable to be used as an X11 FONT_PROPERTY.
+   *
+   * @input:
+   *  face ::
+   *    Input face handle.
+   *
+   * @return:
+   *  Font format string.  NULL in case of error.
+   *
+   * @note:
+   *  A deprecated name for the same function is
+   *  `FT_Get_X11_Font_Format'.
+   */
   FT_EXPORT( const char* )
   FT_Get_Font_Format( FT_Face  face );
 
diff --git a/include/freetype/ftgasp.h b/include/freetype/ftgasp.h
index 9b54fc8..605ff28 100644
--- a/include/freetype/ftgasp.h
+++ b/include/freetype/ftgasp.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgasp.h                                                               */
-/*                                                                         */
-/*    Access of TrueType's `gasp' table (specification).                   */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgasp.h
+ *
+ *   Access of TrueType's `gasp' table (specification).
+ *
+ * Copyright 2007-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTGASP_H_
@@ -29,6 +29,9 @@
 #endif
 
 
+FT_BEGIN_HEADER
+
+
   /***************************************************************************
    *
    * @section:
@@ -98,7 +101,7 @@
 
   /*************************************************************************
    *
-   * @func:
+   * @function:
    *   FT_Get_Gasp
    *
    * @description:
@@ -107,9 +110,11 @@
    *   character pixel size.
    *
    * @input:
-   *   face :: The source face handle.
+   *   face ::
+   *     The source face handle.
    *
-   *   ppem :: The vertical character pixel size.
+   *   ppem ::
+   *     The vertical character pixel size.
    *
    * @return:
    *   Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no
@@ -131,6 +136,8 @@
   /* */
 
 
+FT_END_HEADER
+
 #endif /* FTGASP_H_ */
 
 
diff --git a/include/freetype/ftglyph.h b/include/freetype/ftglyph.h
index 5f3fc00..be17a77 100644
--- a/include/freetype/ftglyph.h
+++ b/include/freetype/ftglyph.h
@@ -1,32 +1,32 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftglyph.h                                                              */
-/*                                                                         */
-/*    FreeType convenience functions to handle glyphs (specification).     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftglyph.h
+ *
+ *   FreeType convenience functions to handle glyphs (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file contains the definition of several convenience functions    */
-  /* that can be used by client applications to easily retrieve glyph      */
-  /* bitmaps and outlines from a given face.                               */
-  /*                                                                       */
-  /* These functions should be optional if you are writing a font server   */
-  /* or text layout engine on top of FreeType.  However, they are pretty   */
-  /* handy for many other simple uses of the library.                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file contains the definition of several convenience functions
+   * that can be used by client applications to easily retrieve glyph
+   * bitmaps and outlines from a given face.
+   *
+   * These functions should be optional if you are writing a font server
+   * or text layout engine on top of FreeType.  However, they are pretty
+   * handy for many other simple uses of the library.
+   *
+   */
 
 
 #ifndef FTGLYPH_H_
@@ -46,65 +46,69 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    glyph_management                                                   */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Glyph Management                                                   */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Generic interface to manage individual glyph data.                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains definitions used to manage glyph data        */
-  /*    through generic FT_Glyph objects.  Each of them can contain a      */
-  /*    bitmap, a vector outline, or even images in other formats.         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   glyph_management
+   *
+   * @title:
+   *   Glyph Management
+   *
+   * @abstract:
+   *   Generic interface to manage individual glyph data.
+   *
+   * @description:
+   *   This section contains definitions used to manage glyph data
+   *   through generic FT_Glyph objects.  Each of them can contain a
+   *   bitmap, a vector outline, or even images in other formats.
+   *
+   */
 
 
   /* forward declaration to a private type */
   typedef struct FT_Glyph_Class_  FT_Glyph_Class;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Glyph                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Handle to an object used to model generic glyph images.  It is a   */
-  /*    pointer to the @FT_GlyphRec structure and can contain a glyph      */
-  /*    bitmap or pointer.                                                 */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Glyph objects are not owned by the library.  You must thus release */
-  /*    them manually (through @FT_Done_Glyph) _before_ calling            */
-  /*    @FT_Done_FreeType.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Glyph
+   *
+   * @description:
+   *   Handle to an object used to model generic glyph images.  It is a
+   *   pointer to the @FT_GlyphRec structure and can contain a glyph
+   *   bitmap or pointer.
+   *
+   * @note:
+   *   Glyph objects are not owned by the library.  You must thus release
+   *   them manually (through @FT_Done_Glyph) _before_ calling
+   *   @FT_Done_FreeType.
+   */
   typedef struct FT_GlyphRec_*  FT_Glyph;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_GlyphRec                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The root glyph structure contains a given glyph image plus its     */
-  /*    advance width in 16.16 fixed-point format.                         */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    library :: A handle to the FreeType library object.                */
-  /*                                                                       */
-  /*    clazz   :: A pointer to the glyph's class.  Private.               */
-  /*                                                                       */
-  /*    format  :: The format of the glyph's image.                        */
-  /*                                                                       */
-  /*    advance :: A 16.16 vector that gives the glyph's advance width.    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_GlyphRec
+   *
+   * @description:
+   *   The root glyph structure contains a given glyph image plus its
+   *   advance width in 16.16 fixed-point format.
+   *
+   * @fields:
+   *   library ::
+   *     A handle to the FreeType library object.
+   *
+   *   clazz ::
+   *     A pointer to the glyph's class.  Private.
+   *
+   *   format ::
+   *     The format of the glyph's image.
+   *
+   *   advance ::
+   *     A 16.16 vector that gives the glyph's advance width.
+   */
   typedef struct  FT_GlyphRec_
   {
     FT_Library             library;
@@ -115,48 +119,52 @@
   } FT_GlyphRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_BitmapGlyph                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an object used to model a bitmap glyph image.  This is */
-  /*    a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_BitmapGlyph
+   *
+   * @description:
+   *   A handle to an object used to model a bitmap glyph image.  This is
+   *   a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.
+   */
   typedef struct FT_BitmapGlyphRec_*  FT_BitmapGlyph;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_BitmapGlyphRec                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used for bitmap glyph images.  This really is a        */
-  /*    `sub-class' of @FT_GlyphRec.                                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root   :: The root @FT_Glyph fields.                               */
-  /*                                                                       */
-  /*    left   :: The left-side bearing, i.e., the horizontal distance     */
-  /*              from the current pen position to the left border of the  */
-  /*              glyph bitmap.                                            */
-  /*                                                                       */
-  /*    top    :: The top-side bearing, i.e., the vertical distance from   */
-  /*              the current pen position to the top border of the glyph  */
-  /*              bitmap.  This distance is positive for upwards~y!        */
-  /*                                                                       */
-  /*    bitmap :: A descriptor for the bitmap.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have       */
-  /*    `glyph->format == FT_GLYPH_FORMAT_BITMAP'.  This lets you access   */
-  /*    the bitmap's contents easily.                                      */
-  /*                                                                       */
-  /*    The corresponding pixel buffer is always owned by @FT_BitmapGlyph  */
-  /*    and is thus created and destroyed with it.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_BitmapGlyphRec
+   *
+   * @description:
+   *   A structure used for bitmap glyph images.  This really is a
+   *   `sub-class' of @FT_GlyphRec.
+   *
+   * @fields:
+   *   root ::
+   *     The root @FT_Glyph fields.
+   *
+   *   left ::
+   *     The left-side bearing, i.e., the horizontal distance
+   *     from the current pen position to the left border of the
+   *     glyph bitmap.
+   *
+   *   top ::
+   *     The top-side bearing, i.e., the vertical distance from
+   *     the current pen position to the top border of the glyph
+   *     bitmap.  This distance is positive for upwards~y!
+   *
+   *   bitmap ::
+   *     A descriptor for the bitmap.
+   *
+   * @note:
+   *   You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have
+   *   `glyph->format == FT_GLYPH_FORMAT_BITMAP'.  This lets you access
+   *   the bitmap's contents easily.
+   *
+   *   The corresponding pixel buffer is always owned by @FT_BitmapGlyph
+   *   and is thus created and destroyed with it.
+   */
   typedef struct  FT_BitmapGlyphRec_
   {
     FT_GlyphRec  root;
@@ -167,44 +175,46 @@
   } FT_BitmapGlyphRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_OutlineGlyph                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an object used to model an outline glyph image.  This  */
-  /*    is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_OutlineGlyph
+   *
+   * @description:
+   *   A handle to an object used to model an outline glyph image.  This
+   *   is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec.
+   */
   typedef struct FT_OutlineGlyphRec_*  FT_OutlineGlyph;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_OutlineGlyphRec                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used for outline (vectorial) glyph images.  This       */
-  /*    really is a `sub-class' of @FT_GlyphRec.                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root    :: The root @FT_Glyph fields.                              */
-  /*                                                                       */
-  /*    outline :: A descriptor for the outline.                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have      */
-  /*    `glyph->format == FT_GLYPH_FORMAT_OUTLINE'.  This lets you access  */
-  /*    the outline's content easily.                                      */
-  /*                                                                       */
-  /*    As the outline is extracted from a glyph slot, its coordinates are */
-  /*    expressed normally in 26.6 pixels, unless the flag                 */
-  /*    @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */
-  /*                                                                       */
-  /*    The outline's tables are always owned by the object and are        */
-  /*    destroyed with it.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_OutlineGlyphRec
+   *
+   * @description:
+   *   A structure used for outline (vectorial) glyph images.  This
+   *   really is a `sub-class' of @FT_GlyphRec.
+   *
+   * @fields:
+   *   root ::
+   *     The root @FT_Glyph fields.
+   *
+   *   outline ::
+   *     A descriptor for the outline.
+   *
+   * @note:
+   *   You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have
+   *   `glyph->format == FT_GLYPH_FORMAT_OUTLINE'.  This lets you access
+   *   the outline's content easily.
+   *
+   *   As the outline is extracted from a glyph slot, its coordinates are
+   *   expressed normally in 26.6 pixels, unless the flag
+   *   @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char().
+   *
+   *   The outline's tables are always owned by the object and are
+   *   destroyed with it.
+   */
   typedef struct  FT_OutlineGlyphRec_
   {
     FT_GlyphRec  root;
@@ -213,113 +223,152 @@
   } FT_OutlineGlyphRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Glyph                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to extract a glyph image from a slot.  Note that   */
-  /*    the created @FT_Glyph object must be released with @FT_Done_Glyph. */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    slot   :: A handle to the source glyph slot.                       */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aglyph :: A handle to the glyph object.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Because `*aglyph->advance.x' and '*aglyph->advance.y' are 16.16    */
-  /*    fixed-point numbers, `slot->advance.x' and `slot->advance.y'       */
-  /*    (which are in 26.6 fixed-point format) must be in the range        */
-  /*    ]-32768;32768[.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Glyph
+   *
+   * @description:
+   *   A function used to create a new empty glyph image.  Note that the
+   *   created @FT_Glyph object must be released with @FT_Done_Glyph.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the FreeType library object.
+   *
+   *   format ::
+   *     The format of the glyph's image.
+   *
+   * @output:
+   *   aglyph ::
+   *     A handle to the glyph object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_New_Glyph( FT_Library       library,
+                FT_Glyph_Format  format,
+                FT_Glyph         *aglyph );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Glyph
+   *
+   * @description:
+   *   A function used to extract a glyph image from a slot.  Note that
+   *   the created @FT_Glyph object must be released with @FT_Done_Glyph.
+   *
+   * @input:
+   *   slot ::
+   *     A handle to the source glyph slot.
+   *
+   * @output:
+   *   aglyph ::
+   *     A handle to the glyph object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Because `*aglyph->advance.x' and `*aglyph->advance.y' are 16.16
+   *   fixed-point numbers, `slot->advance.x' and `slot->advance.y'
+   *   (which are in 26.6 fixed-point format) must be in the range
+   *   ]-32768;32768[.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Glyph( FT_GlyphSlot  slot,
                 FT_Glyph     *aglyph );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Glyph_Copy                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to copy a glyph image.  Note that the created      */
-  /*    @FT_Glyph object must be released with @FT_Done_Glyph.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    source :: A handle to the source glyph object.                     */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    target :: A handle to the target glyph object.  0~in case of       */
-  /*              error.                                                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Glyph_Copy
+   *
+   * @description:
+   *   A function used to copy a glyph image.  Note that the created
+   *   @FT_Glyph object must be released with @FT_Done_Glyph.
+   *
+   * @input:
+   *   source ::
+   *     A handle to the source glyph object.
+   *
+   * @output:
+   *   target ::
+   *     A handle to the target glyph object.  0~in case of
+   *     error.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Glyph_Copy( FT_Glyph   source,
                  FT_Glyph  *target );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Glyph_Transform                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Transform a glyph image if its format is scalable.                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    glyph  :: A handle to the target glyph object.                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    matrix :: A pointer to a 2x2 matrix to apply.                      */
-  /*                                                                       */
-  /*    delta  :: A pointer to a 2d vector to apply.  Coordinates are      */
-  /*              expressed in 1/64th of a pixel.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code (if not 0, the glyph format is not scalable).  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The 2x2 transformation matrix is also applied to the glyph's       */
-  /*    advance vector.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Glyph_Transform
+   *
+   * @description:
+   *   Transform a glyph image if its format is scalable.
+   *
+   * @inout:
+   *   glyph ::
+   *     A handle to the target glyph object.
+   *
+   * @input:
+   *   matrix ::
+   *     A pointer to a 2x2 matrix to apply.
+   *
+   *   delta ::
+   *     A pointer to a 2d vector to apply.  Coordinates are
+   *     expressed in 1/64th of a pixel.
+   *
+   * @return:
+   *   FreeType error code (if not 0, the glyph format is not scalable).
+   *
+   * @note:
+   *   The 2x2 transformation matrix is also applied to the glyph's
+   *   advance vector.
+   */
   FT_EXPORT( FT_Error )
   FT_Glyph_Transform( FT_Glyph    glyph,
                       FT_Matrix*  matrix,
                       FT_Vector*  delta );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Glyph_BBox_Mode                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The mode how the values of @FT_Glyph_Get_CBox are returned.        */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_GLYPH_BBOX_UNSCALED ::                                          */
-  /*      Return unscaled font units.                                      */
-  /*                                                                       */
-  /*    FT_GLYPH_BBOX_SUBPIXELS ::                                         */
-  /*      Return unfitted 26.6 coordinates.                                */
-  /*                                                                       */
-  /*    FT_GLYPH_BBOX_GRIDFIT ::                                           */
-  /*      Return grid-fitted 26.6 coordinates.                             */
-  /*                                                                       */
-  /*    FT_GLYPH_BBOX_TRUNCATE ::                                          */
-  /*      Return coordinates in integer pixels.                            */
-  /*                                                                       */
-  /*    FT_GLYPH_BBOX_PIXELS ::                                            */
-  /*      Return grid-fitted pixel coordinates.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Glyph_BBox_Mode
+   *
+   * @description:
+   *   The mode how the values of @FT_Glyph_Get_CBox are returned.
+   *
+   * @values:
+   *   FT_GLYPH_BBOX_UNSCALED ::
+   *     Return unscaled font units.
+   *
+   *   FT_GLYPH_BBOX_SUBPIXELS ::
+   *     Return unfitted 26.6 coordinates.
+   *
+   *   FT_GLYPH_BBOX_GRIDFIT ::
+   *     Return grid-fitted 26.6 coordinates.
+   *
+   *   FT_GLYPH_BBOX_TRUNCATE ::
+   *     Return coordinates in integer pixels.
+   *
+   *   FT_GLYPH_BBOX_PIXELS ::
+   *     Return grid-fitted pixel coordinates.
+   */
   typedef enum  FT_Glyph_BBox_Mode_
   {
     FT_GLYPH_BBOX_UNSCALED  = 0,
@@ -340,187 +389,191 @@
 #define ft_glyph_bbox_pixels     FT_GLYPH_BBOX_PIXELS
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Glyph_Get_CBox                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a glyph's `control box'.  The control box encloses all the  */
-  /*    outline's points, including Bezier control points.  Though it      */
-  /*    coincides with the exact bounding box for most glyphs, it can be   */
-  /*    slightly larger in some situations (like when rotating an outline  */
-  /*    that contains Bezier outside arcs).                                */
-  /*                                                                       */
-  /*    Computing the control box is very fast, while getting the bounding */
-  /*    box can take much more time as it needs to walk over all segments  */
-  /*    and arcs in the outline.  To get the latter, you can use the       */
-  /*    `ftbbox' component, which is dedicated to this single task.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    glyph :: A handle to the source glyph object.                      */
-  /*                                                                       */
-  /*    mode  :: The mode that indicates how to interpret the returned     */
-  /*             bounding box values.                                      */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    acbox :: The glyph coordinate bounding box.  Coordinates are       */
-  /*             expressed in 1/64th of pixels if it is grid-fitted.       */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Coordinates are relative to the glyph origin, using the y~upwards  */
-  /*    convention.                                                        */
-  /*                                                                       */
-  /*    If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode'   */
-  /*    must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font        */
-  /*    units in 26.6 pixel format.  The value @FT_GLYPH_BBOX_SUBPIXELS    */
-  /*    is another name for this constant.                                 */
-  /*                                                                       */
-  /*    If the font is tricky and the glyph has been loaded with           */
-  /*    @FT_LOAD_NO_SCALE, the resulting CBox is meaningless.  To get      */
-  /*    reasonable values for the CBox it is necessary to load the glyph   */
-  /*    at a large ppem value (so that the hinting instructions can        */
-  /*    properly shift and scale the subglyphs), then extracting the CBox, */
-  /*    which can be eventually converted back to font units.              */
-  /*                                                                       */
-  /*    Note that the maximum coordinates are exclusive, which means that  */
-  /*    one can compute the width and height of the glyph image (be it in  */
-  /*    integer or 26.6 pixels) as:                                        */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      width  = bbox.xMax - bbox.xMin;                                  */
-  /*      height = bbox.yMax - bbox.yMin;                                  */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Note also that for 26.6 coordinates, if `bbox_mode' is set to      */
-  /*    @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted,  */
-  /*    which corresponds to:                                              */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      bbox.xMin = FLOOR(bbox.xMin);                                    */
-  /*      bbox.yMin = FLOOR(bbox.yMin);                                    */
-  /*      bbox.xMax = CEILING(bbox.xMax);                                  */
-  /*      bbox.yMax = CEILING(bbox.yMax);                                  */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    To get the bbox in pixel coordinates, set `bbox_mode' to           */
-  /*    @FT_GLYPH_BBOX_TRUNCATE.                                           */
-  /*                                                                       */
-  /*    To get the bbox in grid-fitted pixel coordinates, set `bbox_mode'  */
-  /*    to @FT_GLYPH_BBOX_PIXELS.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Glyph_Get_CBox
+   *
+   * @description:
+   *   Return a glyph's `control box'.  The control box encloses all the
+   *   outline's points, including Bezier control points.  Though it
+   *   coincides with the exact bounding box for most glyphs, it can be
+   *   slightly larger in some situations (like when rotating an outline
+   *   that contains Bezier outside arcs).
+   *
+   *   Computing the control box is very fast, while getting the bounding
+   *   box can take much more time as it needs to walk over all segments
+   *   and arcs in the outline.  To get the latter, you can use the
+   *   `ftbbox' component, which is dedicated to this single task.
+   *
+   * @input:
+   *   glyph ::
+   *     A handle to the source glyph object.
+   *
+   *   mode ::
+   *     The mode that indicates how to interpret the returned
+   *     bounding box values.
+   *
+   * @output:
+   *   acbox ::
+   *     The glyph coordinate bounding box.  Coordinates are
+   *     expressed in 1/64th of pixels if it is grid-fitted.
+   *
+   * @note:
+   *   Coordinates are relative to the glyph origin, using the y~upwards
+   *   convention.
+   *
+   *   If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode'
+   *   must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font
+   *   units in 26.6 pixel format.  The value @FT_GLYPH_BBOX_SUBPIXELS
+   *   is another name for this constant.
+   *
+   *   If the font is tricky and the glyph has been loaded with
+   *   @FT_LOAD_NO_SCALE, the resulting CBox is meaningless.  To get
+   *   reasonable values for the CBox it is necessary to load the glyph
+   *   at a large ppem value (so that the hinting instructions can
+   *   properly shift and scale the subglyphs), then extracting the CBox,
+   *   which can be eventually converted back to font units.
+   *
+   *   Note that the maximum coordinates are exclusive, which means that
+   *   one can compute the width and height of the glyph image (be it in
+   *   integer or 26.6 pixels) as:
+   *
+   *   {
+   *     width  = bbox.xMax - bbox.xMin;
+   *     height = bbox.yMax - bbox.yMin;
+   *   }
+   *
+   *   Note also that for 26.6 coordinates, if `bbox_mode' is set to
+   *   @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted,
+   *   which corresponds to:
+   *
+   *   {
+   *     bbox.xMin = FLOOR(bbox.xMin);
+   *     bbox.yMin = FLOOR(bbox.yMin);
+   *     bbox.xMax = CEILING(bbox.xMax);
+   *     bbox.yMax = CEILING(bbox.yMax);
+   *   }
+   *
+   *   To get the bbox in pixel coordinates, set `bbox_mode' to
+   *   @FT_GLYPH_BBOX_TRUNCATE.
+   *
+   *   To get the bbox in grid-fitted pixel coordinates, set `bbox_mode'
+   *   to @FT_GLYPH_BBOX_PIXELS.
+   */
   FT_EXPORT( void )
   FT_Glyph_Get_CBox( FT_Glyph  glyph,
                      FT_UInt   bbox_mode,
                      FT_BBox  *acbox );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Glyph_To_Bitmap                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Convert a given glyph object to a bitmap glyph object.             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    the_glyph   :: A pointer to a handle to the target glyph.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    render_mode :: An enumeration that describes how the data is       */
-  /*                   rendered.                                           */
-  /*                                                                       */
-  /*    origin      :: A pointer to a vector used to translate the glyph   */
-  /*                   image before rendering.  Can be~0 (if no            */
-  /*                   translation).  The origin is expressed in           */
-  /*                   26.6 pixels.                                        */
-  /*                                                                       */
-  /*    destroy     :: A boolean that indicates that the original glyph    */
-  /*                   image should be destroyed by this function.  It is  */
-  /*                   never destroyed in case of error.                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function does nothing if the glyph format isn't scalable.     */
-  /*                                                                       */
-  /*    The glyph image is translated with the `origin' vector before      */
-  /*    rendering.                                                         */
-  /*                                                                       */
-  /*    The first parameter is a pointer to an @FT_Glyph handle, that will */
-  /*    be _replaced_ by this function (with newly allocated data).        */
-  /*    Typically, you would use (omitting error handling):                */
-  /*                                                                       */
-  /*                                                                       */
-  /*      {                                                                */
-  /*        FT_Glyph        glyph;                                         */
-  /*        FT_BitmapGlyph  glyph_bitmap;                                  */
-  /*                                                                       */
-  /*                                                                       */
-  /*        // load glyph                                                  */
-  /*        error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAULT );    */
-  /*                                                                       */
-  /*        // extract glyph image                                         */
-  /*        error = FT_Get_Glyph( face->glyph, &glyph );                   */
-  /*                                                                       */
-  /*        // convert to a bitmap (default render mode + destroying old)  */
-  /*        if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )                 */
-  /*        {                                                              */
-  /*          error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL,   */
-  /*                                      0, 1 );                          */
-  /*          if ( error ) // `glyph' unchanged                            */
-  /*            ...                                                        */
-  /*        }                                                              */
-  /*                                                                       */
-  /*        // access bitmap content by typecasting                        */
-  /*        glyph_bitmap = (FT_BitmapGlyph)glyph;                          */
-  /*                                                                       */
-  /*        // do funny stuff with it, like blitting/drawing               */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        // discard glyph image (bitmap or not)                         */
-  /*        FT_Done_Glyph( glyph );                                        */
-  /*      }                                                                */
-  /*                                                                       */
-  /*                                                                       */
-  /*    Here another example, again without error handling:                */
-  /*                                                                       */
-  /*                                                                       */
-  /*      {                                                                */
-  /*        FT_Glyph  glyphs[MAX_GLYPHS]                                   */
-  /*                                                                       */
-  /*                                                                       */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
-  /*          error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) ||       */
-  /*                  FT_Get_Glyph ( face->glyph, &glyph[idx] );           */
-  /*                                                                       */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
-  /*        {                                                              */
-  /*          FT_Glyph  bitmap = glyphs[idx];                              */
-  /*                                                                       */
-  /*                                                                       */
-  /*          ...                                                          */
-  /*                                                                       */
-  /*          // after this call, `bitmap' no longer points into           */
-  /*          // the `glyphs' array (and the old value isn't destroyed)    */
-  /*          FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 );    */
-  /*                                                                       */
-  /*          ...                                                          */
-  /*                                                                       */
-  /*          FT_Done_Glyph( bitmap );                                     */
-  /*        }                                                              */
-  /*                                                                       */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
-  /*          FT_Done_Glyph( glyphs[idx] );                                */
-  /*      }                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Glyph_To_Bitmap
+   *
+   * @description:
+   *   Convert a given glyph object to a bitmap glyph object.
+   *
+   * @inout:
+   *   the_glyph ::
+   *     A pointer to a handle to the target glyph.
+   *
+   * @input:
+   *   render_mode ::
+   *     An enumeration that describes how the data is
+   *     rendered.
+   *
+   *   origin ::
+   *     A pointer to a vector used to translate the glyph
+   *     image before rendering.  Can be~0 (if no
+   *     translation).  The origin is expressed in
+   *     26.6 pixels.
+   *
+   *   destroy ::
+   *     A boolean that indicates that the original glyph
+   *     image should be destroyed by this function.  It is
+   *     never destroyed in case of error.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function does nothing if the glyph format isn't scalable.
+   *
+   *   The glyph image is translated with the `origin' vector before
+   *   rendering.
+   *
+   *   The first parameter is a pointer to an @FT_Glyph handle, that will
+   *   be _replaced_ by this function (with newly allocated data).
+   *   Typically, you would use (omitting error handling):
+   *
+   *   {
+   *     FT_Glyph        glyph;
+   *     FT_BitmapGlyph  glyph_bitmap;
+   *
+   *
+   *     // load glyph
+   *     error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAULT );
+   *
+   *     // extract glyph image
+   *     error = FT_Get_Glyph( face->glyph, &glyph );
+   *
+   *     // convert to a bitmap (default render mode + destroying old)
+   *     if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )
+   *     {
+   *       error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL,
+   *                                     0, 1 );
+   *       if ( error ) // `glyph' unchanged
+   *         ...
+   *     }
+   *
+   *     // access bitmap content by typecasting
+   *     glyph_bitmap = (FT_BitmapGlyph)glyph;
+   *
+   *     // do funny stuff with it, like blitting/drawing
+   *     ...
+   *
+   *     // discard glyph image (bitmap or not)
+   *     FT_Done_Glyph( glyph );
+   *   }
+   *
+   *   Here another example, again without error handling:
+   *
+   *   {
+   *     FT_Glyph  glyphs[MAX_GLYPHS]
+   *
+   *
+   *     ...
+   *
+   *     for ( idx = 0; i < MAX_GLYPHS; i++ )
+   *       error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) ||
+   *               FT_Get_Glyph ( face->glyph, &glyphs[idx] );
+   *
+   *     ...
+   *
+   *     for ( idx = 0; i < MAX_GLYPHS; i++ )
+   *     {
+   *       FT_Glyph  bitmap = glyphs[idx];
+   *
+   *
+   *       ...
+   *
+   *       // after this call, `bitmap' no longer points into
+   *       // the `glyphs' array (and the old value isn't destroyed)
+   *       FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 );
+   *
+   *       ...
+   *
+   *       FT_Done_Glyph( bitmap );
+   *     }
+   *
+   *     ...
+   *
+   *     for ( idx = 0; i < MAX_GLYPHS; i++ )
+   *       FT_Done_Glyph( glyphs[idx] );
+   *   }
+   */
   FT_EXPORT( FT_Error )
   FT_Glyph_To_Bitmap( FT_Glyph*       the_glyph,
                       FT_Render_Mode  render_mode,
@@ -528,17 +581,18 @@
                       FT_Bool         destroy );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy a given glyph.                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    glyph :: A handle to the target glyph object.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Glyph
+   *
+   * @description:
+   *   Destroy a given glyph.
+   *
+   * @input:
+   *   glyph ::
+   *     A handle to the target glyph object.
+   */
   FT_EXPORT( void )
   FT_Done_Glyph( FT_Glyph  glyph );
 
@@ -547,54 +601,57 @@
 
   /* other helpful functions */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    computations                                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   computations
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Matrix_Multiply                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Perform the matrix operation `b = a*b'.                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: A pointer to matrix `a'.                                      */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    b :: A pointer to matrix `b'.                                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The result is undefined if either `a' or `b' is zero.              */
-  /*                                                                       */
-  /*    Since the function uses wrap-around arithmetic, results become     */
-  /*    meaningless if the arguments are very large.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Matrix_Multiply
+   *
+   * @description:
+   *   Perform the matrix operation `b = a*b'.
+   *
+   * @input:
+   *   a ::
+   *     A pointer to matrix `a'.
+   *
+   * @inout:
+   *   b ::
+   *     A pointer to matrix `b'.
+   *
+   * @note:
+   *   The result is undefined if either `a' or `b' is zero.
+   *
+   *   Since the function uses wrap-around arithmetic, results become
+   *   meaningless if the arguments are very large.
+   */
   FT_EXPORT( void )
   FT_Matrix_Multiply( const FT_Matrix*  a,
                       FT_Matrix*        b );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Matrix_Invert                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Invert a 2x2 matrix.  Return an error if it can't be inverted.     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    matrix :: A pointer to the target matrix.  Remains untouched in    */
-  /*              case of error.                                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Matrix_Invert
+   *
+   * @description:
+   *   Invert a 2x2 matrix.  Return an error if it can't be inverted.
+   *
+   * @inout:
+   *   matrix ::
+   *     A pointer to the target matrix.  Remains untouched in
+   *     case of error.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Matrix_Invert( FT_Matrix*  matrix );
 
diff --git a/include/freetype/ftgxval.h b/include/freetype/ftgxval.h
index 8382d59..532b484 100644
--- a/include/freetype/ftgxval.h
+++ b/include/freetype/ftgxval.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgxval.h                                                              */
-/*                                                                         */
-/*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  Masatake YAMATO, Redhat K.K,                                           */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgxval.h
+ *
+ *   FreeType API for validating TrueTypeGX/AAT tables (specification).
+ *
+ * Copyright 2004-2018 by
+ * Masatake YAMATO, Redhat K.K,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #ifndef FTGXVAL_H_
@@ -41,43 +41,43 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    gx_validation                                                      */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    TrueTypeGX/AAT Validation                                          */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    An API to validate TrueTypeGX/AAT tables.                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of functions to validate     */
-  /*    some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd,  */
-  /*    trak, prop, lcar).                                                 */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_TrueTypeGX_Validate                                             */
-  /*    FT_TrueTypeGX_Free                                                 */
-  /*                                                                       */
-  /*    FT_ClassicKern_Validate                                            */
-  /*    FT_ClassicKern_Free                                                */
-  /*                                                                       */
-  /*    FT_VALIDATE_GX_LENGTH                                              */
-  /*    FT_VALIDATE_GXXXX                                                  */
-  /*    FT_VALIDATE_CKERNXXX                                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   gx_validation
+   *
+   * @title:
+   *   TrueTypeGX/AAT Validation
+   *
+   * @abstract:
+   *   An API to validate TrueTypeGX/AAT tables.
+   *
+   * @description:
+   *   This section contains the declaration of functions to validate
+   *   some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd,
+   *   trak, prop, lcar).
+   *
+   * @order:
+   *   FT_TrueTypeGX_Validate
+   *   FT_TrueTypeGX_Free
+   *
+   *   FT_ClassicKern_Validate
+   *   FT_ClassicKern_Free
+   *
+   *   FT_VALIDATE_GX_LENGTH
+   *   FT_VALIDATE_GXXXX
+   *   FT_VALIDATE_CKERNXXX
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                                                                       */
-  /* Warning: Use FT_VALIDATE_XXX to validate a table.                     */
-  /*          Following definitions are for gxvalid developers.            */
-  /*                                                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *
+   * Warning: Use FT_VALIDATE_XXX to validate a table.
+   *         Following definitions are for gxvalid developers.
+   *
+   *
+   */
 
 #define FT_VALIDATE_feat_INDEX     0
 #define FT_VALIDATE_mort_INDEX     1
@@ -112,51 +112,51 @@
           ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
 
 
- /**********************************************************************
-  *
-  * @enum:
-  *    FT_VALIDATE_GXXXX
-  *
-  * @description:
-  *    A list of bit-field constants used with @FT_TrueTypeGX_Validate to
-  *    indicate which TrueTypeGX/AAT Type tables should be validated.
-  *
-  * @values:
-  *    FT_VALIDATE_feat ::
-  *      Validate `feat' table.
-  *
-  *    FT_VALIDATE_mort ::
-  *      Validate `mort' table.
-  *
-  *    FT_VALIDATE_morx ::
-  *      Validate `morx' table.
-  *
-  *    FT_VALIDATE_bsln ::
-  *      Validate `bsln' table.
-  *
-  *    FT_VALIDATE_just ::
-  *      Validate `just' table.
-  *
-  *    FT_VALIDATE_kern ::
-  *      Validate `kern' table.
-  *
-  *    FT_VALIDATE_opbd ::
-  *      Validate `opbd' table.
-  *
-  *    FT_VALIDATE_trak ::
-  *      Validate `trak' table.
-  *
-  *    FT_VALIDATE_prop ::
-  *      Validate `prop' table.
-  *
-  *    FT_VALIDATE_lcar ::
-  *      Validate `lcar' table.
-  *
-  *    FT_VALIDATE_GX ::
-  *      Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
-  *      opbd, trak, prop and lcar).
-  *
-  */
+  /**********************************************************************
+   *
+   * @enum:
+   *    FT_VALIDATE_GXXXX
+   *
+   * @description:
+   *    A list of bit-field constants used with @FT_TrueTypeGX_Validate to
+   *    indicate which TrueTypeGX/AAT Type tables should be validated.
+   *
+   * @values:
+   *    FT_VALIDATE_feat ::
+   *      Validate `feat' table.
+   *
+   *    FT_VALIDATE_mort ::
+   *      Validate `mort' table.
+   *
+   *    FT_VALIDATE_morx ::
+   *      Validate `morx' table.
+   *
+   *    FT_VALIDATE_bsln ::
+   *      Validate `bsln' table.
+   *
+   *    FT_VALIDATE_just ::
+   *      Validate `just' table.
+   *
+   *    FT_VALIDATE_kern ::
+   *      Validate `kern' table.
+   *
+   *    FT_VALIDATE_opbd ::
+   *      Validate `opbd' table.
+   *
+   *    FT_VALIDATE_trak ::
+   *      Validate `trak' table.
+   *
+   *    FT_VALIDATE_prop ::
+   *      Validate `prop' table.
+   *
+   *    FT_VALIDATE_lcar ::
+   *      Validate `lcar' table.
+   *
+   *    FT_VALIDATE_GX ::
+   *      Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
+   *      opbd, trak, prop and lcar).
+   *
+   */
 
 #define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD( feat )
 #define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD( mort )
@@ -181,47 +181,47 @@
                           FT_VALIDATE_lcar )
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_TrueTypeGX_Validate
-  *
-  * @description:
-  *    Validate various TrueTypeGX tables to assure that all offsets and
-  *    indices are valid.  The idea is that a higher-level library that
-  *    actually does the text layout can access those tables without
-  *    error checking (which can be quite time consuming).
-  *
-  * @input:
-  *    face ::
-  *       A handle to the input face.
-  *
-  *    validation_flags ::
-  *       A bit field that specifies the tables to be validated.  See
-  *       @FT_VALIDATE_GXXXX for possible values.
-  *
-  *    table_length ::
-  *       The size of the `tables' array.  Normally, @FT_VALIDATE_GX_LENGTH
-  *       should be passed.
-  *
-  * @output:
-  *    tables ::
-  *       The array where all validated sfnt tables are stored.
-  *       The array itself must be allocated by a client.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   This function only works with TrueTypeGX fonts, returning an error
-  *   otherwise.
-  *
-  *   After use, the application should deallocate the buffers pointed to by
-  *   each `tables' element, by calling @FT_TrueTypeGX_Free.  A NULL value
-  *   indicates that the table either doesn't exist in the font, the
-  *   application hasn't asked for validation, or the validator doesn't have
-  *   the ability to validate the sfnt table.
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_TrueTypeGX_Validate
+   *
+   * @description:
+   *    Validate various TrueTypeGX tables to assure that all offsets and
+   *    indices are valid.  The idea is that a higher-level library that
+   *    actually does the text layout can access those tables without
+   *    error checking (which can be quite time consuming).
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    validation_flags ::
+   *      A bit field that specifies the tables to be validated.  See
+   *      @FT_VALIDATE_GXXXX for possible values.
+   *
+   *    table_length ::
+   *      The size of the `tables' array.  Normally, @FT_VALIDATE_GX_LENGTH
+   *      should be passed.
+   *
+   * @output:
+   *    tables ::
+   *      The array where all validated sfnt tables are stored.
+   *      The array itself must be allocated by a client.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function only works with TrueTypeGX fonts, returning an error
+   *   otherwise.
+   *
+   *   After use, the application should deallocate the buffers pointed to by
+   *   each `tables' element, by calling @FT_TrueTypeGX_Free.  A NULL value
+   *   indicates that the table either doesn't exist in the font, the
+   *   application hasn't asked for validation, or the validator doesn't have
+   *   the ability to validate the sfnt table.
+   */
   FT_EXPORT( FT_Error )
   FT_TrueTypeGX_Validate( FT_Face   face,
                           FT_UInt   validation_flags,
@@ -229,119 +229,119 @@
                           FT_UInt   table_length );
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_TrueTypeGX_Free
-  *
-  * @description:
-  *    Free the buffer allocated by TrueTypeGX validator.
-  *
-  * @input:
-  *    face ::
-  *       A handle to the input face.
-  *
-  *    table ::
-  *       The pointer to the buffer allocated by
-  *       @FT_TrueTypeGX_Validate.
-  *
-  * @note:
-  *   This function must be used to free the buffer allocated by
-  *   @FT_TrueTypeGX_Validate only.
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_TrueTypeGX_Free
+   *
+   * @description:
+   *    Free the buffer allocated by TrueTypeGX validator.
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    table ::
+   *      The pointer to the buffer allocated by
+   *      @FT_TrueTypeGX_Validate.
+   *
+   * @note:
+   *   This function must be used to free the buffer allocated by
+   *   @FT_TrueTypeGX_Validate only.
+   */
   FT_EXPORT( void )
   FT_TrueTypeGX_Free( FT_Face   face,
                       FT_Bytes  table );
 
 
- /**********************************************************************
-  *
-  * @enum:
-  *    FT_VALIDATE_CKERNXXX
-  *
-  * @description:
-  *    A list of bit-field constants used with @FT_ClassicKern_Validate
-  *    to indicate the classic kern dialect or dialects.  If the selected
-  *    type doesn't fit, @FT_ClassicKern_Validate regards the table as
-  *    invalid.
-  *
-  * @values:
-  *    FT_VALIDATE_MS ::
-  *      Handle the `kern' table as a classic Microsoft kern table.
-  *
-  *    FT_VALIDATE_APPLE ::
-  *      Handle the `kern' table as a classic Apple kern table.
-  *
-  *    FT_VALIDATE_CKERN ::
-  *      Handle the `kern' as either classic Apple or Microsoft kern table.
-  */
+  /**********************************************************************
+   *
+   * @enum:
+   *    FT_VALIDATE_CKERNXXX
+   *
+   * @description:
+   *    A list of bit-field constants used with @FT_ClassicKern_Validate
+   *    to indicate the classic kern dialect or dialects.  If the selected
+   *    type doesn't fit, @FT_ClassicKern_Validate regards the table as
+   *    invalid.
+   *
+   * @values:
+   *    FT_VALIDATE_MS ::
+   *      Handle the `kern' table as a classic Microsoft kern table.
+   *
+   *    FT_VALIDATE_APPLE ::
+   *      Handle the `kern' table as a classic Apple kern table.
+   *
+   *    FT_VALIDATE_CKERN ::
+   *      Handle the `kern' as either classic Apple or Microsoft kern table.
+   */
 #define FT_VALIDATE_MS     ( FT_VALIDATE_GX_START << 0 )
 #define FT_VALIDATE_APPLE  ( FT_VALIDATE_GX_START << 1 )
 
 #define FT_VALIDATE_CKERN  ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_ClassicKern_Validate
-  *
-  * @description:
-  *    Validate classic (16-bit format) kern table to assure that the offsets
-  *    and indices are valid.  The idea is that a higher-level library that
-  *    actually does the text layout can access those tables without error
-  *    checking (which can be quite time consuming).
-  *
-  *    The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
-  *    the new 32-bit format and the classic 16-bit format, while
-  *    FT_ClassicKern_Validate only supports the classic 16-bit format.
-  *
-  * @input:
-  *    face ::
-  *       A handle to the input face.
-  *
-  *    validation_flags ::
-  *       A bit field that specifies the dialect to be validated.  See
-  *       @FT_VALIDATE_CKERNXXX for possible values.
-  *
-  * @output:
-  *    ckern_table ::
-  *       A pointer to the kern table.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   After use, the application should deallocate the buffers pointed to by
-  *   `ckern_table', by calling @FT_ClassicKern_Free.  A NULL value
-  *   indicates that the table doesn't exist in the font.
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_ClassicKern_Validate
+   *
+   * @description:
+   *    Validate classic (16-bit format) kern table to assure that the offsets
+   *    and indices are valid.  The idea is that a higher-level library that
+   *    actually does the text layout can access those tables without error
+   *    checking (which can be quite time consuming).
+   *
+   *    The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
+   *    the new 32-bit format and the classic 16-bit format, while
+   *    FT_ClassicKern_Validate only supports the classic 16-bit format.
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    validation_flags ::
+   *      A bit field that specifies the dialect to be validated.  See
+   *      @FT_VALIDATE_CKERNXXX for possible values.
+   *
+   * @output:
+   *    ckern_table ::
+   *      A pointer to the kern table.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   After use, the application should deallocate the buffers pointed to by
+   *   `ckern_table', by calling @FT_ClassicKern_Free.  A NULL value
+   *   indicates that the table doesn't exist in the font.
+   */
   FT_EXPORT( FT_Error )
   FT_ClassicKern_Validate( FT_Face    face,
                            FT_UInt    validation_flags,
                            FT_Bytes  *ckern_table );
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_ClassicKern_Free
-  *
-  * @description:
-  *    Free the buffer allocated by classic Kern validator.
-  *
-  * @input:
-  *    face ::
-  *       A handle to the input face.
-  *
-  *    table ::
-  *       The pointer to the buffer that is allocated by
-  *       @FT_ClassicKern_Validate.
-  *
-  * @note:
-  *   This function must be used to free the buffer allocated by
-  *   @FT_ClassicKern_Validate only.
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_ClassicKern_Free
+   *
+   * @description:
+   *    Free the buffer allocated by classic Kern validator.
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    table ::
+   *      The pointer to the buffer that is allocated by
+   *      @FT_ClassicKern_Validate.
+   *
+   * @note:
+   *   This function must be used to free the buffer allocated by
+   *   @FT_ClassicKern_Validate only.
+   */
   FT_EXPORT( void )
   FT_ClassicKern_Free( FT_Face   face,
                        FT_Bytes  table );
diff --git a/include/freetype/ftgzip.h b/include/freetype/ftgzip.h
index db033da..378a365 100644
--- a/include/freetype/ftgzip.h
+++ b/include/freetype/ftgzip.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgzip.h                                                               */
-/*                                                                         */
-/*    Gzip-compressed stream support.                                      */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgzip.h
+ *
+ *   Gzip-compressed stream support.
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTGZIP_H_
@@ -31,108 +31,108 @@
 
 FT_BEGIN_HEADER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    gzip                                                               */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    GZIP Streams                                                       */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Using gzip-compressed font files.                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of Gzip-specific functions.  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   gzip
+   *
+   * @title:
+   *   GZIP Streams
+   *
+   * @abstract:
+   *   Using gzip-compressed font files.
+   *
+   * @description:
+   *   This section contains the declaration of Gzip-specific functions.
+   *
+   */
 
 
- /************************************************************************
-  *
-  * @function:
-  *   FT_Stream_OpenGzip
-  *
-  * @description:
-  *   Open a new stream to parse gzip-compressed font files.  This is
-  *   mainly used to support the compressed `*.pcf.gz' fonts that come
-  *   with XFree86.
-  *
-  * @input:
-  *   stream ::
-  *     The target embedding stream.
-  *
-  *   source ::
-  *     The source stream.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   The source stream must be opened _before_ calling this function.
-  *
-  *   Calling the internal function `FT_Stream_Close' on the new stream will
-  *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
-  *   objects will be released to the heap.
-  *
-  *   The stream implementation is very basic and resets the decompression
-  *   process each time seeking backwards is needed within the stream.
-  *
-  *   In certain builds of the library, gzip compression recognition is
-  *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
-  *   This means that if no font driver is capable of handling the raw
-  *   compressed file, the library will try to open a gzipped stream from
-  *   it and re-open the face with it.
-  *
-  *   This function may return `FT_Err_Unimplemented_Feature' if your build
-  *   of FreeType was not compiled with zlib support.
-  */
+  /************************************************************************
+   *
+   * @function:
+   *   FT_Stream_OpenGzip
+   *
+   * @description:
+   *   Open a new stream to parse gzip-compressed font files.  This is
+   *   mainly used to support the compressed `*.pcf.gz' fonts that come
+   *   with XFree86.
+   *
+   * @input:
+   *   stream ::
+   *     The target embedding stream.
+   *
+   *   source ::
+   *     The source stream.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The source stream must be opened _before_ calling this function.
+   *
+   *   Calling the internal function `FT_Stream_Close' on the new stream will
+   *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
+   *   objects will be released to the heap.
+   *
+   *   The stream implementation is very basic and resets the decompression
+   *   process each time seeking backwards is needed within the stream.
+   *
+   *   In certain builds of the library, gzip compression recognition is
+   *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
+   *   This means that if no font driver is capable of handling the raw
+   *   compressed file, the library will try to open a gzipped stream from
+   *   it and re-open the face with it.
+   *
+   *   This function may return `FT_Err_Unimplemented_Feature' if your build
+   *   of FreeType was not compiled with zlib support.
+   */
   FT_EXPORT( FT_Error )
   FT_Stream_OpenGzip( FT_Stream  stream,
                       FT_Stream  source );
 
 
- /************************************************************************
-  *
-  * @function:
-  *   FT_Gzip_Uncompress
-  *
-  * @description:
-  *   Decompress a zipped input buffer into an output buffer.  This function
-  *   is modeled after zlib's `uncompress' function.
-  *
-  * @input:
-  *   memory ::
-  *     A FreeType memory handle.
-  *
-  *   input ::
-  *     The input buffer.
-  *
-  *   input_len ::
-  *     The length of the input buffer.
-  *
-  * @output:
-  *   output::
-  *     The output buffer.
-  *
-  * @inout:
-  *   output_len ::
-  *     Before calling the function, this is the total size of the output
-  *     buffer, which must be large enough to hold the entire uncompressed
-  *     data (so the size of the uncompressed data must be known in
-  *     advance).  After calling the function, `output_len' is the size of
-  *     the used data in `output'.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   This function may return `FT_Err_Unimplemented_Feature' if your build
-  *   of FreeType was not compiled with zlib support.
-  *
-  * @since:
-  *   2.5.1
-  */
+  /************************************************************************
+   *
+   * @function:
+   *   FT_Gzip_Uncompress
+   *
+   * @description:
+   *   Decompress a zipped input buffer into an output buffer.  This function
+   *   is modeled after zlib's `uncompress' function.
+   *
+   * @input:
+   *   memory ::
+   *     A FreeType memory handle.
+   *
+   *   input ::
+   *     The input buffer.
+   *
+   *   input_len ::
+   *     The length of the input buffer.
+   *
+   * @output:
+   *   output ::
+   *     The output buffer.
+   *
+   * @inout:
+   *   output_len ::
+   *     Before calling the function, this is the total size of the output
+   *     buffer, which must be large enough to hold the entire uncompressed
+   *     data (so the size of the uncompressed data must be known in
+   *     advance).  After calling the function, `output_len' is the size of
+   *     the used data in `output'.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function may return `FT_Err_Unimplemented_Feature' if your build
+   *   of FreeType was not compiled with zlib support.
+   *
+   * @since:
+   *   2.5.1
+   */
   FT_EXPORT( FT_Error )
   FT_Gzip_Uncompress( FT_Memory       memory,
                       FT_Byte*        output,
diff --git a/include/freetype/ftimage.h b/include/freetype/ftimage.h
index 79ede19..a3fa0b6 100644
--- a/include/freetype/ftimage.h
+++ b/include/freetype/ftimage.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftimage.h                                                              */
-/*                                                                         */
-/*    FreeType glyph image formats and default raster interface            */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftimage.h
+ *
+ *   FreeType glyph image formats and default raster interface
+ *   (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Note: A `raster' is simply a scan-line converter, used to render      */
-  /*       FT_Outlines into FT_Bitmaps.                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Note: A `raster' is simply a scan-line converter, used to render
+   *       FT_Outlines into FT_Bitmaps.
+   *
+   */
 
 
 #ifndef FTIMAGE_H_
@@ -37,40 +37,42 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    basic_types                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   basic_types
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Pos                                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The type FT_Pos is used to store vectorial coordinates.  Depending */
-  /*    on the context, these can represent distances in integer font      */
-  /*    units, or 16.16, or 26.6 fixed-point pixel coordinates.            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Pos
+   *
+   * @description:
+   *   The type FT_Pos is used to store vectorial coordinates.  Depending
+   *   on the context, these can represent distances in integer font
+   *   units, or 16.16, or 26.6 fixed-point pixel coordinates.
+   */
   typedef signed long  FT_Pos;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Vector                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple structure used to store a 2D vector; coordinates are of   */
-  /*    the FT_Pos type.                                                   */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    x :: The horizontal coordinate.                                    */
-  /*    y :: The vertical coordinate.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Vector
+   *
+   * @description:
+   *   A simple structure used to store a 2D vector; coordinates are of
+   *   the FT_Pos type.
+   *
+   * @fields:
+   *   x ::
+   *     The horizontal coordinate.
+   *   y ::
+   *     The vertical coordinate.
+   */
   typedef struct  FT_Vector_
   {
     FT_Pos  x;
@@ -79,39 +81,43 @@
   } FT_Vector;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_BBox                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to hold an outline's bounding box, i.e., the      */
-  /*    coordinates of its extrema in the horizontal and vertical          */
-  /*    directions.                                                        */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    xMin :: The horizontal minimum (left-most).                        */
-  /*                                                                       */
-  /*    yMin :: The vertical minimum (bottom-most).                        */
-  /*                                                                       */
-  /*    xMax :: The horizontal maximum (right-most).                       */
-  /*                                                                       */
-  /*    yMax :: The vertical maximum (top-most).                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The bounding box is specified with the coordinates of the lower    */
-  /*    left and the upper right corner.  In PostScript, those values are  */
-  /*    often called (llx,lly) and (urx,ury), respectively.                */
-  /*                                                                       */
-  /*    If `yMin' is negative, this value gives the glyph's descender.     */
-  /*    Otherwise, the glyph doesn't descend below the baseline.           */
-  /*    Similarly, if `ymax' is positive, this value gives the glyph's     */
-  /*    ascender.                                                          */
-  /*                                                                       */
-  /*    `xMin' gives the horizontal distance from the glyph's origin to    */
-  /*    the left edge of the glyph's bounding box.  If `xMin' is negative, */
-  /*    the glyph extends to the left of the origin.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_BBox
+   *
+   * @description:
+   *   A structure used to hold an outline's bounding box, i.e., the
+   *   coordinates of its extrema in the horizontal and vertical
+   *   directions.
+   *
+   * @fields:
+   *   xMin ::
+   *     The horizontal minimum (left-most).
+   *
+   *   yMin ::
+   *     The vertical minimum (bottom-most).
+   *
+   *   xMax ::
+   *     The horizontal maximum (right-most).
+   *
+   *   yMax ::
+   *     The vertical maximum (top-most).
+   *
+   * @note:
+   *   The bounding box is specified with the coordinates of the lower
+   *   left and the upper right corner.  In PostScript, those values are
+   *   often called (llx,lly) and (urx,ury), respectively.
+   *
+   *   If `yMin' is negative, this value gives the glyph's descender.
+   *   Otherwise, the glyph doesn't descend below the baseline.
+   *   Similarly, if `ymax' is positive, this value gives the glyph's
+   *   ascender.
+   *
+   *   `xMin' gives the horizontal distance from the glyph's origin to
+   *   the left edge of the glyph's bounding box.  If `xMin' is negative,
+   *   the glyph extends to the left of the origin.
+   */
   typedef struct  FT_BBox_
   {
     FT_Pos  xMin, yMin;
@@ -120,63 +126,63 @@
   } FT_BBox;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Pixel_Mode                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration type used to describe the format of pixels in a     */
-  /*    given bitmap.  Note that additional formats may be added in the    */
-  /*    future.                                                            */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_PIXEL_MODE_NONE ::                                              */
-  /*      Value~0 is reserved.                                             */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_MONO ::                                              */
-  /*      A monochrome bitmap, using 1~bit per pixel.  Note that pixels    */
-  /*      are stored in most-significant order (MSB), which means that     */
-  /*      the left-most pixel in a byte has value 128.                     */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_GRAY ::                                              */
-  /*      An 8-bit bitmap, generally used to represent anti-aliased glyph  */
-  /*      images.  Each pixel is stored in one byte.  Note that the number */
-  /*      of `gray' levels is stored in the `num_grays' field of the       */
-  /*      @FT_Bitmap structure (it generally is 256).                      */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_GRAY2 ::                                             */
-  /*      A 2-bit per pixel bitmap, used to represent embedded             */
-  /*      anti-aliased bitmaps in font files according to the OpenType     */
-  /*      specification.  We haven't found a single font using this        */
-  /*      format, however.                                                 */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_GRAY4 ::                                             */
-  /*      A 4-bit per pixel bitmap, representing embedded anti-aliased     */
-  /*      bitmaps in font files according to the OpenType specification.   */
-  /*      We haven't found a single font using this format, however.       */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_LCD ::                                               */
-  /*      An 8-bit bitmap, representing RGB or BGR decimated glyph images  */
-  /*      used for display on LCD displays; the bitmap is three times      */
-  /*      wider than the original glyph image.  See also                   */
-  /*      @FT_RENDER_MODE_LCD.                                             */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_LCD_V ::                                             */
-  /*      An 8-bit bitmap, representing RGB or BGR decimated glyph images  */
-  /*      used for display on rotated LCD displays; the bitmap is three    */
-  /*      times taller than the original glyph image.  See also            */
-  /*      @FT_RENDER_MODE_LCD_V.                                           */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_BGRA ::                                              */
-  /*      [Since 2.5] An image with four 8-bit channels per pixel,         */
-  /*      representing a color image (such as emoticons) with alpha        */
-  /*      channel.  For each pixel, the format is BGRA, which means, the   */
-  /*      blue channel comes first in memory.  The color channels are      */
-  /*      pre-multiplied and in the sRGB colorspace.  For example, full    */
-  /*      red at half-translucent opacity will be represented as           */
-  /*      `00,00,80,80', not `00,00,FF,80'.  See also @FT_LOAD_COLOR.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Pixel_Mode
+   *
+   * @description:
+   *   An enumeration type used to describe the format of pixels in a
+   *   given bitmap.  Note that additional formats may be added in the
+   *   future.
+   *
+   * @values:
+   *   FT_PIXEL_MODE_NONE ::
+   *     Value~0 is reserved.
+   *
+   *   FT_PIXEL_MODE_MONO ::
+   *     A monochrome bitmap, using 1~bit per pixel.  Note that pixels
+   *     are stored in most-significant order (MSB), which means that
+   *     the left-most pixel in a byte has value 128.
+   *
+   *   FT_PIXEL_MODE_GRAY ::
+   *     An 8-bit bitmap, generally used to represent anti-aliased glyph
+   *     images.  Each pixel is stored in one byte.  Note that the number
+   *     of `gray' levels is stored in the `num_grays' field of the
+   *     @FT_Bitmap structure (it generally is 256).
+   *
+   *   FT_PIXEL_MODE_GRAY2 ::
+   *     A 2-bit per pixel bitmap, used to represent embedded
+   *     anti-aliased bitmaps in font files according to the OpenType
+   *     specification.  We haven't found a single font using this
+   *     format, however.
+   *
+   *   FT_PIXEL_MODE_GRAY4 ::
+   *     A 4-bit per pixel bitmap, representing embedded anti-aliased
+   *     bitmaps in font files according to the OpenType specification.
+   *     We haven't found a single font using this format, however.
+   *
+   *   FT_PIXEL_MODE_LCD ::
+   *     An 8-bit bitmap, representing RGB or BGR decimated glyph images
+   *     used for display on LCD displays; the bitmap is three times
+   *     wider than the original glyph image.  See also
+   *     @FT_RENDER_MODE_LCD.
+   *
+   *   FT_PIXEL_MODE_LCD_V ::
+   *     An 8-bit bitmap, representing RGB or BGR decimated glyph images
+   *     used for display on rotated LCD displays; the bitmap is three
+   *     times taller than the original glyph image.  See also
+   *     @FT_RENDER_MODE_LCD_V.
+   *
+   *   FT_PIXEL_MODE_BGRA ::
+   *     [Since 2.5] An image with four 8-bit channels per pixel,
+   *     representing a color image (such as emoticons) with alpha
+   *     channel.  For each pixel, the format is BGRA, which means, the
+   *     blue channel comes first in memory.  The color channels are
+   *     pre-multiplied and in the sRGB colorspace.  For example, full
+   *     red at half-translucent opacity will be represented as
+   *     `00,00,80,80', not `00,00,FF,80'.  See also @FT_LOAD_COLOR.
+   */
   typedef enum  FT_Pixel_Mode_
   {
     FT_PIXEL_MODE_NONE = 0,
@@ -202,62 +208,70 @@
 #define ft_pixel_mode_pal4   FT_PIXEL_MODE_GRAY4
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Bitmap                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to describe a bitmap or pixmap to the raster.     */
-  /*    Note that we now manage pixmaps of various depths through the      */
-  /*    `pixel_mode' field.                                                */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    rows         :: The number of bitmap rows.                         */
-  /*                                                                       */
-  /*    width        :: The number of pixels in bitmap row.                */
-  /*                                                                       */
-  /*    pitch        :: The pitch's absolute value is the number of bytes  */
-  /*                    taken by one bitmap row, including padding.        */
-  /*                    However, the pitch is positive when the bitmap has */
-  /*                    a `down' flow, and negative when it has an `up'    */
-  /*                    flow.  In all cases, the pitch is an offset to add */
-  /*                    to a bitmap pointer in order to go down one row.   */
-  /*                                                                       */
-  /*                    Note that `padding' means the alignment of a       */
-  /*                    bitmap to a byte border, and FreeType functions    */
-  /*                    normally align to the smallest possible integer    */
-  /*                    value.                                             */
-  /*                                                                       */
-  /*                    For the B/W rasterizer, `pitch' is always an even  */
-  /*                    number.                                            */
-  /*                                                                       */
-  /*                    To change the pitch of a bitmap (say, to make it a */
-  /*                    multiple of 4), use @FT_Bitmap_Convert.            */
-  /*                    Alternatively, you might use callback functions to */
-  /*                    directly render to the application's surface; see  */
-  /*                    the file `example2.cpp' in the tutorial for a      */
-  /*                    demonstration.                                     */
-  /*                                                                       */
-  /*    buffer       :: A typeless pointer to the bitmap buffer.  This     */
-  /*                    value should be aligned on 32-bit boundaries in    */
-  /*                    most cases.                                        */
-  /*                                                                       */
-  /*    num_grays    :: This field is only used with                       */
-  /*                    @FT_PIXEL_MODE_GRAY; it gives the number of gray   */
-  /*                    levels used in the bitmap.                         */
-  /*                                                                       */
-  /*    pixel_mode   :: The pixel mode, i.e., how pixel bits are stored.   */
-  /*                    See @FT_Pixel_Mode for possible values.            */
-  /*                                                                       */
-  /*    palette_mode :: This field is intended for paletted pixel modes;   */
-  /*                    it indicates how the palette is stored.  Not       */
-  /*                    used currently.                                    */
-  /*                                                                       */
-  /*    palette      :: A typeless pointer to the bitmap palette; this     */
-  /*                    field is intended for paletted pixel modes.  Not   */
-  /*                    used currently.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Bitmap
+   *
+   * @description:
+   *   A structure used to describe a bitmap or pixmap to the raster.
+   *   Note that we now manage pixmaps of various depths through the
+   *   `pixel_mode' field.
+   *
+   * @fields:
+   *   rows ::
+   *     The number of bitmap rows.
+   *
+   *   width ::
+   *     The number of pixels in bitmap row.
+   *
+   *   pitch ::
+   *     The pitch's absolute value is the number of bytes
+   *     taken by one bitmap row, including padding.
+   *     However, the pitch is positive when the bitmap has
+   *     a `down' flow, and negative when it has an `up'
+   *     flow.  In all cases, the pitch is an offset to add
+   *     to a bitmap pointer in order to go down one row.
+   *
+   *     Note that `padding' means the alignment of a
+   *     bitmap to a byte border, and FreeType functions
+   *     normally align to the smallest possible integer
+   *     value.
+   *
+   *     For the B/W rasterizer, `pitch' is always an even
+   *     number.
+   *
+   *     To change the pitch of a bitmap (say, to make it a
+   *     multiple of 4), use @FT_Bitmap_Convert.
+   *     Alternatively, you might use callback functions to
+   *     directly render to the application's surface; see
+   *     the file `example2.cpp' in the tutorial for a
+   *     demonstration.
+   *
+   *   buffer ::
+   *     A typeless pointer to the bitmap buffer.  This
+   *     value should be aligned on 32-bit boundaries in
+   *     most cases.
+   *
+   *   num_grays ::
+   *     This field is only used with
+   *     @FT_PIXEL_MODE_GRAY; it gives the number of gray
+   *     levels used in the bitmap.
+   *
+   *   pixel_mode ::
+   *     The pixel mode, i.e., how pixel bits are stored.
+   *     See @FT_Pixel_Mode for possible values.
+   *
+   *   palette_mode ::
+   *     This field is intended for paletted pixel modes;
+   *     it indicates how the palette is stored.  Not
+   *     used currently.
+   *
+   *   palette ::
+   *     A typeless pointer to the bitmap palette; this
+   *     field is intended for paletted pixel modes.  Not
+   *     used currently.
+   */
   typedef struct  FT_Bitmap_
   {
     unsigned int    rows;
@@ -272,65 +286,71 @@
   } FT_Bitmap;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    outline_processing                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   outline_processing
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Outline                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure is used to describe an outline to the scan-line     */
-  /*    converter.                                                         */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    n_contours :: The number of contours in the outline.               */
-  /*                                                                       */
-  /*    n_points   :: The number of points in the outline.                 */
-  /*                                                                       */
-  /*    points     :: A pointer to an array of `n_points' @FT_Vector       */
-  /*                  elements, giving the outline's point coordinates.    */
-  /*                                                                       */
-  /*    tags       :: A pointer to an array of `n_points' chars, giving    */
-  /*                  each outline point's type.                           */
-  /*                                                                       */
-  /*                  If bit~0 is unset, the point is `off' the curve,     */
-  /*                  i.e., a Bezier control point, while it is `on' if    */
-  /*                  set.                                                 */
-  /*                                                                       */
-  /*                  Bit~1 is meaningful for `off' points only.  If set,  */
-  /*                  it indicates a third-order Bezier arc control point; */
-  /*                  and a second-order control point if unset.           */
-  /*                                                                       */
-  /*                  If bit~2 is set, bits 5-7 contain the drop-out mode  */
-  /*                  (as defined in the OpenType specification; the value */
-  /*                  is the same as the argument to the SCANMODE          */
-  /*                  instruction).                                        */
-  /*                                                                       */
-  /*                  Bits 3 and~4 are reserved for internal purposes.     */
-  /*                                                                       */
-  /*    contours   :: An array of `n_contours' shorts, giving the end      */
-  /*                  point of each contour within the outline.  For       */
-  /*                  example, the first contour is defined by the points  */
-  /*                  `0' to `contours[0]', the second one is defined by   */
-  /*                  the points `contours[0]+1' to `contours[1]', etc.    */
-  /*                                                                       */
-  /*    flags      :: A set of bit flags used to characterize the outline  */
-  /*                  and give hints to the scan-converter and hinter on   */
-  /*                  how to convert/grid-fit it.  See @FT_OUTLINE_XXX.    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The B/W rasterizer only checks bit~2 in the `tags' array for the   */
-  /*    first point of each contour.  The drop-out mode as given with      */
-  /*    @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and       */
-  /*    @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Outline
+   *
+   * @description:
+   *   This structure is used to describe an outline to the scan-line
+   *   converter.
+   *
+   * @fields:
+   *   n_contours ::
+   *     The number of contours in the outline.
+   *
+   *   n_points ::
+   *     The number of points in the outline.
+   *
+   *   points ::
+   *     A pointer to an array of `n_points' @FT_Vector
+   *     elements, giving the outline's point coordinates.
+   *
+   *   tags ::
+   *     A pointer to an array of `n_points' chars, giving
+   *     each outline point's type.
+   *
+   *     If bit~0 is unset, the point is `off' the curve,
+   *     i.e., a Bezier control point, while it is `on' if
+   *     set.
+   *
+   *     Bit~1 is meaningful for `off' points only.  If set,
+   *     it indicates a third-order Bezier arc control point;
+   *     and a second-order control point if unset.
+   *
+   *     If bit~2 is set, bits 5-7 contain the drop-out mode
+   *     (as defined in the OpenType specification; the value
+   *     is the same as the argument to the SCANMODE
+   *     instruction).
+   *
+   *     Bits 3 and~4 are reserved for internal purposes.
+   *
+   *   contours ::
+   *     An array of `n_contours' shorts, giving the end
+   *     point of each contour within the outline.  For
+   *     example, the first contour is defined by the points
+   *     `0' to `contours[0]', the second one is defined by
+   *     the points `contours[0]+1' to `contours[1]', etc.
+   *
+   *   flags ::
+   *     A set of bit flags used to characterize the outline
+   *     and give hints to the scan-converter and hinter on
+   *     how to convert/grid-fit it.  See @FT_OUTLINE_XXX.
+   *
+   * @note:
+   *   The B/W rasterizer only checks bit~2 in the `tags' array for the
+   *   first point of each contour.  The drop-out mode as given with
+   *   @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and
+   *   @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden.
+   */
   typedef struct  FT_Outline_
   {
     short       n_contours;      /* number of contours in glyph        */
@@ -352,78 +372,78 @@
 #define FT_OUTLINE_POINTS_MAX    SHRT_MAX
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_OUTLINE_XXX                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit-field constants use for the flags in an outline's    */
-  /*    `flags' field.                                                     */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_OUTLINE_NONE ::                                                 */
-  /*      Value~0 is reserved.                                             */
-  /*                                                                       */
-  /*    FT_OUTLINE_OWNER ::                                                */
-  /*      If set, this flag indicates that the outline's field arrays      */
-  /*      (i.e., `points', `flags', and `contours') are `owned' by the     */
-  /*      outline object, and should thus be freed when it is destroyed.   */
-  /*                                                                       */
-  /*    FT_OUTLINE_EVEN_ODD_FILL ::                                        */
-  /*      By default, outlines are filled using the non-zero winding rule. */
-  /*      If set to 1, the outline will be filled using the even-odd fill  */
-  /*      rule (only works with the smooth rasterizer).                    */
-  /*                                                                       */
-  /*    FT_OUTLINE_REVERSE_FILL ::                                         */
-  /*      By default, outside contours of an outline are oriented in       */
-  /*      clock-wise direction, as defined in the TrueType specification.  */
-  /*      This flag is set if the outline uses the opposite direction      */
-  /*      (typically for Type~1 fonts).  This flag is ignored by the scan  */
-  /*      converter.                                                       */
-  /*                                                                       */
-  /*    FT_OUTLINE_IGNORE_DROPOUTS ::                                      */
-  /*      By default, the scan converter will try to detect drop-outs in   */
-  /*      an outline and correct the glyph bitmap to ensure consistent     */
-  /*      shape continuity.  If set, this flag hints the scan-line         */
-  /*      converter to ignore such cases.  See below for more information. */
-  /*                                                                       */
-  /*    FT_OUTLINE_SMART_DROPOUTS ::                                       */
-  /*      Select smart dropout control.  If unset, use simple dropout      */
-  /*      control.  Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set.  See    */
-  /*      below for more information.                                      */
-  /*                                                                       */
-  /*    FT_OUTLINE_INCLUDE_STUBS ::                                        */
-  /*      If set, turn pixels on for `stubs', otherwise exclude them.      */
-  /*      Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set.  See below for    */
-  /*      more information.                                                */
-  /*                                                                       */
-  /*    FT_OUTLINE_HIGH_PRECISION ::                                       */
-  /*      This flag indicates that the scan-line converter should try to   */
-  /*      convert this outline to bitmaps with the highest possible        */
-  /*      quality.  It is typically set for small character sizes.  Note   */
-  /*      that this is only a hint that might be completely ignored by a   */
-  /*      given scan-converter.                                            */
-  /*                                                                       */
-  /*    FT_OUTLINE_SINGLE_PASS ::                                          */
-  /*      This flag is set to force a given scan-converter to only use a   */
-  /*      single pass over the outline to render a bitmap glyph image.     */
-  /*      Normally, it is set for very large character sizes.  It is only  */
-  /*      a hint that might be completely ignored by a given               */
-  /*      scan-converter.                                                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */
-  /*    and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth            */
-  /*    rasterizer.                                                        */
-  /*                                                                       */
-  /*    There exists a second mechanism to pass the drop-out mode to the   */
-  /*    B/W rasterizer; see the `tags' field in @FT_Outline.               */
-  /*                                                                       */
-  /*    Please refer to the description of the `SCANTYPE' instruction in   */
-  /*    the OpenType specification (in file `ttinst1.doc') how simple      */
-  /*    drop-outs, smart drop-outs, and stubs are defined.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_OUTLINE_XXX
+   *
+   * @description:
+   *   A list of bit-field constants use for the flags in an outline's
+   *   `flags' field.
+   *
+   * @values:
+   *   FT_OUTLINE_NONE ::
+   *     Value~0 is reserved.
+   *
+   *   FT_OUTLINE_OWNER ::
+   *     If set, this flag indicates that the outline's field arrays
+   *     (i.e., `points', `flags', and `contours') are `owned' by the
+   *     outline object, and should thus be freed when it is destroyed.
+   *
+   *   FT_OUTLINE_EVEN_ODD_FILL ::
+   *     By default, outlines are filled using the non-zero winding rule.
+   *     If set to 1, the outline will be filled using the even-odd fill
+   *     rule (only works with the smooth rasterizer).
+   *
+   *   FT_OUTLINE_REVERSE_FILL ::
+   *     By default, outside contours of an outline are oriented in
+   *     clock-wise direction, as defined in the TrueType specification.
+   *     This flag is set if the outline uses the opposite direction
+   *     (typically for Type~1 fonts).  This flag is ignored by the scan
+   *     converter.
+   *
+   *   FT_OUTLINE_IGNORE_DROPOUTS ::
+   *     By default, the scan converter will try to detect drop-outs in
+   *     an outline and correct the glyph bitmap to ensure consistent
+   *     shape continuity.  If set, this flag hints the scan-line
+   *     converter to ignore such cases.  See below for more information.
+   *
+   *   FT_OUTLINE_SMART_DROPOUTS ::
+   *     Select smart dropout control.  If unset, use simple dropout
+   *     control.  Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set.  See
+   *     below for more information.
+   *
+   *   FT_OUTLINE_INCLUDE_STUBS ::
+   *     If set, turn pixels on for `stubs', otherwise exclude them.
+   *     Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set.  See below for
+   *     more information.
+   *
+   *   FT_OUTLINE_HIGH_PRECISION ::
+   *     This flag indicates that the scan-line converter should try to
+   *     convert this outline to bitmaps with the highest possible
+   *     quality.  It is typically set for small character sizes.  Note
+   *     that this is only a hint that might be completely ignored by a
+   *     given scan-converter.
+   *
+   *   FT_OUTLINE_SINGLE_PASS ::
+   *     This flag is set to force a given scan-converter to only use a
+   *     single pass over the outline to render a bitmap glyph image.
+   *     Normally, it is set for very large character sizes.  It is only
+   *     a hint that might be completely ignored by a given
+   *     scan-converter.
+   *
+   * @note:
+   *   The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS,
+   *   and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth
+   *   rasterizer.
+   *
+   *   There exists a second mechanism to pass the drop-out mode to the
+   *   B/W rasterizer; see the `tags' field in @FT_Outline.
+   *
+   *   Please refer to the description of the `SCANTYPE' instruction in
+   *   the OpenType specification (in file `ttinst1.doc') how simple
+   *   drop-outs, smart drop-outs, and stubs are defined.
+   */
 #define FT_OUTLINE_NONE             0x0
 #define FT_OUTLINE_OWNER            0x1
 #define FT_OUTLINE_EVEN_ODD_FILL    0x2
@@ -469,26 +489,28 @@
 #define FT_Curve_Tag_Touch_Y  FT_CURVE_TAG_TOUCH_Y
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Outline_MoveToFunc                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function pointer type used to describe the signature of a `move  */
-  /*    to' function during outline walking/decomposition.                 */
-  /*                                                                       */
-  /*    A `move to' is emitted to start a new contour in an outline.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    to   :: A pointer to the target point of the `move to'.            */
-  /*                                                                       */
-  /*    user :: A typeless pointer, which is passed from the caller of the */
-  /*            decomposition function.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0~means success.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Outline_MoveToFunc
+   *
+   * @description:
+   *   A function pointer type used to describe the signature of a `move
+   *   to' function during outline walking/decomposition.
+   *
+   *   A `move to' is emitted to start a new contour in an outline.
+   *
+   * @input:
+   *   to ::
+   *     A pointer to the target point of the `move to'.
+   *
+   *   user ::
+   *     A typeless pointer, which is passed from the caller of the
+   *     decomposition function.
+   *
+   * @return:
+   *   Error code.  0~means success.
+   */
   typedef int
   (*FT_Outline_MoveToFunc)( const FT_Vector*  to,
                             void*             user );
@@ -496,26 +518,28 @@
 #define FT_Outline_MoveTo_Func  FT_Outline_MoveToFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Outline_LineToFunc                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function pointer type used to describe the signature of a `line  */
-  /*    to' function during outline walking/decomposition.                 */
-  /*                                                                       */
-  /*    A `line to' is emitted to indicate a segment in the outline.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    to   :: A pointer to the target point of the `line to'.            */
-  /*                                                                       */
-  /*    user :: A typeless pointer, which is passed from the caller of the */
-  /*            decomposition function.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0~means success.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Outline_LineToFunc
+   *
+   * @description:
+   *   A function pointer type used to describe the signature of a `line
+   *   to' function during outline walking/decomposition.
+   *
+   *   A `line to' is emitted to indicate a segment in the outline.
+   *
+   * @input:
+   *   to ::
+   *     A pointer to the target point of the `line to'.
+   *
+   *   user ::
+   *     A typeless pointer, which is passed from the caller of the
+   *     decomposition function.
+   *
+   * @return:
+   *   Error code.  0~means success.
+   */
   typedef int
   (*FT_Outline_LineToFunc)( const FT_Vector*  to,
                             void*             user );
@@ -523,30 +547,33 @@
 #define FT_Outline_LineTo_Func  FT_Outline_LineToFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Outline_ConicToFunc                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function pointer type used to describe the signature of a `conic */
-  /*    to' function during outline walking or decomposition.              */
-  /*                                                                       */
-  /*    A `conic to' is emitted to indicate a second-order Bezier arc in   */
-  /*    the outline.                                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    control :: An intermediate control point between the last position */
-  /*               and the new target in `to'.                             */
-  /*                                                                       */
-  /*    to      :: A pointer to the target end point of the conic arc.     */
-  /*                                                                       */
-  /*    user    :: A typeless pointer, which is passed from the caller of  */
-  /*               the decomposition function.                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0~means success.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Outline_ConicToFunc
+   *
+   * @description:
+   *   A function pointer type used to describe the signature of a `conic
+   *   to' function during outline walking or decomposition.
+   *
+   *   A `conic to' is emitted to indicate a second-order Bezier arc in
+   *   the outline.
+   *
+   * @input:
+   *   control ::
+   *     An intermediate control point between the last position
+   *     and the new target in `to'.
+   *
+   *   to ::
+   *     A pointer to the target end point of the conic arc.
+   *
+   *   user ::
+   *     A typeless pointer, which is passed from the caller of
+   *     the decomposition function.
+   *
+   * @return:
+   *   Error code.  0~means success.
+   */
   typedef int
   (*FT_Outline_ConicToFunc)( const FT_Vector*  control,
                              const FT_Vector*  to,
@@ -555,30 +582,34 @@
 #define FT_Outline_ConicTo_Func  FT_Outline_ConicToFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Outline_CubicToFunc                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function pointer type used to describe the signature of a `cubic */
-  /*    to' function during outline walking or decomposition.              */
-  /*                                                                       */
-  /*    A `cubic to' is emitted to indicate a third-order Bezier arc.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    control1 :: A pointer to the first Bezier control point.           */
-  /*                                                                       */
-  /*    control2 :: A pointer to the second Bezier control point.          */
-  /*                                                                       */
-  /*    to       :: A pointer to the target end point.                     */
-  /*                                                                       */
-  /*    user     :: A typeless pointer, which is passed from the caller of */
-  /*                the decomposition function.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0~means success.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Outline_CubicToFunc
+   *
+   * @description:
+   *   A function pointer type used to describe the signature of a `cubic
+   *   to' function during outline walking or decomposition.
+   *
+   *   A `cubic to' is emitted to indicate a third-order Bezier arc.
+   *
+   * @input:
+   *   control1 ::
+   *     A pointer to the first Bezier control point.
+   *
+   *   control2 ::
+   *     A pointer to the second Bezier control point.
+   *
+   *   to ::
+   *     A pointer to the target end point.
+   *
+   *   user ::
+   *     A typeless pointer, which is passed from the caller of
+   *     the decomposition function.
+   *
+   * @return:
+   *   Error code.  0~means success.
+   */
   typedef int
   (*FT_Outline_CubicToFunc)( const FT_Vector*  control1,
                              const FT_Vector*  control2,
@@ -588,43 +619,49 @@
 #define FT_Outline_CubicTo_Func  FT_Outline_CubicToFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Outline_Funcs                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to hold various function pointers used during outline  */
-  /*    decomposition in order to emit segments, conic, and cubic Beziers. */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    move_to  :: The `move to' emitter.                                 */
-  /*                                                                       */
-  /*    line_to  :: The segment emitter.                                   */
-  /*                                                                       */
-  /*    conic_to :: The second-order Bezier arc emitter.                   */
-  /*                                                                       */
-  /*    cubic_to :: The third-order Bezier arc emitter.                    */
-  /*                                                                       */
-  /*    shift    :: The shift that is applied to coordinates before they   */
-  /*                are sent to the emitter.                               */
-  /*                                                                       */
-  /*    delta    :: The delta that is applied to coordinates before they   */
-  /*                are sent to the emitter, but after the shift.          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The point coordinates sent to the emitters are the transformed     */
-  /*    version of the original coordinates (this is important for high    */
-  /*    accuracy during scan-conversion).  The transformation is simple:   */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      x' = (x << shift) - delta                                        */
-  /*      y' = (y << shift) - delta                                        */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Set the values of `shift' and `delta' to~0 to get the original     */
-  /*    point coordinates.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Outline_Funcs
+   *
+   * @description:
+   *   A structure to hold various function pointers used during outline
+   *   decomposition in order to emit segments, conic, and cubic Beziers.
+   *
+   * @fields:
+   *   move_to ::
+   *     The `move to' emitter.
+   *
+   *   line_to ::
+   *     The segment emitter.
+   *
+   *   conic_to ::
+   *     The second-order Bezier arc emitter.
+   *
+   *   cubic_to ::
+   *     The third-order Bezier arc emitter.
+   *
+   *   shift ::
+   *     The shift that is applied to coordinates before they
+   *     are sent to the emitter.
+   *
+   *   delta ::
+   *     The delta that is applied to coordinates before they
+   *     are sent to the emitter, but after the shift.
+   *
+   * @note:
+   *   The point coordinates sent to the emitters are the transformed
+   *   version of the original coordinates (this is important for high
+   *   accuracy during scan-conversion).  The transformation is simple:
+   *
+   *   {
+   *     x' = (x << shift) - delta
+   *     y' = (y << shift) - delta
+   *   }
+   *
+   *   Set the values of `shift' and `delta' to~0 to get the original
+   *   point coordinates.
+   */
   typedef struct  FT_Outline_Funcs_
   {
     FT_Outline_MoveToFunc   move_to;
@@ -638,33 +675,33 @@
   } FT_Outline_Funcs;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    basic_types                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   basic_types
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_IMAGE_TAG                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This macro converts four-letter tags to an unsigned long type.     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Since many 16-bit compilers don't like 32-bit enumerations, you    */
-  /*    should redefine this macro in case of problems to something like   */
-  /*    this:                                                              */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 )  value         */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    to get a simple enumeration without assigning special numbers.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_IMAGE_TAG
+   *
+   * @description:
+   *   This macro converts four-letter tags to an unsigned long type.
+   *
+   * @note:
+   *   Since many 16-bit compilers don't like 32-bit enumerations, you
+   *   should redefine this macro in case of problems to something like
+   *   this:
+   *
+   *   {
+   *     #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 )  value
+   *   }
+   *
+   *   to get a simple enumeration without assigning special numbers.
+   */
 #ifndef FT_IMAGE_TAG
 #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 )  \
           value = ( ( (unsigned long)_x1 << 24 ) | \
@@ -674,44 +711,44 @@
 #endif /* FT_IMAGE_TAG */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Glyph_Format                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration type used to describe the format of a given glyph   */
-  /*    image.  Note that this version of FreeType only supports two image */
-  /*    formats, even though future font drivers will be able to register  */
-  /*    their own format.                                                  */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_GLYPH_FORMAT_NONE ::                                            */
-  /*      The value~0 is reserved.                                         */
-  /*                                                                       */
-  /*    FT_GLYPH_FORMAT_COMPOSITE ::                                       */
-  /*      The glyph image is a composite of several other images.  This    */
-  /*      format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to   */
-  /*      report compound glyphs (like accented characters).               */
-  /*                                                                       */
-  /*    FT_GLYPH_FORMAT_BITMAP ::                                          */
-  /*      The glyph image is a bitmap, and can be described as an          */
-  /*      @FT_Bitmap.  You generally need to access the `bitmap' field of  */
-  /*      the @FT_GlyphSlotRec structure to read it.                       */
-  /*                                                                       */
-  /*    FT_GLYPH_FORMAT_OUTLINE ::                                         */
-  /*      The glyph image is a vectorial outline made of line segments     */
-  /*      and Bezier arcs; it can be described as an @FT_Outline; you      */
-  /*      generally want to access the `outline' field of the              */
-  /*      @FT_GlyphSlotRec structure to read it.                           */
-  /*                                                                       */
-  /*    FT_GLYPH_FORMAT_PLOTTER ::                                         */
-  /*      The glyph image is a vectorial path with no inside and outside   */
-  /*      contours.  Some Type~1 fonts, like those in the Hershey family,  */
-  /*      contain glyphs in this format.  These are described as           */
-  /*      @FT_Outline, but FreeType isn't currently capable of rendering   */
-  /*      them correctly.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Glyph_Format
+   *
+   * @description:
+   *   An enumeration type used to describe the format of a given glyph
+   *   image.  Note that this version of FreeType only supports two image
+   *   formats, even though future font drivers will be able to register
+   *   their own format.
+   *
+   * @values:
+   *   FT_GLYPH_FORMAT_NONE ::
+   *     The value~0 is reserved.
+   *
+   *   FT_GLYPH_FORMAT_COMPOSITE ::
+   *     The glyph image is a composite of several other images.  This
+   *     format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to
+   *     report compound glyphs (like accented characters).
+   *
+   *   FT_GLYPH_FORMAT_BITMAP ::
+   *     The glyph image is a bitmap, and can be described as an
+   *     @FT_Bitmap.  You generally need to access the `bitmap' field of
+   *     the @FT_GlyphSlotRec structure to read it.
+   *
+   *   FT_GLYPH_FORMAT_OUTLINE ::
+   *     The glyph image is a vectorial outline made of line segments
+   *     and Bezier arcs; it can be described as an @FT_Outline; you
+   *     generally want to access the `outline' field of the
+   *     @FT_GlyphSlotRec structure to read it.
+   *
+   *   FT_GLYPH_FORMAT_PLOTTER ::
+   *     The glyph image is a vectorial path with no inside and outside
+   *     contours.  Some Type~1 fonts, like those in the Hershey family,
+   *     contain glyphs in this format.  These are described as
+   *     @FT_Outline, but FreeType isn't currently capable of rendering
+   *     them correctly.
+   */
   typedef enum  FT_Glyph_Format_
   {
     FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ),
@@ -744,87 +781,90 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* A raster is a scan converter, in charge of rendering an outline into  */
-  /* a bitmap.  This section contains the public API for rasters.          */
-  /*                                                                       */
-  /* Note that in FreeType 2, all rasters are now encapsulated within      */
-  /* specific modules called `renderers'.  See `ftrender.h' for more       */
-  /* details on renderers.                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * A raster is a scan converter, in charge of rendering an outline into
+   * a bitmap.  This section contains the public API for rasters.
+   *
+   * Note that in FreeType 2, all rasters are now encapsulated within
+   * specific modules called `renderers'.  See `ftrender.h' for more
+   * details on renderers.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    raster                                                             */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Scanline Converter                                                 */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    How vectorial outlines are converted into bitmaps and pixmaps.     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains technical definitions.                       */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Raster                                                          */
-  /*    FT_Span                                                            */
-  /*    FT_SpanFunc                                                        */
-  /*                                                                       */
-  /*    FT_Raster_Params                                                   */
-  /*    FT_RASTER_FLAG_XXX                                                 */
-  /*                                                                       */
-  /*    FT_Raster_NewFunc                                                  */
-  /*    FT_Raster_DoneFunc                                                 */
-  /*    FT_Raster_ResetFunc                                                */
-  /*    FT_Raster_SetModeFunc                                              */
-  /*    FT_Raster_RenderFunc                                               */
-  /*    FT_Raster_Funcs                                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   raster
+   *
+   * @title:
+   *   Scanline Converter
+   *
+   * @abstract:
+   *   How vectorial outlines are converted into bitmaps and pixmaps.
+   *
+   * @description:
+   *   This section contains technical definitions.
+   *
+   * @order:
+   *   FT_Raster
+   *   FT_Span
+   *   FT_SpanFunc
+   *
+   *   FT_Raster_Params
+   *   FT_RASTER_FLAG_XXX
+   *
+   *   FT_Raster_NewFunc
+   *   FT_Raster_DoneFunc
+   *   FT_Raster_ResetFunc
+   *   FT_Raster_SetModeFunc
+   *   FT_Raster_RenderFunc
+   *   FT_Raster_Funcs
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Raster                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An opaque handle (pointer) to a raster object.  Each object can be */
-  /*    used independently to convert an outline into a bitmap or pixmap.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Raster
+   *
+   * @description:
+   *   An opaque handle (pointer) to a raster object.  Each object can be
+   *   used independently to convert an outline into a bitmap or pixmap.
+   */
   typedef struct FT_RasterRec_*  FT_Raster;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Span                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to model a single span of gray pixels when        */
-  /*    rendering an anti-aliased bitmap.                                  */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    x        :: The span's horizontal start position.                  */
-  /*                                                                       */
-  /*    len      :: The span's length in pixels.                           */
-  /*                                                                       */
-  /*    coverage :: The span color/coverage, ranging from 0 (background)   */
-  /*                to 255 (foreground).                                   */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This structure is used by the span drawing callback type named     */
-  /*    @FT_SpanFunc that takes the y~coordinate of the span as a          */
-  /*    parameter.                                                         */
-  /*                                                                       */
-  /*    The coverage value is always between 0 and 255.  If you want less  */
-  /*    gray values, the callback function has to reduce them.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Span
+   *
+   * @description:
+   *   A structure used to model a single span of gray pixels when
+   *   rendering an anti-aliased bitmap.
+   *
+   * @fields:
+   *   x ::
+   *     The span's horizontal start position.
+   *
+   *   len ::
+   *     The span's length in pixels.
+   *
+   *   coverage ::
+   *     The span color/coverage, ranging from 0 (background)
+   *     to 255 (foreground).
+   *
+   * @note:
+   *   This structure is used by the span drawing callback type named
+   *   @FT_SpanFunc that takes the y~coordinate of the span as a
+   *   parameter.
+   *
+   *   The coverage value is always between 0 and 255.  If you want less
+   *   gray values, the callback function has to reduce them.
+   */
   typedef struct  FT_Span_
   {
     short           x;
@@ -834,32 +874,36 @@
   } FT_Span;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_SpanFunc                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used as a call-back by the anti-aliased renderer in     */
-  /*    order to let client applications draw themselves the gray pixel    */
-  /*    spans on each scan line.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    y     :: The scanline's y~coordinate.                              */
-  /*                                                                       */
-  /*    count :: The number of spans to draw on this scanline.             */
-  /*                                                                       */
-  /*    spans :: A table of `count' spans to draw on the scanline.         */
-  /*                                                                       */
-  /*    user  :: User-supplied data that is passed to the callback.        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This callback allows client applications to directly render the    */
-  /*    gray spans of the anti-aliased bitmap to any kind of surfaces.     */
-  /*                                                                       */
-  /*    This can be used to write anti-aliased outlines directly to a      */
-  /*    given background bitmap, and even perform translucency.            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_SpanFunc
+   *
+   * @description:
+   *   A function used as a call-back by the anti-aliased renderer in
+   *   order to let client applications draw themselves the gray pixel
+   *   spans on each scan line.
+   *
+   * @input:
+   *   y ::
+   *     The scanline's y~coordinate.
+   *
+   *   count ::
+   *     The number of spans to draw on this scanline.
+   *
+   *   spans ::
+   *     A table of `count' spans to draw on the scanline.
+   *
+   *   user ::
+   *     User-supplied data that is passed to the callback.
+   *
+   * @note:
+   *   This callback allows client applications to directly render the
+   *   gray spans of the anti-aliased bitmap to any kind of surfaces.
+   *
+   *   This can be used to write anti-aliased outlines directly to a
+   *   given background bitmap, and even perform translucency.
+   */
   typedef void
   (*FT_SpanFunc)( int             y,
                   int             count,
@@ -869,74 +913,78 @@
 #define FT_Raster_Span_Func  FT_SpanFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_BitTest_Func                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deprecated, unimplemented.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_BitTest_Func
+   *
+   * @description:
+   *   Deprecated, unimplemented.
+   */
   typedef int
   (*FT_Raster_BitTest_Func)( int    y,
                              int    x,
                              void*  user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_BitSet_Func                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deprecated, unimplemented.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_BitSet_Func
+   *
+   * @description:
+   *   Deprecated, unimplemented.
+   */
   typedef void
   (*FT_Raster_BitSet_Func)( int    y,
                             int    x,
                             void*  user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_RASTER_FLAG_XXX                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit flag constants as used in the `flags' field of a     */
-  /*    @FT_Raster_Params structure.                                       */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_RASTER_FLAG_DEFAULT :: This value is 0.                         */
-  /*                                                                       */
-  /*    FT_RASTER_FLAG_AA      :: This flag is set to indicate that an     */
-  /*                              anti-aliased glyph image should be       */
-  /*                              generated.  Otherwise, it will be        */
-  /*                              monochrome (1-bit).                      */
-  /*                                                                       */
-  /*    FT_RASTER_FLAG_DIRECT  :: This flag is set to indicate direct      */
-  /*                              rendering.  In this mode, client         */
-  /*                              applications must provide their own span */
-  /*                              callback.  This lets them directly       */
-  /*                              draw or compose over an existing bitmap. */
-  /*                              If this bit is not set, the target       */
-  /*                              pixmap's buffer _must_ be zeroed before  */
-  /*                              rendering.                               */
-  /*                                                                       */
-  /*                              Direct rendering is only possible with   */
-  /*                              anti-aliased glyphs.                     */
-  /*                                                                       */
-  /*    FT_RASTER_FLAG_CLIP    :: This flag is only used in direct         */
-  /*                              rendering mode.  If set, the output will */
-  /*                              be clipped to a box specified in the     */
-  /*                              `clip_box' field of the                  */
-  /*                              @FT_Raster_Params structure.             */
-  /*                                                                       */
-  /*                              Note that by default, the glyph bitmap   */
-  /*                              is clipped to the target pixmap, except  */
-  /*                              in direct rendering mode where all spans */
-  /*                              are generated if no clipping box is set. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_RASTER_FLAG_XXX
+   *
+   * @description:
+   *   A list of bit flag constants as used in the `flags' field of a
+   *   @FT_Raster_Params structure.
+   *
+   * @values:
+   *   FT_RASTER_FLAG_DEFAULT ::
+   *     This value is 0.
+   *
+   *   FT_RASTER_FLAG_AA ::
+   *     This flag is set to indicate that an
+   *     anti-aliased glyph image should be
+   *     generated.  Otherwise, it will be
+   *     monochrome (1-bit).
+   *
+   *   FT_RASTER_FLAG_DIRECT ::
+   *     This flag is set to indicate direct
+   *     rendering.  In this mode, client
+   *     applications must provide their own span
+   *     callback.  This lets them directly
+   *     draw or compose over an existing bitmap.
+   *     If this bit is not set, the target
+   *     pixmap's buffer _must_ be zeroed before
+   *     rendering.
+   *
+   *     Direct rendering is only possible with
+   *     anti-aliased glyphs.
+   *
+   *   FT_RASTER_FLAG_CLIP ::
+   *     This flag is only used in direct
+   *     rendering mode.  If set, the output will
+   *     be clipped to a box specified in the
+   *     `clip_box' field of the
+   *     @FT_Raster_Params structure.
+   *
+   *     Note that by default, the glyph bitmap
+   *     is clipped to the target pixmap, except
+   *     in direct rendering mode where all spans
+   *     are generated if no clipping box is set.
+   */
 #define FT_RASTER_FLAG_DEFAULT  0x0
 #define FT_RASTER_FLAG_AA       0x1
 #define FT_RASTER_FLAG_DIRECT   0x2
@@ -950,50 +998,59 @@
 #define ft_raster_flag_clip     FT_RASTER_FLAG_CLIP
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Raster_Params                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to hold the arguments used by a raster's render        */
-  /*    function.                                                          */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    target      :: The target bitmap.                                  */
-  /*                                                                       */
-  /*    source      :: A pointer to the source glyph image (e.g., an       */
-  /*                   @FT_Outline).                                       */
-  /*                                                                       */
-  /*    flags       :: The rendering flags.                                */
-  /*                                                                       */
-  /*    gray_spans  :: The gray span drawing callback.                     */
-  /*                                                                       */
-  /*    black_spans :: Unused.                                             */
-  /*                                                                       */
-  /*    bit_test    :: Unused.                                             */
-  /*                                                                       */
-  /*    bit_set     :: Unused.                                             */
-  /*                                                                       */
-  /*    user        :: User-supplied data that is passed to each drawing   */
-  /*                   callback.                                           */
-  /*                                                                       */
-  /*    clip_box    :: An optional clipping box.  It is only used in       */
-  /*                   direct rendering mode.  Note that coordinates here  */
-  /*                   should be expressed in _integer_ pixels (and not in */
-  /*                   26.6 fixed-point units).                            */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA    */
-  /*    bit flag is set in the `flags' field, otherwise a monochrome       */
-  /*    bitmap is generated.                                               */
-  /*                                                                       */
-  /*    If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the      */
-  /*    raster will call the `gray_spans' callback to draw gray pixel      */
-  /*    spans.  This allows direct composition over a pre-existing bitmap  */
-  /*    through user-provided callbacks to perform the span drawing and    */
-  /*    composition.    Not supported by the monochrome rasterizer.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Raster_Params
+   *
+   * @description:
+   *   A structure to hold the arguments used by a raster's render
+   *   function.
+   *
+   * @fields:
+   *   target ::
+   *     The target bitmap.
+   *
+   *   source ::
+   *     A pointer to the source glyph image (e.g., an
+   *     @FT_Outline).
+   *
+   *   flags ::
+   *     The rendering flags.
+   *
+   *   gray_spans ::
+   *     The gray span drawing callback.
+   *
+   *   black_spans ::
+   *     Unused.
+   *
+   *   bit_test ::
+   *     Unused.
+   *
+   *   bit_set ::
+   *     Unused.
+   *
+   *   user ::
+   *     User-supplied data that is passed to each drawing
+   *     callback.
+   *
+   *   clip_box ::
+   *     An optional clipping box.  It is only used in
+   *     direct rendering mode.  Note that coordinates here
+   *     should be expressed in _integer_ pixels (and not in
+   *     26.6 fixed-point units).
+   *
+   * @note:
+   *   An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA
+   *   bit flag is set in the `flags' field, otherwise a monochrome
+   *   bitmap is generated.
+   *
+   *   If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the
+   *   raster will call the `gray_spans' callback to draw gray pixel
+   *   spans.  This allows direct composition over a pre-existing bitmap
+   *   through user-provided callbacks to perform the span drawing and
+   *   composition.    Not supported by the monochrome rasterizer.
+   */
   typedef struct  FT_Raster_Params_
   {
     const FT_Bitmap*        target;
@@ -1009,30 +1066,32 @@
   } FT_Raster_Params;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_NewFunc                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to create a new raster object.                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory :: A handle to the memory allocator.                        */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    raster :: A handle to the new raster object.                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0~means success.                                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `memory' parameter is a typeless pointer in order to avoid     */
-  /*    un-wanted dependencies on the rest of the FreeType code.  In       */
-  /*    practice, it is an @FT_Memory object, i.e., a handle to the        */
-  /*    standard FreeType memory allocator.  However, this field can be    */
-  /*    completely ignored by a given raster implementation.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_NewFunc
+   *
+   * @description:
+   *   A function used to create a new raster object.
+   *
+   * @input:
+   *   memory ::
+   *     A handle to the memory allocator.
+   *
+   * @output:
+   *   raster ::
+   *     A handle to the new raster object.
+   *
+   * @return:
+   *   Error code.  0~means success.
+   *
+   * @note:
+   *   The `memory' parameter is a typeless pointer in order to avoid
+   *   un-wanted dependencies on the rest of the FreeType code.  In
+   *   practice, it is an @FT_Memory object, i.e., a handle to the
+   *   standard FreeType memory allocator.  However, this field can be
+   *   completely ignored by a given raster implementation.
+   */
   typedef int
   (*FT_Raster_NewFunc)( void*       memory,
                         FT_Raster*  raster );
@@ -1040,49 +1099,53 @@
 #define FT_Raster_New_Func  FT_Raster_NewFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_DoneFunc                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to destroy a given raster object.                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    raster :: A handle to the raster object.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_DoneFunc
+   *
+   * @description:
+   *   A function used to destroy a given raster object.
+   *
+   * @input:
+   *   raster ::
+   *     A handle to the raster object.
+   */
   typedef void
   (*FT_Raster_DoneFunc)( FT_Raster  raster );
 
 #define FT_Raster_Done_Func  FT_Raster_DoneFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_ResetFunc                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FreeType used to provide an area of memory called the `render      */
-  /*    pool' available to all registered rasterizers.  This was not       */
-  /*    thread safe, however, and now FreeType never allocates this pool.  */
-  /*                                                                       */
-  /*    This function is called after a new raster object is created.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    raster    :: A handle to the new raster object.                    */
-  /*                                                                       */
-  /*    pool_base :: Previously, the address in memory of the render pool. */
-  /*                 Set this to NULL.                                     */
-  /*                                                                       */
-  /*    pool_size :: Previously, the size in bytes of the render pool.     */
-  /*                 Set this to 0.                                        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Rasterizers should rely on dynamic or stack allocation if they     */
-  /*    want to (a handle to the memory allocator is passed to the         */
-  /*    rasterizer constructor).                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_ResetFunc
+   *
+   * @description:
+   *   FreeType used to provide an area of memory called the `render
+   *   pool' available to all registered rasterizers.  This was not
+   *   thread safe, however, and now FreeType never allocates this pool.
+   *
+   *   This function is called after a new raster object is created.
+   *
+   * @input:
+   *   raster ::
+   *     A handle to the new raster object.
+   *
+   *   pool_base ::
+   *     Previously, the address in memory of the render pool.
+   *     Set this to NULL.
+   *
+   *   pool_size ::
+   *     Previously, the size in bytes of the render pool.
+   *     Set this to 0.
+   *
+   * @note:
+   *   Rasterizers should rely on dynamic or stack allocation if they
+   *   want to (a handle to the memory allocator is passed to the
+   *   rasterizer constructor).
+   */
   typedef void
   (*FT_Raster_ResetFunc)( FT_Raster       raster,
                           unsigned char*  pool_base,
@@ -1091,24 +1154,27 @@
 #define FT_Raster_Reset_Func  FT_Raster_ResetFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_SetModeFunc                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is a generic facility to change modes or attributes  */
-  /*    in a given raster.  This can be used for debugging purposes, or    */
-  /*    simply to allow implementation-specific `features' in a given      */
-  /*    raster module.                                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    raster :: A handle to the new raster object.                       */
-  /*                                                                       */
-  /*    mode   :: A 4-byte tag used to name the mode or property.          */
-  /*                                                                       */
-  /*    args   :: A pointer to the new mode/property to use.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_SetModeFunc
+   *
+   * @description:
+   *   This function is a generic facility to change modes or attributes
+   *   in a given raster.  This can be used for debugging purposes, or
+   *   simply to allow implementation-specific `features' in a given
+   *   raster module.
+   *
+   * @input:
+   *   raster ::
+   *     A handle to the new raster object.
+   *
+   *   mode ::
+   *     A 4-byte tag used to name the mode or property.
+   *
+   *   args ::
+   *     A pointer to the new mode/property to use.
+   */
   typedef int
   (*FT_Raster_SetModeFunc)( FT_Raster      raster,
                             unsigned long  mode,
@@ -1117,40 +1183,42 @@
 #define FT_Raster_Set_Mode_Func  FT_Raster_SetModeFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_RenderFunc                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Invoke a given raster to scan-convert a given glyph image into a   */
-  /*    target bitmap.                                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    raster :: A handle to the raster object.                           */
-  /*                                                                       */
-  /*    params :: A pointer to an @FT_Raster_Params structure used to      */
-  /*              store the rendering parameters.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0~means success.                                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The exact format of the source image depends on the raster's glyph */
-  /*    format defined in its @FT_Raster_Funcs structure.  It can be an    */
-  /*    @FT_Outline or anything else in order to support a large array of  */
-  /*    glyph formats.                                                     */
-  /*                                                                       */
-  /*    Note also that the render function can fail and return a           */
-  /*    `FT_Err_Unimplemented_Feature' error code if the raster used does  */
-  /*    not support direct composition.                                    */
-  /*                                                                       */
-  /*    XXX: For now, the standard raster doesn't support direct           */
-  /*         composition but this should change for the final release (see */
-  /*         the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c'    */
-  /*         for examples of distinct implementations that support direct  */
-  /*         composition).                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_RenderFunc
+   *
+   * @description:
+   *   Invoke a given raster to scan-convert a given glyph image into a
+   *   target bitmap.
+   *
+   * @input:
+   *   raster ::
+   *     A handle to the raster object.
+   *
+   *   params ::
+   *     A pointer to an @FT_Raster_Params structure used to
+   *     store the rendering parameters.
+   *
+   * @return:
+   *   Error code.  0~means success.
+   *
+   * @note:
+   *   The exact format of the source image depends on the raster's glyph
+   *   format defined in its @FT_Raster_Funcs structure.  It can be an
+   *   @FT_Outline or anything else in order to support a large array of
+   *   glyph formats.
+   *
+   *   Note also that the render function can fail and return a
+   *   `FT_Err_Unimplemented_Feature' error code if the raster used does
+   *   not support direct composition.
+   *
+   *   XXX: For now, the standard raster doesn't support direct
+   *        composition but this should change for the final release (see
+   *        the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c'
+   *        for examples of distinct implementations that support direct
+   *        composition).
+   */
   typedef int
   (*FT_Raster_RenderFunc)( FT_Raster                raster,
                            const FT_Raster_Params*  params );
@@ -1158,25 +1226,30 @@
 #define FT_Raster_Render_Func  FT_Raster_RenderFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Raster_Funcs                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   A structure used to describe a given raster class to the library.   */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    glyph_format  :: The supported glyph format for this raster.       */
-  /*                                                                       */
-  /*    raster_new    :: The raster constructor.                           */
-  /*                                                                       */
-  /*    raster_reset  :: Used to reset the render pool within the raster.  */
-  /*                                                                       */
-  /*    raster_render :: A function to render a glyph into a given bitmap. */
-  /*                                                                       */
-  /*    raster_done   :: The raster destructor.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Raster_Funcs
+   *
+   * @description:
+   *  A structure used to describe a given raster class to the library.
+   *
+   * @fields:
+   *   glyph_format ::
+   *     The supported glyph format for this raster.
+   *
+   *   raster_new ::
+   *     The raster constructor.
+   *
+   *   raster_reset ::
+   *     Used to reset the render pool within the raster.
+   *
+   *   raster_render ::
+   *     A function to render a glyph into a given bitmap.
+   *
+   *   raster_done ::
+   *     The raster destructor.
+   */
   typedef struct  FT_Raster_Funcs_
   {
     FT_Glyph_Format        glyph_format;
diff --git a/include/freetype/ftincrem.h b/include/freetype/ftincrem.h
index 44619f9..b3a17c3 100644
--- a/include/freetype/ftincrem.h
+++ b/include/freetype/ftincrem.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftincrem.h                                                             */
-/*                                                                         */
-/*    FreeType incremental loading (specification).                        */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftincrem.h
+ *
+ *   FreeType incremental loading (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTINCREM_H_
@@ -286,30 +286,30 @@
    *   wants to support incremental glyph loading.  You should use it with
    *   @FT_PARAM_TAG_INCREMENTAL as in the following example:
    *
-   *     {
-   *       FT_Incremental_InterfaceRec  inc_int;
-   *       FT_Parameter                 parameter;
-   *       FT_Open_Args                 open_args;
+   *   {
+   *     FT_Incremental_InterfaceRec  inc_int;
+   *     FT_Parameter                 parameter;
+   *     FT_Open_Args                 open_args;
    *
    *
-   *       // set up incremental descriptor
-   *       inc_int.funcs  = my_funcs;
-   *       inc_int.object = my_object;
+   *     // set up incremental descriptor
+   *     inc_int.funcs  = my_funcs;
+   *     inc_int.object = my_object;
    *
-   *       // set up optional parameter
-   *       parameter.tag  = FT_PARAM_TAG_INCREMENTAL;
-   *       parameter.data = &inc_int;
+   *     // set up optional parameter
+   *     parameter.tag  = FT_PARAM_TAG_INCREMENTAL;
+   *     parameter.data = &inc_int;
    *
-   *       // set up FT_Open_Args structure
-   *       open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;
-   *       open_args.pathname   = my_font_pathname;
-   *       open_args.num_params = 1;
-   *       open_args.params     = &parameter; // we use one optional argument
+   *     // set up FT_Open_Args structure
+   *     open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;
+   *     open_args.pathname   = my_font_pathname;
+   *     open_args.num_params = 1;
+   *     open_args.params     = &parameter; // we use one optional argument
    *
-   *       // open the font
-   *       error = FT_Open_Face( library, &open_args, index, &face );
-   *       ...
-   *     }
+   *     // open the font
+   *     error = FT_Open_Face( library, &open_args, index, &face );
+   *     ...
+   *   }
    *
    */
   typedef struct  FT_Incremental_InterfaceRec_
diff --git a/include/freetype/ftlcdfil.h b/include/freetype/ftlcdfil.h
index 2a27196..8d27135 100644
--- a/include/freetype/ftlcdfil.h
+++ b/include/freetype/ftlcdfil.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftlcdfil.h                                                             */
-/*                                                                         */
-/*    FreeType API for color filtering of subpixel bitmap glyphs           */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftlcdfil.h
+ *
+ *   FreeType API for color filtering of subpixel bitmap glyphs
+ *   (specification).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTLCDFIL_H_
@@ -36,98 +36,90 @@
   /***************************************************************************
    *
    * @section:
-   *   lcd_filtering
+   *   lcd_rendering
    *
    * @title:
-   *   LCD Filtering
+   *   Subpixel Rendering
    *
    * @abstract:
-   *   Reduce color fringes of subpixel-rendered bitmaps.
+   *   API to control subpixel rendering.
    *
    * @description:
+   *   FreeType provides two alternative subpixel rendering technologies.
    *   Should you #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your
-   *   `ftoption.h', which enables patented ClearType-style rendering,
-   *   the LCD-optimized glyph bitmaps should be filtered to reduce color
-   *   fringes inherent to this technology.  The default FreeType LCD
-   *   rendering uses different technology, and API described below,
-   *   although available, does nothing.
+   *   `ftoption.h', this enables patented ClearType-style rendering.
+   *   Otherwise, Harmony LCD rendering is enabled.  These technologies are
+   *   controlled differently and API described below, although always
+   *   available, performs its function when appropriate method is enabled
+   *   and does nothing otherwise.
    *
    *   ClearType-style LCD rendering exploits the color-striped structure of
    *   LCD pixels, increasing the available resolution in the direction of
-   *   the stripe (usually horizontal RGB) by a factor of~3.  Since these
-   *   subpixels are color pixels, using them unfiltered creates severe
-   *   color fringes.  Use the @FT_Library_SetLcdFilter API to specify a
-   *   low-pass filter, which is then applied to subpixel-rendered bitmaps
-   *   generated through @FT_Render_Glyph.  The filter sacrifices some of
-   *   the higher resolution to reduce color fringes, making the glyph image
-   *   slightly blurrier.  Positional improvements will remain.
+   *   the stripe (usually horizontal RGB) by a factor of~3.  Using the
+   *   subpixels coverages unfiltered can create severe color fringes
+   *   especially when rendering thin features.  Indeed, to produce
+   *   black-on-white text, the nearby color subpixels must be dimmed equally.
    *
-   *   A filter should have two properties:
+   *   A good 5-tap FIR filter should be applied to subpixel coverages
+   *   regardless of pixel boundaries and should have these properties:
    *
-   *   1) It should be normalized, meaning the sum of the 5~components
-   *      should be 256 (0x100).  It is possible to go above or under this
-   *      target sum, however: going under means tossing out contrast, going
-   *      over means invoking clamping and thereby non-linearities that
-   *      increase contrast somewhat at the expense of greater distortion
-   *      and color-fringing.  Contrast is better enhanced through stem
-   *      darkening.
+   *   1) It should be symmetrical, like {~a, b, c, b, a~}, to avoid
+   *      any shifts in appearance.
    *
-   *   2) It should be color-balanced, meaning a filter `{~a, b, c, b, a~}'
-   *      where a~+ b~=~c.  It distributes the computed coverage for one
-   *      subpixel to all subpixels equally, sacrificing some won resolution
-   *      but drastically reducing color-fringing.  Positioning improvements
-   *      remain!  Note that color-fringing can only really be minimized
-   *      when using a color-balanced filter and alpha-blending the glyph
-   *      onto a surface in linear space; see @FT_Render_Glyph.
+   *   2) It should be color-balanced, meaning a~+ b~=~c, to reduce color
+   *      fringes by distributing the computed coverage for one subpixel to
+   *      all subpixels equally.
    *
-   *   Regarding the form, a filter can be a `boxy' filter or a `beveled'
-   *   filter.  Boxy filters are sharper but are less forgiving of non-ideal
-   *   gamma curves of a screen (viewing angles!), beveled filters are
-   *   fuzzier but more tolerant.
+   *   3) It should be normalized, meaning 2a~+ 2b~+ c~=~1.0 to maintain
+   *      overall brightness.
    *
-   *   Examples:
+   *   Boxy 3-tap filter {0, 1/3, 1/3, 1/3, 0} is sharper but is less
+   *   forgiving of non-ideal gamma curves of a screen (and viewing angles),
+   *   beveled filters are fuzzier but more tolerant.
    *
-   *   - [0x10 0x40 0x70 0x40 0x10] is beveled and neither balanced nor
-   *     normalized.
+   *   Use the @FT_Library_SetLcdFilter or @FT_Library_SetLcdFilterWeights
+   *   API to specify a low-pass filter, which is then applied to
+   *   subpixel-rendered bitmaps generated through @FT_Render_Glyph.
    *
-   *   - [0x1A 0x33 0x4D 0x33 0x1A] is beveled and balanced but not
-   *     normalized.
+   *   Harmony LCD rendering is suitable to panels with any regular subpixel
+   *   structure, not just monitors with 3 color striped subpixels, as long as
+   *   the color subpixels have fixed positions relative to the pixel center.
+   *   In this case, each color channel is then rendered separately after
+   *   shifting the outline opposite to the subpixel shift so that the
+   *   coverage maps are aligned.  This method is immune to color fringes
+   *   because the shifts do not change integral coverage.
    *
-   *   - [0x19 0x33 0x66 0x4c 0x19] is beveled and normalized but not
-   *     balanced.
+   *   The subpixel geometry must be specified by xy-coordinates for each
+   *   subpixel. By convention they may come in the RGB order:
+   *   {{-1/3, 0}, {0, 0}, {1/3, 0}} for standard RGB striped panel or
+   *   {{-1/6, 1/4}, {-1/6, -1/4}, {1/3, 0}} for a certain PenTile panel.
    *
-   *   - [0x00 0x4c 0x66 0x4c 0x00] is boxily beveled and normalized but not
-   *     balanced.
+   *   Use the @FT_Library_SetLcdGeometry API to specify subpixel positions.
+   *   If one follows the RGB order convention, the same order applies
+   *   to the resulting @FT_PIXEL_MODE_LCD and @FT_PIXEL_MODE_LCD_V bitmaps.
+   *   Note, however, that the coordinate frame for the latter must be rotated
+   *   clockwise.  Harmony with default LCD geometry is equivalent to
+   *   ClearType with light filter.
    *
-   *   - [0x00 0x55 0x56 0x55 0x00] is boxy, normalized, and almost
-   *     balanced.
-   *
-   *   - [0x08 0x4D 0x56 0x4D 0x08] is beveled, normalized and, almost
-   *     balanced.
-   *
-   *   The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
-   *   @FT_Load_Glyph, and @FT_Load_Char.  It does _not_ affect the output
-   *   of @FT_Outline_Render and @FT_Outline_Get_Bitmap.
-   *
-   *   If this feature is activated, the dimensions of LCD glyph bitmaps are
-   *   either wider or taller than the dimensions of the corresponding
-   *   outline with regard to the pixel grid.  For example, for
-   *   @FT_RENDER_MODE_LCD, the filter adds 3~subpixels to the left, and
-   *   3~subpixels to the right.  The bitmap offset values are adjusted
+   *   As a result of ClearType filtering or Harmony rendering, the dimensions
+   *   of LCD bitmaps can be either wider or taller than the dimensions of
+   *   the corresponding outline with regard to the pixel grid.  For example,
+   *   for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to the left, and
+   *   2~subpixels to the right.  The bitmap offset values are adjusted
    *   accordingly, so clients shouldn't need to modify their layout and
    *   glyph positioning code when enabling the filter.
    *
-   *   It is important to understand that linear alpha blending and gamma
-   *   correction is critical for correctly rendering glyphs onto surfaces
-   *   without artifacts and even more critical when subpixel rendering is
-   *   involved.
+   *   The ClearType and Harmony rendering is applicable to glyph bitmaps
+   *   rendered through @FT_Render_Glyph, @FT_Load_Glyph, @FT_Load_Char, and
+   *   @FT_Glyph_To_Bitmap, when @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V
+   *   is specified.  This API does not control @FT_Outline_Render and
+   *   @FT_Outline_Get_Bitmap.
    *
-   *   Each of the 3~alpha values (subpixels) is independently used to blend
-   *   one color channel.  That is, red alpha blends the red channel of the
-   *   text color with the red channel of the background pixel.  The
-   *   distribution of density values by the color-balanced filter assumes
-   *   alpha blending is done in linear space; only then color artifacts
-   *   cancel out.
+   *   The described algorithms can completely remove color artefacts when
+   *   combined with gamma-corrected alpha blending in linear space.
+   *   Each of the 3~alpha values (subpixels) must by independently used to
+   *   blend one color channel.  That is, red alpha blends the red channel of
+   *   the text color with the red channel of the background pixel.
    */
 
 
@@ -145,44 +137,23 @@
    *     results in sometimes severe color fringes.
    *
    *   FT_LCD_FILTER_DEFAULT ::
-   *     The default filter reduces color fringes considerably, at the cost
-   *     of a slight blurriness in the output.
-   *
-   *     It is a beveled, normalized, and color-balanced five-tap filter
-   *     that is more forgiving to screens with non-ideal gamma curves and
-   *     viewing angles.  Note that while color-fringing is reduced, it can
-   *     only be minimized by using linear alpha blending and gamma
-   *     correction to render glyphs onto surfaces.  The default filter
-   *     weights are [0x08 0x4D 0x56 0x4D 0x08].
+   *     This is a beveled, normalized, and color-balanced five-tap filter
+   *     with weights of [0x08 0x4D 0x56 0x4D 0x08] in 1/256th units.
    *
    *   FT_LCD_FILTER_LIGHT ::
-   *     The light filter is a variant that is sharper at the cost of
-   *     slightly more color fringes than the default one.
-   *
-   *     It is a boxy, normalized, and color-balanced three-tap filter that
-   *     is less forgiving to screens with non-ideal gamma curves and
-   *     viewing angles.  This filter works best when the rendering system
-   *     uses linear alpha blending and gamma correction to render glyphs
-   *     onto surfaces.  The light filter weights are
-   *     [0x00 0x55 0x56 0x55 0x00].
+   *     this is a boxy, normalized, and color-balanced three-tap filter
+   *     with weights of [0x00 0x55 0x56 0x55 0x00] in 1/256th units.
    *
    *   FT_LCD_FILTER_LEGACY ::
+   *   FT_LCD_FILTER_LEGACY1 ::
    *     This filter corresponds to the original libXft color filter.  It
    *     provides high contrast output but can exhibit really bad color
    *     fringes if glyphs are not extremely well hinted to the pixel grid.
-   *     In other words, it only works well if the TrueType bytecode
-   *     interpreter is enabled *and* high-quality hinted fonts are used.
-   *
    *     This filter is only provided for comparison purposes, and might be
-   *     disabled or stay unsupported in the future.
-   *
-   *   FT_LCD_FILTER_LEGACY1 ::
-   *     For historical reasons, the FontConfig library returns a different
-   *     enumeration value for legacy LCD filtering.  To make code work that
-   *     (incorrectly) forwards FontConfig's enumeration value to
-   *     @FT_Library_SetLcdFilter without proper mapping, it is thus easiest
-   *     to have another enumeration value, which is completely equal to
-   *     `FT_LCD_FILTER_LEGACY'.
+   *     disabled or stay unsupported in the future. The second value is
+   *     provided for compatibility with FontConfig, which historically
+   *     used different enumeration, sometimes incorrectly forwarded to
+   *     FreeType.
    *
    * @since:
    *   2.3.0 (`FT_LCD_FILTER_LEGACY1' since 2.6.2)
@@ -202,7 +173,7 @@
 
   /**************************************************************************
    *
-   * @func:
+   * @function:
    *   FT_Library_SetLcdFilter
    *
    * @description:
@@ -245,7 +216,7 @@
 
   /**************************************************************************
    *
-   * @func:
+   * @function:
    *   FT_Library_SetLcdFilterWeights
    *
    * @description:
@@ -258,7 +229,7 @@
    *
    *   weights ::
    *     A pointer to an array; the function copies the first five bytes and
-   *     uses them to specify the filter weights.
+   *     uses them to specify the filter weights in 1/256th units.
    *
    * @return:
    *   FreeType error code.  0~means success.
@@ -281,7 +252,8 @@
                                   unsigned char  *weights );
 
 
-  /*
+  /**************************************************************************
+   *
    * @type:
    *   FT_LcdFiveTapFilter
    *
@@ -298,6 +270,53 @@
   typedef FT_Byte  FT_LcdFiveTapFilter[FT_LCD_FILTER_FIVE_TAPS];
 
 
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Library_SetLcdGeometry
+   *
+   * @description:
+   *   This function can be used to modify default positions of color
+   *   subpixels, which controls Harmony LCD rendering.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the target library instance.
+   *
+   *   sub ::
+   *     A pointer to an array of 3 vectors in 26.6 fractional pixel format;
+   *     the function modifies the default values, see the note below.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Subpixel geometry examples:
+   *
+   *   - {{-21, 0}, {0, 0}, {21, 0}} is the default, corresponding to 3 color
+   *   stripes shifted by a third of a pixel. This could be an RGB panel.
+   *
+   *   - {{21, 0}, {0, 0}, {-21, 0}} looks the same as the default but
+   *   can specify a BGR panel instead, while keeping the bitmap in the same
+   *   RGB888 format.
+   *
+   *   - {{0, 21}, {0, 0}, {0, -21}} is the vertical RGB, but the bitmap
+   *   stays RGB888 as a result.
+   *
+   *   - {{-11, 16}, {-11, -16}, {22, 0}} is a certain PenTile arrangement.
+   *
+   *   This function does nothing and returns `FT_Err_Unimplemented_Feature'
+   *   in the context of ClearType-style subpixel rendering when
+   *   FT_CONFIG_OPTION_SUBPIXEL_RENDERING is defined in your build of the
+   *   library.
+   *
+   * @since:
+   *   2.10.0
+   */
+  FT_EXPORT( FT_Error )
+  FT_Library_SetLcdGeometry( FT_Library  library,
+                             FT_Vector   sub[3] );
+
   /* */
 
 
diff --git a/include/freetype/ftlist.h b/include/freetype/ftlist.h
index 117473b..cdea897 100644
--- a/include/freetype/ftlist.h
+++ b/include/freetype/ftlist.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftlist.h                                                               */
-/*                                                                         */
-/*    Generic list support for FreeType (specification).                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftlist.h
+ *
+ *   Generic list support for FreeType (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  This file implements functions relative to list processing.  Its     */
-  /*  data structures are defined in `freetype.h'.                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file implements functions relative to list processing.  Its
+   * data structures are defined in `freetype.h'.
+   *
+   */
 
 
 #ifndef FTLIST_H_
@@ -41,224 +41,246 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    list_processing                                                    */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    List Processing                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Simple management of lists.                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains various definitions related to list          */
-  /*    processing using doubly-linked nodes.                              */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_List                                                            */
-  /*    FT_ListNode                                                        */
-  /*    FT_ListRec                                                         */
-  /*    FT_ListNodeRec                                                     */
-  /*                                                                       */
-  /*    FT_List_Add                                                        */
-  /*    FT_List_Insert                                                     */
-  /*    FT_List_Find                                                       */
-  /*    FT_List_Remove                                                     */
-  /*    FT_List_Up                                                         */
-  /*    FT_List_Iterate                                                    */
-  /*    FT_List_Iterator                                                   */
-  /*    FT_List_Finalize                                                   */
-  /*    FT_List_Destructor                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   list_processing
+   *
+   * @title:
+   *   List Processing
+   *
+   * @abstract:
+   *   Simple management of lists.
+   *
+   * @description:
+   *   This section contains various definitions related to list
+   *   processing using doubly-linked nodes.
+   *
+   * @order:
+   *   FT_List
+   *   FT_ListNode
+   *   FT_ListRec
+   *   FT_ListNodeRec
+   *
+   *   FT_List_Add
+   *   FT_List_Insert
+   *   FT_List_Find
+   *   FT_List_Remove
+   *   FT_List_Up
+   *   FT_List_Iterate
+   *   FT_List_Iterator
+   *   FT_List_Finalize
+   *   FT_List_Destructor
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Find                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Find the list node for a given listed object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*    data :: The address of the listed object.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    List node.  NULL if it wasn't found.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Find
+   *
+   * @description:
+   *   Find the list node for a given listed object.
+   *
+   * @input:
+   *   list ::
+   *     A pointer to the parent list.
+   *   data ::
+   *     The address of the listed object.
+   *
+   * @return:
+   *   List node.  NULL if it wasn't found.
+   */
   FT_EXPORT( FT_ListNode )
   FT_List_Find( FT_List  list,
                 void*    data );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Add                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Append an element to the end of a list.                            */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*    node :: The node to append.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Add
+   *
+   * @description:
+   *   Append an element to the end of a list.
+   *
+   * @inout:
+   *   list ::
+   *     A pointer to the parent list.
+   *   node ::
+   *     The node to append.
+   */
   FT_EXPORT( void )
   FT_List_Add( FT_List      list,
                FT_ListNode  node );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Insert                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Insert an element at the head of a list.                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to parent list.                                  */
-  /*    node :: The node to insert.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Insert
+   *
+   * @description:
+   *   Insert an element at the head of a list.
+   *
+   * @inout:
+   *   list ::
+   *     A pointer to parent list.
+   *   node ::
+   *     The node to insert.
+   */
   FT_EXPORT( void )
   FT_List_Insert( FT_List      list,
                   FT_ListNode  node );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Remove                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Remove a node from a list.  This function doesn't check whether    */
-  /*    the node is in the list!                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    node :: The node to remove.                                        */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Remove
+   *
+   * @description:
+   *   Remove a node from a list.  This function doesn't check whether
+   *   the node is in the list!
+   *
+   * @input:
+   *   node ::
+   *     The node to remove.
+   *
+   * @inout:
+   *   list ::
+   *     A pointer to the parent list.
+   */
   FT_EXPORT( void )
   FT_List_Remove( FT_List      list,
                   FT_ListNode  node );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Up                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Move a node to the head/top of a list.  Used to maintain LRU       */
-  /*    lists.                                                             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*    node :: The node to move.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Up
+   *
+   * @description:
+   *   Move a node to the head/top of a list.  Used to maintain LRU
+   *   lists.
+   *
+   * @inout:
+   *   list ::
+   *     A pointer to the parent list.
+   *   node ::
+   *     The node to move.
+   */
   FT_EXPORT( void )
   FT_List_Up( FT_List      list,
               FT_ListNode  node );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_List_Iterator                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An FT_List iterator function that is called during a list parse    */
-  /*    by @FT_List_Iterate.                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    node :: The current iteration list node.                           */
-  /*                                                                       */
-  /*    user :: A typeless pointer passed to @FT_List_Iterate.             */
-  /*            Can be used to point to the iteration's state.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_List_Iterator
+   *
+   * @description:
+   *   An FT_List iterator function that is called during a list parse
+   *   by @FT_List_Iterate.
+   *
+   * @input:
+   *   node ::
+   *     The current iteration list node.
+   *
+   *   user ::
+   *     A typeless pointer passed to @FT_List_Iterate.
+   *     Can be used to point to the iteration's state.
+   */
   typedef FT_Error
   (*FT_List_Iterator)( FT_ListNode  node,
                        void*        user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Iterate                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parse a list and calls a given iterator function on each element.  */
-  /*    Note that parsing is stopped as soon as one of the iterator calls  */
-  /*    returns a non-zero value.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    list     :: A handle to the list.                                  */
-  /*    iterator :: An iterator function, called on each node of the list. */
-  /*    user     :: A user-supplied field that is passed as the second     */
-  /*                argument to the iterator.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result (a FreeType error code) of the last iterator call.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Iterate
+   *
+   * @description:
+   *   Parse a list and calls a given iterator function on each element.
+   *   Note that parsing is stopped as soon as one of the iterator calls
+   *   returns a non-zero value.
+   *
+   * @input:
+   *   list ::
+   *     A handle to the list.
+   *   iterator ::
+   *     An iterator function, called on each node of the list.
+   *   user ::
+   *     A user-supplied field that is passed as the second
+   *     argument to the iterator.
+   *
+   * @return:
+   *   The result (a FreeType error code) of the last iterator call.
+   */
   FT_EXPORT( FT_Error )
   FT_List_Iterate( FT_List           list,
                    FT_List_Iterator  iterator,
                    void*             user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_List_Destructor                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An @FT_List iterator function that is called during a list         */
-  /*    finalization by @FT_List_Finalize to destroy all elements in a     */
-  /*    given list.                                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: The current system object.                               */
-  /*                                                                       */
-  /*    data   :: The current object to destroy.                           */
-  /*                                                                       */
-  /*    user   :: A typeless pointer passed to @FT_List_Iterate.  It can   */
-  /*              be used to point to the iteration's state.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_List_Destructor
+   *
+   * @description:
+   *   An @FT_List iterator function that is called during a list
+   *   finalization by @FT_List_Finalize to destroy all elements in a
+   *   given list.
+   *
+   * @input:
+   *   system ::
+   *     The current system object.
+   *
+   *   data ::
+   *     The current object to destroy.
+   *
+   *   user ::
+   *     A typeless pointer passed to @FT_List_Iterate.  It can
+   *     be used to point to the iteration's state.
+   */
   typedef void
   (*FT_List_Destructor)( FT_Memory  memory,
                          void*      data,
                          void*      user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_List_Finalize                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy all elements in the list as well as the list itself.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    list    :: A handle to the list.                                   */
-  /*                                                                       */
-  /*    destroy :: A list destructor that will be applied to each element  */
-  /*               of the list.  Set this to NULL if not needed.           */
-  /*                                                                       */
-  /*    memory  :: The current memory object that handles deallocation.    */
-  /*                                                                       */
-  /*    user    :: A user-supplied field that is passed as the last        */
-  /*               argument to the destructor.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function expects that all nodes added by @FT_List_Add or      */
-  /*    @FT_List_Insert have been dynamically allocated.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Finalize
+   *
+   * @description:
+   *   Destroy all elements in the list as well as the list itself.
+   *
+   * @input:
+   *   list ::
+   *     A handle to the list.
+   *
+   *   destroy ::
+   *     A list destructor that will be applied to each element
+   *     of the list.  Set this to NULL if not needed.
+   *
+   *   memory ::
+   *     The current memory object that handles deallocation.
+   *
+   *   user ::
+   *     A user-supplied field that is passed as the last
+   *     argument to the destructor.
+   *
+   * @note:
+   *   This function expects that all nodes added by @FT_List_Add or
+   *   @FT_List_Insert have been dynamically allocated.
+   */
   FT_EXPORT( void )
   FT_List_Finalize( FT_List             list,
                     FT_List_Destructor  destroy,
diff --git a/include/freetype/ftlzw.h b/include/freetype/ftlzw.h
index 1615912..01433ca 100644
--- a/include/freetype/ftlzw.h
+++ b/include/freetype/ftlzw.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftlzw.h                                                                */
-/*                                                                         */
-/*    LZW-compressed stream support.                                       */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftlzw.h
+ *
+ *   LZW-compressed stream support.
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTLZW_H_
@@ -31,59 +31,61 @@
 
 FT_BEGIN_HEADER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    lzw                                                                */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    LZW Streams                                                        */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Using LZW-compressed font files.                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of LZW-specific functions.   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   lzw
+   *
+   * @title:
+   *   LZW Streams
+   *
+   * @abstract:
+   *   Using LZW-compressed font files.
+   *
+   * @description:
+   *   This section contains the declaration of LZW-specific functions.
+   *
+   */
 
- /************************************************************************
-  *
-  * @function:
-  *   FT_Stream_OpenLZW
-  *
-  * @description:
-  *   Open a new stream to parse LZW-compressed font files.  This is
-  *   mainly used to support the compressed `*.pcf.Z' fonts that come
-  *   with XFree86.
-  *
-  * @input:
-  *   stream :: The target embedding stream.
-  *
-  *   source :: The source stream.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   The source stream must be opened _before_ calling this function.
-  *
-  *   Calling the internal function `FT_Stream_Close' on the new stream will
-  *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
-  *   objects will be released to the heap.
-  *
-  *   The stream implementation is very basic and resets the decompression
-  *   process each time seeking backwards is needed within the stream
-  *
-  *   In certain builds of the library, LZW compression recognition is
-  *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
-  *   This means that if no font driver is capable of handling the raw
-  *   compressed file, the library will try to open a LZW stream from it
-  *   and re-open the face with it.
-  *
-  *   This function may return `FT_Err_Unimplemented_Feature' if your build
-  *   of FreeType was not compiled with LZW support.
-  */
+  /************************************************************************
+   *
+   * @function:
+   *   FT_Stream_OpenLZW
+   *
+   * @description:
+   *   Open a new stream to parse LZW-compressed font files.  This is
+   *   mainly used to support the compressed `*.pcf.Z' fonts that come
+   *   with XFree86.
+   *
+   * @input:
+   *   stream ::
+   *     The target embedding stream.
+   *
+   *   source ::
+   *     The source stream.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The source stream must be opened _before_ calling this function.
+   *
+   *   Calling the internal function `FT_Stream_Close' on the new stream will
+   *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
+   *   objects will be released to the heap.
+   *
+   *   The stream implementation is very basic and resets the decompression
+   *   process each time seeking backwards is needed within the stream
+   *
+   *   In certain builds of the library, LZW compression recognition is
+   *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
+   *   This means that if no font driver is capable of handling the raw
+   *   compressed file, the library will try to open a LZW stream from it
+   *   and re-open the face with it.
+   *
+   *   This function may return `FT_Err_Unimplemented_Feature' if your build
+   *   of FreeType was not compiled with LZW support.
+   */
   FT_EXPORT( FT_Error )
   FT_Stream_OpenLZW( FT_Stream  stream,
                      FT_Stream  source );
diff --git a/include/freetype/ftmac.h b/include/freetype/ftmac.h
index c1e497c..4249ff5 100644
--- a/include/freetype/ftmac.h
+++ b/include/freetype/ftmac.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmac.h                                                                */
-/*                                                                         */
-/*    Additional Mac-specific API.                                         */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.     */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmac.h
+ *
+ *   Additional Mac-specific API.
+ *
+ * Copyright 1996-2018 by
+ * Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* NOTE: Include this file after FT_FREETYPE_H and after any               */
-/*       Mac-specific headers (because this header uses Mac types such as  */
-/*       Handle, FSSpec, FSRef, etc.)                                      */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * NOTE: Include this file after FT_FREETYPE_H and after any
+ *       Mac-specific headers (because this header uses Mac types such as
+ *       Handle, FSSpec, FSRef, etc.)
+ *
+ */
 
 
 #ifndef FTMAC_H_
@@ -47,56 +47,60 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    mac_specific                                                       */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Mac Specific Interface                                             */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Only available on the Macintosh.                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The following definitions are only available if FreeType is        */
-  /*    compiled on a Macintosh.                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   mac_specific
+   *
+   * @title:
+   *   Mac Specific Interface
+   *
+   * @abstract:
+   *   Only available on the Macintosh.
+   *
+   * @description:
+   *   The following definitions are only available if FreeType is
+   *   compiled on a Macintosh.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face_From_FOND                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new face object from a FOND resource.                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    fond       :: A FOND resource.                                     */
-  /*                                                                       */
-  /*    face_index :: Only supported for the -1 `sanity check' special     */
-  /*                  case.                                                */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Notes>                                                               */
-  /*    This function can be used to create @FT_Face objects from fonts    */
-  /*    that are installed in the system as follows.                       */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      fond = GetResource( 'FOND', fontName );                          */
-  /*      error = FT_New_Face_From_FOND( library, fond, 0, &face );        */
-  /*    }                                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Face_From_FOND
+   *
+   * @description:
+   *   Create a new face object from a FOND resource.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   fond ::
+   *     A FOND resource.
+   *
+   *   face_index ::
+   *     Only supported for the -1 `sanity check' special
+   *     case.
+   *
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @example:
+   *   This function can be used to create @FT_Face objects from fonts
+   *   that are installed in the system as follows.
+   *
+   *   {
+   *     fond  = GetResource( 'FOND', fontName );
+   *     error = FT_New_Face_From_FOND( library, fond, 0, &face );
+   *   }
+   */
   FT_EXPORT( FT_Error )
   FT_New_Face_From_FOND( FT_Library  library,
                          Handle      fond,
@@ -105,28 +109,31 @@
                        FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_GetFile_From_Mac_Name                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return an FSSpec for the disk file containing the named font.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    fontName   :: Mac OS name of the font (e.g., Times New Roman       */
-  /*                  Bold).                                               */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    pathSpec   :: FSSpec to the file.  For passing to                  */
-  /*                  @FT_New_Face_From_FSSpec.                            */
-  /*                                                                       */
-  /*    face_index :: Index of the face.  For passing to                   */
-  /*                  @FT_New_Face_From_FSSpec.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_GetFile_From_Mac_Name
+   *
+   * @description:
+   *   Return an FSSpec for the disk file containing the named font.
+   *
+   * @input:
+   *   fontName ::
+   *     Mac OS name of the font (e.g., Times New Roman
+   *     Bold).
+   *
+   * @output:
+   *   pathSpec ::
+   *     FSSpec to the file.  For passing to
+   *     @FT_New_Face_From_FSSpec.
+   *
+   *   face_index ::
+   *     Index of the face.  For passing to
+   *     @FT_New_Face_From_FSSpec.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_GetFile_From_Mac_Name( const char*  fontName,
                             FSSpec*      pathSpec,
@@ -134,27 +141,30 @@
                           FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_GetFile_From_Mac_ATS_Name                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return an FSSpec for the disk file containing the named font.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    fontName   :: Mac OS name of the font in ATS framework.            */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    pathSpec   :: FSSpec to the file. For passing to                   */
-  /*                  @FT_New_Face_From_FSSpec.                            */
-  /*                                                                       */
-  /*    face_index :: Index of the face. For passing to                    */
-  /*                  @FT_New_Face_From_FSSpec.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_GetFile_From_Mac_ATS_Name
+   *
+   * @description:
+   *   Return an FSSpec for the disk file containing the named font.
+   *
+   * @input:
+   *   fontName ::
+   *     Mac OS name of the font in ATS framework.
+   *
+   * @output:
+   *   pathSpec ::
+   *     FSSpec to the file. For passing to
+   *     @FT_New_Face_From_FSSpec.
+   *
+   *   face_index ::
+   *     Index of the face. For passing to
+   *     @FT_New_Face_From_FSSpec.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_GetFile_From_Mac_ATS_Name( const char*  fontName,
                                 FSSpec*      pathSpec,
@@ -162,30 +172,34 @@
                               FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_GetFilePath_From_Mac_ATS_Name                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a pathname of the disk file and face index for given font   */
-  /*    name that is handled by ATS framework.                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    fontName    :: Mac OS name of the font in ATS framework.           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    path        :: Buffer to store pathname of the file.  For passing  */
-  /*                   to @FT_New_Face.  The client must allocate this     */
-  /*                   buffer before calling this function.                */
-  /*                                                                       */
-  /*    maxPathSize :: Lengths of the buffer `path' that client allocated. */
-  /*                                                                       */
-  /*    face_index  :: Index of the face.  For passing to @FT_New_Face.    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_GetFilePath_From_Mac_ATS_Name
+   *
+   * @description:
+   *   Return a pathname of the disk file and face index for given font
+   *   name that is handled by ATS framework.
+   *
+   * @input:
+   *   fontName ::
+   *     Mac OS name of the font in ATS framework.
+   *
+   * @output:
+   *   path ::
+   *     Buffer to store pathname of the file.  For passing
+   *     to @FT_New_Face.  The client must allocate this
+   *     buffer before calling this function.
+   *
+   *   maxPathSize ::
+   *     Lengths of the buffer `path' that client allocated.
+   *
+   *   face_index ::
+   *     Index of the face.  For passing to @FT_New_Face.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_GetFilePath_From_Mac_ATS_Name( const char*  fontName,
                                     UInt8*       path,
@@ -194,33 +208,37 @@
                                   FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face_From_FSSpec                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new face object from a given resource and typeface index  */
-  /*    using an FSSpec to the font file.                                  */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    spec       :: FSSpec to the font file.                             */
-  /*                                                                       */
-  /*    face_index :: The index of the face within the resource.  The      */
-  /*                  first face has index~0.                              */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    @FT_New_Face_From_FSSpec is identical to @FT_New_Face except       */
-  /*    it accepts an FSSpec instead of a path.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Face_From_FSSpec
+   *
+   * @description:
+   *   Create a new face object from a given resource and typeface index
+   *   using an FSSpec to the font file.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   spec ::
+   *     FSSpec to the font file.
+   *
+   *   face_index ::
+   *     The index of the face within the resource.  The
+   *     first face has index~0.
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   @FT_New_Face_From_FSSpec is identical to @FT_New_Face except
+   *   it accepts an FSSpec instead of a path.
+   */
   FT_EXPORT( FT_Error )
   FT_New_Face_From_FSSpec( FT_Library     library,
                            const FSSpec  *spec,
@@ -229,33 +247,37 @@
                          FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face_From_FSRef                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new face object from a given resource and typeface index  */
-  /*    using an FSRef to the font file.                                   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    spec       :: FSRef to the font file.                              */
-  /*                                                                       */
-  /*    face_index :: The index of the face within the resource.  The      */
-  /*                  first face has index~0.                              */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    @FT_New_Face_From_FSRef is identical to @FT_New_Face except        */
-  /*    it accepts an FSRef instead of a path.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Face_From_FSRef
+   *
+   * @description:
+   *   Create a new face object from a given resource and typeface index
+   *   using an FSRef to the font file.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   spec ::
+   *     FSRef to the font file.
+   *
+   *   face_index ::
+   *     The index of the face within the resource.  The
+   *     first face has index~0.
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   @FT_New_Face_From_FSRef is identical to @FT_New_Face except
+   *   it accepts an FSRef instead of a path.
+   */
   FT_EXPORT( FT_Error )
   FT_New_Face_From_FSRef( FT_Library    library,
                           const FSRef  *ref,
diff --git a/include/freetype/ftmm.h b/include/freetype/ftmm.h
index 9948102..a903241 100644
--- a/include/freetype/ftmm.h
+++ b/include/freetype/ftmm.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmm.h                                                                 */
-/*                                                                         */
-/*    FreeType Multiple Master font interface (specification).             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmm.h
+ *
+ *   FreeType Multiple Master font interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTMM_H_
@@ -27,49 +27,52 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    multiple_masters                                                   */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Multiple Masters                                                   */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    How to manage Multiple Masters fonts.                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The following types and functions are used to manage Multiple      */
-  /*    Master fonts, i.e., the selection of specific design instances by  */
-  /*    setting design axis coordinates.                                   */
-  /*                                                                       */
-  /*    Besides Adobe MM fonts, the interface supports Apple's TrueType GX */
-  /*    and OpenType variation fonts.  Some of the routines only work with */
-  /*    Adobe MM fonts, others will work with all three types.  They are   */
-  /*    similar enough that a consistent interface makes sense.            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   multiple_masters
+   *
+   * @title:
+   *   Multiple Masters
+   *
+   * @abstract:
+   *   How to manage Multiple Masters fonts.
+   *
+   * @description:
+   *   The following types and functions are used to manage Multiple
+   *   Master fonts, i.e., the selection of specific design instances by
+   *   setting design axis coordinates.
+   *
+   *   Besides Adobe MM fonts, the interface supports Apple's TrueType GX
+   *   and OpenType variation fonts.  Some of the routines only work with
+   *   Adobe MM fonts, others will work with all three types.  They are
+   *   similar enough that a consistent interface makes sense.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_MM_Axis                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a given axis in design space for Multiple     */
-  /*    Masters fonts.                                                     */
-  /*                                                                       */
-  /*    This structure can't be used for TrueType GX or OpenType variation */
-  /*    fonts.                                                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    name    :: The axis's name.                                        */
-  /*                                                                       */
-  /*    minimum :: The axis's minimum design coordinate.                   */
-  /*                                                                       */
-  /*    maximum :: The axis's maximum design coordinate.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_MM_Axis
+   *
+   * @description:
+   *   A structure to model a given axis in design space for Multiple
+   *   Masters fonts.
+   *
+   *   This structure can't be used for TrueType GX or OpenType variation
+   *   fonts.
+   *
+   * @fields:
+   *   name ::
+   *     The axis's name.
+   *
+   *   minimum ::
+   *     The axis's minimum design coordinate.
+   *
+   *   maximum ::
+   *     The axis's maximum design coordinate.
+   */
   typedef struct  FT_MM_Axis_
   {
     FT_String*  name;
@@ -79,28 +82,31 @@
   } FT_MM_Axis;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Multi_Master                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model the axes and space of a Multiple Masters      */
-  /*    font.                                                              */
-  /*                                                                       */
-  /*    This structure can't be used for TrueType GX or OpenType variation */
-  /*    fonts.                                                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_axis    :: Number of axes.  Cannot exceed~4.                   */
-  /*                                                                       */
-  /*    num_designs :: Number of designs; should be normally 2^num_axis    */
-  /*                   even though the Type~1 specification strangely      */
-  /*                   allows for intermediate designs to be present.      */
-  /*                   This number cannot exceed~16.                       */
-  /*                                                                       */
-  /*    axis        :: A table of axis descriptors.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Multi_Master
+   *
+   * @description:
+   *   A structure to model the axes and space of a Multiple Masters
+   *   font.
+   *
+   *   This structure can't be used for TrueType GX or OpenType variation
+   *   fonts.
+   *
+   * @fields:
+   *   num_axis ::
+   *     Number of axes.  Cannot exceed~4.
+   *
+   *   num_designs ::
+   *     Number of designs; should be normally 2^num_axis
+   *     even though the Type~1 specification strangely
+   *     allows for intermediate designs to be present.
+   *     This number cannot exceed~16.
+   *
+   *   axis ::
+   *     A table of axis descriptors.
+   */
   typedef struct  FT_Multi_Master_
   {
     FT_UInt     num_axis;
@@ -110,42 +116,48 @@
   } FT_Multi_Master;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Var_Axis                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a given axis in design space for Multiple     */
-  /*    Masters, TrueType GX, and OpenType variation fonts.                */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    name    :: The axis's name.                                        */
-  /*               Not always meaningful for TrueType GX or OpenType       */
-  /*               variation fonts.                                        */
-  /*                                                                       */
-  /*    minimum :: The axis's minimum design coordinate.                   */
-  /*                                                                       */
-  /*    def     :: The axis's default design coordinate.                   */
-  /*               FreeType computes meaningful default values for Adobe   */
-  /*               MM fonts.                                               */
-  /*                                                                       */
-  /*    maximum :: The axis's maximum design coordinate.                   */
-  /*                                                                       */
-  /*    tag     :: The axis's tag (the equivalent to `name' for TrueType   */
-  /*               GX and OpenType variation fonts).  FreeType provides    */
-  /*               default values for Adobe MM fonts if possible.          */
-  /*                                                                       */
-  /*    strid   :: The axis name entry in the font's `name' table.  This   */
-  /*               is another (and often better) version of the `name'     */
-  /*               field for TrueType GX or OpenType variation fonts.  Not */
-  /*               meaningful for Adobe MM fonts.                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The fields `minimum', `def', and `maximum' are 16.16 fractional    */
-  /*    values for TrueType GX and OpenType variation fonts.  For Adobe MM */
-  /*    fonts, the values are integers.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Var_Axis
+   *
+   * @description:
+   *   A structure to model a given axis in design space for Multiple
+   *   Masters, TrueType GX, and OpenType variation fonts.
+   *
+   * @fields:
+   *   name ::
+   *     The axis's name.
+   *     Not always meaningful for TrueType GX or OpenType
+   *     variation fonts.
+   *
+   *   minimum ::
+   *     The axis's minimum design coordinate.
+   *
+   *   def ::
+   *     The axis's default design coordinate.
+   *     FreeType computes meaningful default values for Adobe
+   *     MM fonts.
+   *
+   *   maximum ::
+   *     The axis's maximum design coordinate.
+   *
+   *   tag ::
+   *     The axis's tag (the equivalent to `name' for TrueType
+   *     GX and OpenType variation fonts).  FreeType provides
+   *     default values for Adobe MM fonts if possible.
+   *
+   *   strid ::
+   *     The axis name entry in the font's `name' table.  This
+   *     is another (and often better) version of the `name'
+   *     field for TrueType GX or OpenType variation fonts.  Not
+   *     meaningful for Adobe MM fonts.
+   *
+   * @note:
+   *   The fields `minimum', `def', and `maximum' are 16.16 fractional
+   *   values for TrueType GX and OpenType variation fonts.  For Adobe MM
+   *   fonts, the values are integers.
+   */
   typedef struct  FT_Var_Axis_
   {
     FT_String*  name;
@@ -160,27 +172,30 @@
   } FT_Var_Axis;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Var_Named_Style                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a named instance in a TrueType GX or OpenType */
-  /*    variation font.                                                    */
-  /*                                                                       */
-  /*    This structure can't be used for Adobe MM fonts.                   */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    coords :: The design coordinates for this instance.                */
-  /*              This is an array with one entry for each axis.           */
-  /*                                                                       */
-  /*    strid  :: The entry in `name' table identifying this instance.     */
-  /*                                                                       */
-  /*    psid   :: The entry in `name' table identifying a PostScript name  */
-  /*              for this instance.  Value 0xFFFF indicates a missing     */
-  /*              entry.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Var_Named_Style
+   *
+   * @description:
+   *   A structure to model a named instance in a TrueType GX or OpenType
+   *   variation font.
+   *
+   *   This structure can't be used for Adobe MM fonts.
+   *
+   * @fields:
+   *   coords ::
+   *     The design coordinates for this instance.
+   *     This is an array with one entry for each axis.
+   *
+   *   strid ::
+   *     The entry in `name' table identifying this instance.
+   *
+   *   psid ::
+   *     The entry in `name' table identifying a PostScript name
+   *     for this instance.  Value 0xFFFF indicates a missing
+   *     entry.
+   */
   typedef struct  FT_Var_Named_Style_
   {
     FT_Fixed*  coords;
@@ -190,50 +205,55 @@
   } FT_Var_Named_Style;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_MM_Var                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model the axes and space of an Adobe MM, TrueType   */
-  /*    GX, or OpenType variation font.                                    */
-  /*                                                                       */
-  /*    Some fields are specific to one format and not to the others.      */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_axis        :: The number of axes.  The maximum value is~4 for */
-  /*                       Adobe MM fonts; no limit in TrueType GX or      */
-  /*                       OpenType variation fonts.                       */
-  /*                                                                       */
-  /*    num_designs     :: The number of designs; should be normally       */
-  /*                       2^num_axis for Adobe MM fonts.  Not meaningful  */
-  /*                       for TrueType GX or OpenType variation fonts     */
-  /*                       (where every glyph could have a different       */
-  /*                       number of designs).                             */
-  /*                                                                       */
-  /*    num_namedstyles :: The number of named styles; a `named style' is  */
-  /*                       a tuple of design coordinates that has a string */
-  /*                       ID (in the `name' table) associated with it.    */
-  /*                       The font can tell the user that, for example,   */
-  /*                       [Weight=1.5,Width=1.1] is `Bold'.  Another name */
-  /*                       for `named style' is `named instance'.          */
-  /*                                                                       */
-  /*                       For Adobe Multiple Masters fonts, this value is */
-  /*                       always zero because the format does not support */
-  /*                       named styles.                                   */
-  /*                                                                       */
-  /*    axis            :: An axis descriptor table.                       */
-  /*                       TrueType GX and OpenType variation fonts        */
-  /*                       contain slightly more data than Adobe MM fonts. */
-  /*                       Memory management of this pointer is done       */
-  /*                       internally by FreeType.                         */
-  /*                                                                       */
-  /*    namedstyle      :: A named style (instance) table.                 */
-  /*                       Only meaningful for TrueType GX and OpenType    */
-  /*                       variation fonts.  Memory management of this     */
-  /*                       pointer is done internally by FreeType.         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_MM_Var
+   *
+   * @description:
+   *   A structure to model the axes and space of an Adobe MM, TrueType
+   *   GX, or OpenType variation font.
+   *
+   *   Some fields are specific to one format and not to the others.
+   *
+   * @fields:
+   *   num_axis ::
+   *     The number of axes.  The maximum value is~4 for
+   *     Adobe MM fonts; no limit in TrueType GX or
+   *     OpenType variation fonts.
+   *
+   *   num_designs ::
+   *     The number of designs; should be normally
+   *     2^num_axis for Adobe MM fonts.  Not meaningful
+   *     for TrueType GX or OpenType variation fonts
+   *     (where every glyph could have a different
+   *     number of designs).
+   *
+   *   num_namedstyles ::
+   *     The number of named styles; a `named style' is
+   *     a tuple of design coordinates that has a string
+   *     ID (in the `name' table) associated with it.
+   *     The font can tell the user that, for example,
+   *     [Weight=1.5,Width=1.1] is `Bold'.  Another name
+   *     for `named style' is `named instance'.
+   *
+   *     For Adobe Multiple Masters fonts, this value is
+   *     always zero because the format does not support
+   *     named styles.
+   *
+   *   axis ::
+   *     An axis descriptor table.
+   *     TrueType GX and OpenType variation fonts
+   *     contain slightly more data than Adobe MM fonts.
+   *     Memory management of this pointer is done
+   *     internally by FreeType.
+   *
+   *   namedstyle ::
+   *     A named style (instance) table.
+   *     Only meaningful for TrueType GX and OpenType
+   *     variation fonts.  Memory management of this
+   *     pointer is done internally by FreeType.
+   */
   typedef struct  FT_MM_Var_
   {
     FT_UInt              num_axis;
@@ -245,384 +265,409 @@
   } FT_MM_Var;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Multi_Master                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve a variation descriptor of a given Adobe MM font.          */
-  /*                                                                       */
-  /*    This function can't be used with TrueType GX or OpenType variation */
-  /*    fonts.                                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face    :: A handle to the source face.                            */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    amaster :: The Multiple Masters descriptor.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Multi_Master
+   *
+   * @description:
+   *   Retrieve a variation descriptor of a given Adobe MM font.
+   *
+   *   This function can't be used with TrueType GX or OpenType variation
+   *   fonts.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @output:
+   *   amaster ::
+   *     The Multiple Masters descriptor.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Multi_Master( FT_Face           face,
                        FT_Multi_Master  *amaster );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_MM_Var                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve a variation descriptor for a given font.                  */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face    :: A handle to the source face.                            */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    amaster :: The variation descriptor.                               */
-  /*               Allocates a data structure, which the user must         */
-  /*               deallocate with a call to @FT_Done_MM_Var after use.    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_MM_Var
+   *
+   * @description:
+   *   Retrieve a variation descriptor for a given font.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @output:
+   *   amaster ::
+   *     The variation descriptor.
+   *     Allocates a data structure, which the user must
+   *     deallocate with a call to @FT_Done_MM_Var after use.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_MM_Var( FT_Face      face,
                  FT_MM_Var*  *amaster );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_MM_Var                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Free the memory allocated by @FT_Get_MM_Var.                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle of the face's parent library object that was   */
-  /*               used in the call to @FT_Get_MM_Var to create `amaster'. */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_MM_Var
+   *
+   * @description:
+   *   Free the memory allocated by @FT_Get_MM_Var.
+   *
+   * @input:
+   *   library ::
+   *     A handle of the face's parent library object that was
+   *     used in the call to @FT_Get_MM_Var to create `amaster'.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Done_MM_Var( FT_Library   library,
                   FT_MM_Var   *amaster );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_MM_Design_Coordinates                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    For Adobe MM fonts, choose an interpolated font design through     */
-  /*    design coordinates.                                                */
-  /*                                                                       */
-  /*    This function can't be used with TrueType GX or OpenType variation */
-  /*    fonts.                                                             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available design coordinates.  If it   */
-  /*                  is larger than the number of axes, ignore the excess */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use default values for the remaining axes.           */
-  /*                                                                       */
-  /*    coords     :: An array of design coordinates.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    [Since 2.8.1] To reset all axes to the default values, call the    */
-  /*    function with `num_coords' set to zero and `coords' set to NULL.   */
-  /*                                                                       */
-  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
-  /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
-  /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
-  /*    is zero, this bit flag gets unset.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_MM_Design_Coordinates
+   *
+   * @description:
+   *   For Adobe MM fonts, choose an interpolated font design through
+   *   design coordinates.
+   *
+   *   This function can't be used with TrueType GX or OpenType variation
+   *   fonts.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @input:
+   *   num_coords ::
+   *     The number of available design coordinates.  If it
+   *     is larger than the number of axes, ignore the excess
+   *     values.  If it is smaller than the number of axes,
+   *     use default values for the remaining axes.
+   *
+   *   coords ::
+   *     An array of design coordinates.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   [Since 2.8.1] To reset all axes to the default values, call the
+   *   function with `num_coords' set to zero and `coords' set to NULL.
+   *
+   *   [Since 2.9] If `num_coords' is larger than zero, this function
+   *   sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'
+   *   field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'
+   *   is zero, this bit flag gets unset.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_MM_Design_Coordinates( FT_Face   face,
                                 FT_UInt   num_coords,
                                 FT_Long*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Var_Design_Coordinates                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Choose an interpolated font design through design coordinates.     */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available design coordinates.  If it   */
-  /*                  is larger than the number of axes, ignore the excess */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use default values for the remaining axes.           */
-  /*                                                                       */
-  /*    coords     :: An array of design coordinates.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    [Since 2.8.1] To reset all axes to the default values, call the    */
-  /*    function with `num_coords' set to zero and `coords' set to NULL.   */
-  /*    [Since 2.9] `Default values' means the currently selected named    */
-  /*    instance (or the base font if no named instance is selected).      */
-  /*                                                                       */
-  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
-  /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
-  /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
-  /*    is zero, this bit flag gets unset.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Var_Design_Coordinates
+   *
+   * @description:
+   *   Choose an interpolated font design through design coordinates.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @input:
+   *   num_coords ::
+   *     The number of available design coordinates.  If it
+   *     is larger than the number of axes, ignore the excess
+   *     values.  If it is smaller than the number of axes,
+   *     use default values for the remaining axes.
+   *
+   *   coords ::
+   *     An array of design coordinates.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   [Since 2.8.1] To reset all axes to the default values, call the
+   *   function with `num_coords' set to zero and `coords' set to NULL.
+   *   [Since 2.9] `Default values' means the currently selected named
+   *   instance (or the base font if no named instance is selected).
+   *
+   *   [Since 2.9] If `num_coords' is larger than zero, this function
+   *   sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'
+   *   field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'
+   *   is zero, this bit flag gets unset.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Var_Design_Coordinates( FT_Face    face,
                                  FT_UInt    num_coords,
                                  FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Var_Design_Coordinates                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the design coordinates of the currently selected interpolated  */
-  /*    font.                                                              */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /*    num_coords :: The number of design coordinates to retrieve.  If it */
-  /*                  is larger than the number of axes, set the excess    */
-  /*                  values to~0.                                         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    coords     :: The design coordinates array.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.7.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Var_Design_Coordinates
+   *
+   * @description:
+   *   Get the design coordinates of the currently selected interpolated
+   *   font.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   num_coords ::
+   *     The number of design coordinates to retrieve.  If it
+   *     is larger than the number of axes, set the excess
+   *     values to~0.
+   *
+   * @output:
+   *   coords ::
+   *     The design coordinates array.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.7.1
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Var_Design_Coordinates( FT_Face    face,
                                  FT_UInt    num_coords,
                                  FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_MM_Blend_Coordinates                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Choose an interpolated font design through normalized blend        */
-  /*    coordinates.                                                       */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available design coordinates.  If it   */
-  /*                  is larger than the number of axes, ignore the excess */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use default values for the remaining axes.           */
-  /*                                                                       */
-  /*    coords     :: The design coordinates array (each element must be   */
-  /*                  between 0 and 1.0 for Adobe MM fonts, and between    */
-  /*                  -1.0 and 1.0 for TrueType GX and OpenType variation  */
-  /*                  fonts).                                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    [Since 2.8.1] To reset all axes to the default values, call the    */
-  /*    function with `num_coords' set to zero and `coords' set to NULL.   */
-  /*    [Since 2.9] `Default values' means the currently selected named    */
-  /*    instance (or the base font if no named instance is selected).      */
-  /*                                                                       */
-  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
-  /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
-  /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
-  /*    is zero, this bit flag gets unset.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_MM_Blend_Coordinates
+   *
+   * @description:
+   *   Choose an interpolated font design through normalized blend
+   *   coordinates.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @input:
+   *   num_coords ::
+   *     The number of available design coordinates.  If it
+   *     is larger than the number of axes, ignore the excess
+   *     values.  If it is smaller than the number of axes,
+   *     use default values for the remaining axes.
+   *
+   *   coords ::
+   *     The design coordinates array (each element must be
+   *     between 0 and 1.0 for Adobe MM fonts, and between
+   *     -1.0 and 1.0 for TrueType GX and OpenType variation
+   *     fonts).
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   [Since 2.8.1] To reset all axes to the default values, call the
+   *   function with `num_coords' set to zero and `coords' set to NULL.
+   *   [Since 2.9] `Default values' means the currently selected named
+   *   instance (or the base font if no named instance is selected).
+   *
+   *   [Since 2.9] If `num_coords' is larger than zero, this function
+   *   sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'
+   *   field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'
+   *   is zero, this bit flag gets unset.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_MM_Blend_Coordinates( FT_Face    face,
                                FT_UInt    num_coords,
                                FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_MM_Blend_Coordinates                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the normalized blend coordinates of the currently selected     */
-  /*    interpolated font.                                                 */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /*    num_coords :: The number of normalized blend coordinates to        */
-  /*                  retrieve.  If it is larger than the number of axes,  */
-  /*                  set the excess values to~0.5 for Adobe MM fonts, and */
-  /*                  to~0 for TrueType GX and OpenType variation fonts.   */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    coords     :: The normalized blend coordinates array.              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.7.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_MM_Blend_Coordinates
+   *
+   * @description:
+   *   Get the normalized blend coordinates of the currently selected
+   *   interpolated font.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   num_coords ::
+   *     The number of normalized blend coordinates to
+   *     retrieve.  If it is larger than the number of axes,
+   *     set the excess values to~0.5 for Adobe MM fonts, and
+   *     to~0 for TrueType GX and OpenType variation fonts.
+   *
+   * @output:
+   *   coords ::
+   *     The normalized blend coordinates array.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.7.1
+   */
   FT_EXPORT( FT_Error )
   FT_Get_MM_Blend_Coordinates( FT_Face    face,
                                FT_UInt    num_coords,
                                FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Var_Blend_Coordinates                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This is another name of @FT_Set_MM_Blend_Coordinates.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Var_Blend_Coordinates
+   *
+   * @description:
+   *   This is another name of @FT_Set_MM_Blend_Coordinates.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Var_Blend_Coordinates( FT_Face    face,
                                 FT_UInt    num_coords,
                                 FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Var_Blend_Coordinates                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This is another name of @FT_Get_MM_Blend_Coordinates.              */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.7.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Var_Blend_Coordinates
+   *
+   * @description:
+   *   This is another name of @FT_Get_MM_Blend_Coordinates.
+   *
+   * @since:
+   *   2.7.1
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Var_Blend_Coordinates( FT_Face    face,
                                 FT_UInt    num_coords,
                                 FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_VAR_AXIS_FLAG_XXX                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit flags used in the return value of                    */
-  /*    @FT_Get_Var_Axis_Flags.                                            */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_VAR_AXIS_FLAG_HIDDEN ::                                         */
-  /*      The variation axis should not be exposed to user interfaces.     */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_VAR_AXIS_FLAG_XXX
+   *
+   * @description:
+   *   A list of bit flags used in the return value of
+   *   @FT_Get_Var_Axis_Flags.
+   *
+   * @values:
+   *   FT_VAR_AXIS_FLAG_HIDDEN ::
+   *     The variation axis should not be exposed to user interfaces.
+   *
+   * @since:
+   *   2.8.1
+   */
 #define FT_VAR_AXIS_FLAG_HIDDEN  1
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Var_Axis_Flags                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the `flags' field of an OpenType Variation Axis Record.        */
-  /*                                                                       */
-  /*    Not meaningful for Adobe MM fonts (`*flags' is always zero).       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    master     :: The variation descriptor.                            */
-  /*                                                                       */
-  /*    axis_index :: The index of the requested variation axis.           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    flags      :: The `flags' field.  See @FT_VAR_AXIS_FLAG_XXX for    */
-  /*                  possible values.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Var_Axis_Flags
+   *
+   * @description:
+   *   Get the `flags' field of an OpenType Variation Axis Record.
+   *
+   *   Not meaningful for Adobe MM fonts (`*flags' is always zero).
+   *
+   * @input:
+   *   master ::
+   *     The variation descriptor.
+   *
+   *   axis_index ::
+   *     The index of the requested variation axis.
+   *
+   * @output:
+   *   flags ::
+   *     The `flags' field.  See @FT_VAR_AXIS_FLAG_XXX for
+   *     possible values.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.8.1
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Var_Axis_Flags( FT_MM_Var*  master,
                          FT_UInt     axis_index,
                          FT_UInt*    flags );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Named_Instance                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set or change the current named instance.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face           :: A handle to the source face.                     */
-  /*                                                                       */
-  /*    instance_index :: The index of the requested instance, starting    */
-  /*                      with value 1.  If set to value 0, FreeType       */
-  /*                      switches to font access without a named          */
-  /*                      instance.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The function uses the value of `instance_index' to set bits 16-30  */
-  /*    of the face's `face_index' field.  It also resets any variation    */
-  /*    applied to the font, and the @FT_FACE_FLAG_VARIATION bit of the    */
-  /*    face's `face_flags' field gets reset to zero (i.e.,                */
-  /*    @FT_IS_VARIATION will return false).                               */
-  /*                                                                       */
-  /*    For Adobe MM fonts (which don't have named instances) this         */
-  /*    function simply resets the current face to the default instance.   */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.9                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Named_Instance
+   *
+   * @description:
+   *   Set or change the current named instance.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   instance_index ::
+   *     The index of the requested instance, starting
+   *     with value 1.  If set to value 0, FreeType
+   *     switches to font access without a named
+   *     instance.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The function uses the value of `instance_index' to set bits 16-30
+   *   of the face's `face_index' field.  It also resets any variation
+   *   applied to the font, and the @FT_FACE_FLAG_VARIATION bit of the
+   *   face's `face_flags' field gets reset to zero (i.e.,
+   *   @FT_IS_VARIATION will return false).
+   *
+   *   For Adobe MM fonts (which don't have named instances) this
+   *   function simply resets the current face to the default instance.
+   *
+   * @since:
+   *   2.9
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Named_Instance( FT_Face  face,
                          FT_UInt  instance_index );
diff --git a/include/freetype/ftmodapi.h b/include/freetype/ftmodapi.h
index a6eb876..c50c9ce 100644
--- a/include/freetype/ftmodapi.h
+++ b/include/freetype/ftmodapi.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmodapi.h                                                             */
-/*                                                                         */
-/*    FreeType modules public interface (specification).                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmodapi.h
+ *
+ *   FreeType modules public interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTMODAPI_H_
@@ -33,77 +33,77 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    module_management                                                  */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Module Management                                                  */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    How to add, upgrade, remove, and control modules from FreeType.    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The definitions below are used to manage modules within FreeType.  */
-  /*    Modules can be added, upgraded, and removed at runtime.            */
-  /*    Additionally, some module properties can be controlled also.       */
-  /*                                                                       */
-  /*    Here is a list of possible values of the `module_name' field in    */
-  /*    the @FT_Module_Class structure.                                    */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      autofitter                                                       */
-  /*      bdf                                                              */
-  /*      cff                                                              */
-  /*      gxvalid                                                          */
-  /*      otvalid                                                          */
-  /*      pcf                                                              */
-  /*      pfr                                                              */
-  /*      psaux                                                            */
-  /*      pshinter                                                         */
-  /*      psnames                                                          */
-  /*      raster1                                                          */
-  /*      sfnt                                                             */
-  /*      smooth, smooth-lcd, smooth-lcdv                                  */
-  /*      truetype                                                         */
-  /*      type1                                                            */
-  /*      type42                                                           */
-  /*      t1cid                                                            */
-  /*      winfonts                                                         */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Note that the FreeType Cache sub-system is not a FreeType module.  */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Module                                                          */
-  /*    FT_Module_Constructor                                              */
-  /*    FT_Module_Destructor                                               */
-  /*    FT_Module_Requester                                                */
-  /*    FT_Module_Class                                                    */
-  /*                                                                       */
-  /*    FT_Add_Module                                                      */
-  /*    FT_Get_Module                                                      */
-  /*    FT_Remove_Module                                                   */
-  /*    FT_Add_Default_Modules                                             */
-  /*                                                                       */
-  /*    FT_Property_Set                                                    */
-  /*    FT_Property_Get                                                    */
-  /*    FT_Set_Default_Properties                                          */
-  /*                                                                       */
-  /*    FT_New_Library                                                     */
-  /*    FT_Done_Library                                                    */
-  /*    FT_Reference_Library                                               */
-  /*                                                                       */
-  /*    FT_Renderer                                                        */
-  /*    FT_Renderer_Class                                                  */
-  /*                                                                       */
-  /*    FT_Get_Renderer                                                    */
-  /*    FT_Set_Renderer                                                    */
-  /*                                                                       */
-  /*    FT_Set_Debug_Hook                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   module_management
+   *
+   * @title:
+   *   Module Management
+   *
+   * @abstract:
+   *   How to add, upgrade, remove, and control modules from FreeType.
+   *
+   * @description:
+   *   The definitions below are used to manage modules within FreeType.
+   *   Modules can be added, upgraded, and removed at runtime.
+   *   Additionally, some module properties can be controlled also.
+   *
+   *   Here is a list of possible values of the `module_name' field in
+   *   the @FT_Module_Class structure.
+   *
+   *   {
+   *     autofitter
+   *     bdf
+   *     cff
+   *     gxvalid
+   *     otvalid
+   *     pcf
+   *     pfr
+   *     psaux
+   *     pshinter
+   *     psnames
+   *     raster1
+   *     sfnt
+   *     smooth, smooth-lcd, smooth-lcdv
+   *     truetype
+   *     type1
+   *     type42
+   *     t1cid
+   *     winfonts
+   *   }
+   *
+   *   Note that the FreeType Cache sub-system is not a FreeType module.
+   *
+   * @order:
+   *   FT_Module
+   *   FT_Module_Constructor
+   *   FT_Module_Destructor
+   *   FT_Module_Requester
+   *   FT_Module_Class
+   *
+   *   FT_Add_Module
+   *   FT_Get_Module
+   *   FT_Remove_Module
+   *   FT_Add_Default_Modules
+   *
+   *   FT_Property_Set
+   *   FT_Property_Get
+   *   FT_Set_Default_Properties
+   *
+   *   FT_New_Library
+   *   FT_Done_Library
+   *   FT_Reference_Library
+   *
+   *   FT_Renderer
+   *   FT_Renderer_Class
+   *
+   *   FT_Get_Renderer
+   *   FT_Set_Renderer
+   *
+   *   FT_Set_Debug_Hook
+   *
+   */
 
 
   /* module bit flags */
@@ -137,83 +137,99 @@
   typedef FT_Pointer  FT_Module_Interface;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Constructor                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to initialize (not create) a new module object.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    module :: The module to initialize.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Module_Constructor
+   *
+   * @description:
+   *   A function used to initialize (not create) a new module object.
+   *
+   * @input:
+   *   module ::
+   *     The module to initialize.
+   */
   typedef FT_Error
   (*FT_Module_Constructor)( FT_Module  module );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Destructor                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to finalize (not destroy) a given module object.   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    module :: The module to finalize.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Module_Destructor
+   *
+   * @description:
+   *   A function used to finalize (not destroy) a given module object.
+   *
+   * @input:
+   *   module ::
+   *     The module to finalize.
+   */
   typedef void
   (*FT_Module_Destructor)( FT_Module  module );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Requester                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to query a given module for a specific interface.  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    module :: The module to be searched.                               */
-  /*                                                                       */
-  /*    name ::   The name of the interface in the module.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Module_Requester
+   *
+   * @description:
+   *   A function used to query a given module for a specific interface.
+   *
+   * @input:
+   *   module ::
+   *     The module to be searched.
+   *
+   *   name ::
+   *     The name of the interface in the module.
+   */
   typedef FT_Module_Interface
   (*FT_Module_Requester)( FT_Module    module,
                           const char*  name );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Module_Class                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The module class descriptor.                                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    module_flags    :: Bit flags describing the module.                */
-  /*                                                                       */
-  /*    module_size     :: The size of one module object/instance in       */
-  /*                       bytes.                                          */
-  /*                                                                       */
-  /*    module_name     :: The name of the module.                         */
-  /*                                                                       */
-  /*    module_version  :: The version, as a 16.16 fixed number            */
-  /*                       (major.minor).                                  */
-  /*                                                                       */
-  /*    module_requires :: The version of FreeType this module requires,   */
-  /*                       as a 16.16 fixed number (major.minor).  Starts  */
-  /*                       at version 2.0, i.e., 0x20000.                  */
-  /*                                                                       */
-  /*    module_init     :: The initializing function.                      */
-  /*                                                                       */
-  /*    module_done     :: The finalizing function.                        */
-  /*                                                                       */
-  /*    get_interface   :: The interface requesting function.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Module_Class
+   *
+   * @description:
+   *   The module class descriptor.  While being a public structure
+   *   necessary for FreeType's module bookkeeping, most of the fields are
+   *   essentially internal, not to be used directly by an application.
+   *
+   * @fields:
+   *   module_flags ::
+   *     Bit flags describing the module.
+   *
+   *   module_size ::
+   *     The size of one module object/instance in bytes.
+   *
+   *   module_name ::
+   *     The name of the module.
+   *
+   *   module_version ::
+   *     The version, as a 16.16 fixed number (major.minor).
+   *
+   *   module_requires ::
+   *     The version of FreeType this module requires, as a 16.16 fixed
+   *     number (major.minor).  Starts at version 2.0, i.e., 0x20000.
+   *
+   *   module_interface ::
+   *     A typeless pointer to a structure (which varies between different
+   *     modules) that holds the module's interface functions.  This is
+   *     essentially what `get_interface' returns.
+   *
+   *   module_init ::
+   *     The initializing function.
+   *
+   *   module_done ::
+   *     The finalizing function.
+   *
+   *   get_interface ::
+   *     The interface requesting function.
+   */
   typedef struct  FT_Module_Class_
   {
     FT_ULong               module_flags;
@@ -231,77 +247,83 @@
   } FT_Module_Class;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Add_Module                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Add a new module to a given library instance.                      */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library :: A handle to the library object.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    clazz   :: A pointer to class descriptor for the module.           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    An error will be returned if a module already exists by that name, */
-  /*    or if the module requires a version of FreeType that is too great. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Add_Module
+   *
+   * @description:
+   *   Add a new module to a given library instance.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library object.
+   *
+   * @input:
+   *   clazz ::
+   *     A pointer to class descriptor for the module.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   An error will be returned if a module already exists by that name,
+   *   or if the module requires a version of FreeType that is too great.
+   */
   FT_EXPORT( FT_Error )
   FT_Add_Module( FT_Library              library,
                  const FT_Module_Class*  clazz );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Module                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Find a module by its name.                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library     :: A handle to the library object.                     */
-  /*                                                                       */
-  /*    module_name :: The module's name (as an ASCII string).             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A module handle.  0~if none was found.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    FreeType's internal modules aren't documented very well, and you   */
-  /*    should look up the source code for details.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Module
+   *
+   * @description:
+   *   Find a module by its name.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the library object.
+   *
+   *   module_name ::
+   *     The module's name (as an ASCII string).
+   *
+   * @return:
+   *   A module handle.  0~if none was found.
+   *
+   * @note:
+   *   FreeType's internal modules aren't documented very well, and you
+   *   should look up the source code for details.
+   */
   FT_EXPORT( FT_Module )
   FT_Get_Module( FT_Library   library,
                  const char*  module_name );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Remove_Module                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Remove a given module from a library instance.                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library :: A handle to a library object.                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    module  :: A handle to a module object.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The module object is destroyed by the function in case of success. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Remove_Module
+   *
+   * @description:
+   *   Remove a given module from a library instance.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to a library object.
+   *
+   * @input:
+   *   module ::
+   *     A handle to a module object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The module object is destroyed by the function in case of success.
+   */
   FT_EXPORT( FT_Error )
   FT_Remove_Module( FT_Library  library,
                     FT_Module   module );
@@ -317,21 +339,21 @@
    *
    * @input:
    *    library ::
-   *       A handle to the library the module is part of.
+   *      A handle to the library the module is part of.
    *
    *    module_name ::
-   *       The module name.
+   *      The module name.
    *
    *    property_name ::
-   *       The property name.  Properties are described in section
-   *       @properties.
+   *      The property name.  Properties are described in section
+   *      @properties.
    *
-   *       Note that only a few modules have properties.
+   *      Note that only a few modules have properties.
    *
    *    value ::
-   *       A generic pointer to a variable or structure that gives the new
-   *       value of the property.  The exact definition of `value' is
-   *       dependent on the property; see section @properties.
+   *      A generic pointer to a variable or structure that gives the new
+   *      value of the property.  The exact definition of `value' is
+   *      dependent on the property; see section @properties.
    *
    * @return:
    *   FreeType error code.  0~means success.
@@ -362,8 +384,8 @@
    *    sub-system itself with FT_Property_Set; use @FTC_Property_Set
    *    instead.
    *
-   *  @since:
-   *    2.4.11
+   * @since:
+   *   2.4.11
    *
    */
   FT_EXPORT( FT_Error )
@@ -383,20 +405,20 @@
    *
    * @input:
    *    library ::
-   *       A handle to the library the module is part of.
+   *      A handle to the library the module is part of.
    *
    *    module_name ::
-   *       The module name.
+   *      The module name.
    *
    *    property_name ::
-   *       The property name.  Properties are described in section
-   *       @properties.
+   *      The property name.  Properties are described in section
+   *      @properties.
    *
    * @inout:
    *    value ::
-   *       A generic pointer to a variable or structure that gives the
-   *       value of the property.  The exact definition of `value' is
-   *       dependent on the property; see section @properties.
+   *      A generic pointer to a variable or structure that gives the
+   *      value of the property.  The exact definition of `value' is
+   *      dependent on the property; see section @properties.
    *
    * @return:
    *   FreeType error code.  0~means success.
@@ -425,8 +447,8 @@
    *    It is not possible to retrieve properties of the FreeType Cache
    *    sub-system with FT_Property_Get; use @FTC_Property_Get instead.
    *
-   *  @since:
-   *    2.4.11
+   * @since:
+   *   2.4.11
    *
    */
   FT_EXPORT( FT_Error )
@@ -436,134 +458,139 @@
                    void*             value );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Default_Properties                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is   */
-  /*    set, this function reads the `FREETYPE_PROPERTIES' environment     */
-  /*    variable to control driver properties.  See section @properties    */
-  /*    for more.                                                          */
-  /*                                                                       */
-  /*    If the compilation option is not set, this function does nothing.  */
-  /*                                                                       */
-  /*    `FREETYPE_PROPERTIES' has the following syntax form (broken here   */
-  /*    into multiple lines for better readability).                       */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      <optional whitespace>                                            */
-  /*      <module-name1> ':'                                               */
-  /*      <property-name1> '=' <property-value1>                           */
-  /*      <whitespace>                                                     */
-  /*      <module-name2> ':'                                               */
-  /*      <property-name2> '=' <property-value2>                           */
-  /*      ...                                                              */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Example:                                                           */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FREETYPE_PROPERTIES=truetype:interpreter-version=35 \            */
-  /*                          cff:no-stem-darkening=1 \                    */
-  /*                          autofitter:warping=1                         */
-  /*    }                                                                  */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library :: A handle to a new library object.                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Default_Properties
+   *
+   * @description:
+   *   If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is
+   *   set, this function reads the `FREETYPE_PROPERTIES' environment
+   *   variable to control driver properties.  See section @properties
+   *   for more.
+   *
+   *   If the compilation option is not set, this function does nothing.
+   *
+   *   `FREETYPE_PROPERTIES' has the following syntax form (broken here
+   *   into multiple lines for better readability).
+   *
+   *   {
+   *     <optional whitespace>
+   *     <module-name1> ':'
+   *     <property-name1> '=' <property-value1>
+   *     <whitespace>
+   *     <module-name2> ':'
+   *     <property-name2> '=' <property-value2>
+   *     ...
+   *   }
+   *
+   *   Example:
+   *
+   *   {
+   *     FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
+   *                         cff:no-stem-darkening=1 \
+   *                         autofitter:warping=1
+   *   }
+   *
+   * @inout:
+   *   library ::
+   *     A handle to a new library object.
+   *
+   * @since:
+   *   2.8
+   */
   FT_EXPORT( void )
   FT_Set_Default_Properties( FT_Library  library );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Reference_Library                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A counter gets initialized to~1 at the time an @FT_Library         */
-  /*    structure is created.  This function increments the counter.       */
-  /*    @FT_Done_Library then only destroys a library if the counter is~1, */
-  /*    otherwise it simply decrements the counter.                        */
-  /*                                                                       */
-  /*    This function helps in managing life-cycles of structures that     */
-  /*    reference @FT_Library objects.                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to a target library object.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.2                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Reference_Library
+   *
+   * @description:
+   *   A counter gets initialized to~1 at the time an @FT_Library
+   *   structure is created.  This function increments the counter.
+   *   @FT_Done_Library then only destroys a library if the counter is~1,
+   *   otherwise it simply decrements the counter.
+   *
+   *   This function helps in managing life-cycles of structures that
+   *   reference @FT_Library objects.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a target library object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.4.2
+   */
   FT_EXPORT( FT_Error )
   FT_Reference_Library( FT_Library  library );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Library                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used to create a new FreeType library instance    */
-  /*    from a given memory object.  It is thus possible to use libraries  */
-  /*    with distinct memory allocators within the same program.  Note,    */
-  /*    however, that the used @FT_Memory structure is expected to remain  */
-  /*    valid for the life of the @FT_Library object.                      */
-  /*                                                                       */
-  /*    Normally, you would call this function (followed by a call to      */
-  /*    @FT_Add_Default_Modules or a series of calls to @FT_Add_Module,    */
-  /*    and a call to @FT_Set_Default_Properties) instead of               */
-  /*    @FT_Init_FreeType to initialize the FreeType library.              */
-  /*                                                                       */
-  /*    Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a      */
-  /*    library instance.                                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory   :: A handle to the original memory object.                */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    alibrary :: A pointer to handle of a new library object.           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See the discussion of reference counters in the description of     */
-  /*    @FT_Reference_Library.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Library
+   *
+   * @description:
+   *   This function is used to create a new FreeType library instance
+   *   from a given memory object.  It is thus possible to use libraries
+   *   with distinct memory allocators within the same program.  Note,
+   *   however, that the used @FT_Memory structure is expected to remain
+   *   valid for the life of the @FT_Library object.
+   *
+   *   Normally, you would call this function (followed by a call to
+   *   @FT_Add_Default_Modules or a series of calls to @FT_Add_Module,
+   *   and a call to @FT_Set_Default_Properties) instead of
+   *   @FT_Init_FreeType to initialize the FreeType library.
+   *
+   *   Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a
+   *   library instance.
+   *
+   * @input:
+   *   memory ::
+   *     A handle to the original memory object.
+   *
+   * @output:
+   *   alibrary ::
+   *     A pointer to handle of a new library object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   See the discussion of reference counters in the description of
+   *   @FT_Reference_Library.
+   */
   FT_EXPORT( FT_Error )
   FT_New_Library( FT_Memory    memory,
                   FT_Library  *alibrary );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Library                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discard a given library object.  This closes all drivers and       */
-  /*    discards all resource objects.                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to the target library.                         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See the discussion of reference counters in the description of     */
-  /*    @FT_Reference_Library.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Library
+   *
+   * @description:
+   *   Discard a given library object.  This closes all drivers and
+   *   discards all resource objects.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the target library.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   See the discussion of reference counters in the description of
+   *   @FT_Reference_Library.
+   */
   FT_EXPORT( FT_Error )
   FT_Done_Library( FT_Library  library );
 
@@ -573,52 +600,56 @@
   (*FT_DebugHook_Func)( void*  arg );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Debug_Hook                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set a debug hook function for debugging the interpreter of a font  */
-  /*    format.                                                            */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    hook_index :: The index of the debug hook.  You should use the     */
-  /*                  values defined in `ftobjs.h', e.g.,                  */
-  /*                  `FT_DEBUG_HOOK_TRUETYPE'.                            */
-  /*                                                                       */
-  /*    debug_hook :: The function used to debug the interpreter.          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Currently, four debug hook slots are available, but only two (for  */
-  /*    the TrueType and the Type~1 interpreter) are defined.              */
-  /*                                                                       */
-  /*    Since the internal headers of FreeType are no longer installed,    */
-  /*    the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.      */
-  /*    This is a bug and will be fixed in a forthcoming release.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Debug_Hook
+   *
+   * @description:
+   *   Set a debug hook function for debugging the interpreter of a font
+   *   format.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library object.
+   *
+   * @input:
+   *   hook_index ::
+   *     The index of the debug hook.  You should use the
+   *     values defined in `ftobjs.h', e.g.,
+   *     `FT_DEBUG_HOOK_TRUETYPE'.
+   *
+   *   debug_hook ::
+   *     The function used to debug the interpreter.
+   *
+   * @note:
+   *   Currently, four debug hook slots are available, but only two (for
+   *   the TrueType and the Type~1 interpreter) are defined.
+   *
+   *   Since the internal headers of FreeType are no longer installed,
+   *   the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.
+   *   This is a bug and will be fixed in a forthcoming release.
+   */
   FT_EXPORT( void )
   FT_Set_Debug_Hook( FT_Library         library,
                      FT_UInt            hook_index,
                      FT_DebugHook_Func  debug_hook );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Add_Default_Modules                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Add the set of default drivers to a given library object.          */
-  /*    This is only useful when you create a library object with          */
-  /*    @FT_New_Library (usually to plug a custom memory manager).         */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library :: A handle to a new library object.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Add_Default_Modules
+   *
+   * @description:
+   *   Add the set of default drivers to a given library object.
+   *   This is only useful when you create a library object with
+   *   @FT_New_Library (usually to plug a custom memory manager).
+   *
+   * @inout:
+   *   library ::
+   *     A handle to a new library object.
+   */
   FT_EXPORT( void )
   FT_Add_Default_Modules( FT_Library  library );
 
@@ -644,28 +675,28 @@
 
   /**************************************************************************
    *
-   *  @enum:
-   *     FT_TrueTypeEngineType
+   * @enum:
+   *    FT_TrueTypeEngineType
    *
-   *  @description:
-   *     A list of values describing which kind of TrueType bytecode
-   *     engine is implemented in a given FT_Library instance.  It is used
-   *     by the @FT_Get_TrueType_Engine_Type function.
+   * @description:
+   *    A list of values describing which kind of TrueType bytecode
+   *    engine is implemented in a given FT_Library instance.  It is used
+   *    by the @FT_Get_TrueType_Engine_Type function.
    *
-   *  @values:
-   *     FT_TRUETYPE_ENGINE_TYPE_NONE ::
-   *       The library doesn't implement any kind of bytecode interpreter.
+   * @values:
+   *    FT_TRUETYPE_ENGINE_TYPE_NONE ::
+   *      The library doesn't implement any kind of bytecode interpreter.
    *
-   *     FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
-   *       Deprecated and removed.
+   *    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
+   *      Deprecated and removed.
    *
-   *     FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
-   *       The library implements a bytecode interpreter that covers
-   *       the full instruction set of the TrueType virtual machine (this
-   *       was governed by patents until May 2010, hence the name).
+   *    FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
+   *      The library implements a bytecode interpreter that covers
+   *      the full instruction set of the TrueType virtual machine (this
+   *      was governed by patents until May 2010, hence the name).
    *
-   *  @since:
-   *     2.2
+   * @since:
+   *    2.2
    *
    */
   typedef enum  FT_TrueTypeEngineType_
@@ -679,22 +710,22 @@
 
   /**************************************************************************
    *
-   *  @func:
-   *     FT_Get_TrueType_Engine_Type
+   * @function:
+   *    FT_Get_TrueType_Engine_Type
    *
-   *  @description:
-   *     Return an @FT_TrueTypeEngineType value to indicate which level of
-   *     the TrueType virtual machine a given library instance supports.
+   * @description:
+   *    Return an @FT_TrueTypeEngineType value to indicate which level of
+   *    the TrueType virtual machine a given library instance supports.
    *
-   *  @input:
-   *     library ::
-   *       A library instance.
+   * @input:
+   *    library ::
+   *      A library instance.
    *
-   *  @return:
-   *     A value indicating which level is supported.
+   * @return:
+   *    A value indicating which level is supported.
    *
-   *  @since:
-   *     2.2
+   * @since:
+   *    2.2
    *
    */
   FT_EXPORT( FT_TrueTypeEngineType )
diff --git a/include/freetype/ftmoderr.h b/include/freetype/ftmoderr.h
index e0fc131..661b0da 100644
--- a/include/freetype/ftmoderr.h
+++ b/include/freetype/ftmoderr.h
@@ -1,94 +1,94 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmoderr.h                                                             */
-/*                                                                         */
-/*    FreeType module error offsets (specification).                       */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmoderr.h
+ *
+ *   FreeType module error offsets (specification).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the FreeType module error codes.          */
-  /*                                                                       */
-  /* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is    */
-  /* set, the lower byte of an error value identifies the error code as    */
-  /* usual.  In addition, the higher byte identifies the module.  For      */
-  /* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */
-  /* error `TT_Err_Invalid_File_Format' has value 0x1303, the error        */
-  /* `T1_Err_Invalid_File_Format' has value 0x1403, etc.                   */
-  /*                                                                       */
-  /* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero,    */
-  /* including the high byte.                                              */
-  /*                                                                       */
-  /* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of   */
-  /* an error value is set to zero.                                        */
-  /*                                                                       */
-  /* To hide the various `XXX_Err_' prefixes in the source code, FreeType  */
-  /* provides some macros in `fttypes.h'.                                  */
-  /*                                                                       */
-  /*   FT_ERR( err )                                                       */
-  /*     Add current error module prefix (as defined with the              */
-  /*     `FT_ERR_PREFIX' macro) to `err'.  For example, in the BDF module  */
-  /*     the line                                                          */
-  /*                                                                       */
-  /*       error = FT_ERR( Invalid_Outline );                              */
-  /*                                                                       */
-  /*     expands to                                                        */
-  /*                                                                       */
-  /*       error = BDF_Err_Invalid_Outline;                                */
-  /*                                                                       */
-  /*     For simplicity, you can always use `FT_Err_Ok' directly instead   */
-  /*     of `FT_ERR( Ok )'.                                                */
-  /*                                                                       */
-  /*   FT_ERR_EQ( errcode, err )                                           */
-  /*   FT_ERR_NEQ( errcode, err )                                          */
-  /*     Compare error code `errcode' with the error `err' for equality    */
-  /*     and inequality, respectively.  Example:                           */
-  /*                                                                       */
-  /*       if ( FT_ERR_EQ( error, Invalid_Outline ) )                      */
-  /*         ...                                                           */
-  /*                                                                       */
-  /*     Using this macro you don't have to think about error prefixes.    */
-  /*     Of course, if module errors are not active, the above example is  */
-  /*     the same as                                                       */
-  /*                                                                       */
-  /*       if ( error == FT_Err_Invalid_Outline )                          */
-  /*         ...                                                           */
-  /*                                                                       */
-  /*   FT_ERROR_BASE( errcode )                                            */
-  /*   FT_ERROR_MODULE( errcode )                                          */
-  /*     Get base error and module error code, respectively.               */
-  /*                                                                       */
-  /*                                                                       */
-  /* It can also be used to create a module error message table easily     */
-  /* with something like                                                   */
-  /*                                                                       */
-  /*   {                                                                   */
-  /*     #undef FTMODERR_H_                                                */
-  /*     #define FT_MODERRDEF( e, v, s )  { FT_Mod_Err_ ## e, s },         */
-  /*     #define FT_MODERR_START_LIST     {                                */
-  /*     #define FT_MODERR_END_LIST       { 0, 0 } };                      */
-  /*                                                                       */
-  /*     const struct                                                      */
-  /*     {                                                                 */
-  /*       int          mod_err_offset;                                    */
-  /*       const char*  mod_err_msg                                        */
-  /*     } ft_mod_errors[] =                                               */
-  /*                                                                       */
-  /*     #include FT_MODULE_ERRORS_H                                       */
-  /*   }                                                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the FreeType module error codes.
+   *
+   * If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is
+   * set, the lower byte of an error value identifies the error code as
+   * usual.  In addition, the higher byte identifies the module.  For
+   * example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the
+   * error `TT_Err_Invalid_File_Format' has value 0x1303, the error
+   * `T1_Err_Invalid_File_Format' has value 0x1403, etc.
+   *
+   * Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero,
+   * including the high byte.
+   *
+   * If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of
+   * an error value is set to zero.
+   *
+   * To hide the various `XXX_Err_' prefixes in the source code, FreeType
+   * provides some macros in `fttypes.h'.
+   *
+   *   FT_ERR( err )
+   *     Add current error module prefix (as defined with the
+   *     `FT_ERR_PREFIX' macro) to `err'.  For example, in the BDF module
+   *     the line
+   *
+   *       error = FT_ERR( Invalid_Outline );
+   *
+   *     expands to
+   *
+   *       error = BDF_Err_Invalid_Outline;
+   *
+   *     For simplicity, you can always use `FT_Err_Ok' directly instead
+   *     of `FT_ERR( Ok )'.
+   *
+   *   FT_ERR_EQ( errcode, err )
+   *   FT_ERR_NEQ( errcode, err )
+   *     Compare error code `errcode' with the error `err' for equality
+   *     and inequality, respectively.  Example:
+   *
+   *       if ( FT_ERR_EQ( error, Invalid_Outline ) )
+   *         ...
+   *
+   *     Using this macro you don't have to think about error prefixes.
+   *     Of course, if module errors are not active, the above example is
+   *     the same as
+   *
+   *       if ( error == FT_Err_Invalid_Outline )
+   *         ...
+   *
+   *   FT_ERROR_BASE( errcode )
+   *   FT_ERROR_MODULE( errcode )
+   *     Get base error and module error code, respectively.
+   *
+   *
+   * It can also be used to create a module error message table easily
+   * with something like
+   *
+   * {
+   *   #undef FTMODERR_H_
+   *   #define FT_MODERRDEF( e, v, s )  { FT_Mod_Err_ ## e, s },
+   *   #define FT_MODERR_START_LIST     {
+   *   #define FT_MODERR_END_LIST       { 0, 0 } };
+   *
+   *   const struct
+   *   {
+   *     int          mod_err_offset;
+   *     const char*  mod_err_msg
+   *   } ft_mod_errors[] =
+   *
+   *   #include FT_MODULE_ERRORS_H
+   * }
+   *
+   */
 
 
 #ifndef FTMODERR_H_
diff --git a/include/freetype/ftotval.h b/include/freetype/ftotval.h
index 26731c2..698b429 100644
--- a/include/freetype/ftotval.h
+++ b/include/freetype/ftotval.h
@@ -1,30 +1,30 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftotval.h                                                              */
-/*                                                                         */
-/*    FreeType API for validating OpenType tables (specification).         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftotval.h
+ *
+ *   FreeType API for validating OpenType tables (specification).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-/***************************************************************************/
-/*                                                                         */
-/*                                                                         */
-/* Warning: This module might be moved to a different library in the       */
-/*          future to avoid a tight dependency between FreeType and the    */
-/*          OpenType specification.                                        */
-/*                                                                         */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ *
+ * Warning: This module might be moved to a different library in the
+ *          future to avoid a tight dependency between FreeType and the
+ *          OpenType specification.
+ *
+ *
+ */
 
 
 #ifndef FTOTVAL_H_
@@ -43,62 +43,62 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    ot_validation                                                      */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    OpenType Validation                                                */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    An API to validate OpenType tables.                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of functions to validate     */
-  /*    some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).         */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_OpenType_Validate                                               */
-  /*    FT_OpenType_Free                                                   */
-  /*                                                                       */
-  /*    FT_VALIDATE_OTXXX                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   ot_validation
+   *
+   * @title:
+   *   OpenType Validation
+   *
+   * @abstract:
+   *   An API to validate OpenType tables.
+   *
+   * @description:
+   *   This section contains the declaration of functions to validate
+   *   some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
+   *
+   * @order:
+   *   FT_OpenType_Validate
+   *   FT_OpenType_Free
+   *
+   *   FT_VALIDATE_OTXXX
+   *
+   */
 
 
- /**********************************************************************
-  *
-  * @enum:
-  *    FT_VALIDATE_OTXXX
-  *
-  * @description:
-  *    A list of bit-field constants used with @FT_OpenType_Validate to
-  *    indicate which OpenType tables should be validated.
-  *
-  * @values:
-  *    FT_VALIDATE_BASE ::
-  *      Validate BASE table.
-  *
-  *    FT_VALIDATE_GDEF ::
-  *      Validate GDEF table.
-  *
-  *    FT_VALIDATE_GPOS ::
-  *      Validate GPOS table.
-  *
-  *    FT_VALIDATE_GSUB ::
-  *      Validate GSUB table.
-  *
-  *    FT_VALIDATE_JSTF ::
-  *      Validate JSTF table.
-  *
-  *    FT_VALIDATE_MATH ::
-  *      Validate MATH table.
-  *
-  *    FT_VALIDATE_OT ::
-  *      Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
-  *
-  */
+  /**********************************************************************
+   *
+   * @enum:
+   *    FT_VALIDATE_OTXXX
+   *
+   * @description:
+   *    A list of bit-field constants used with @FT_OpenType_Validate to
+   *    indicate which OpenType tables should be validated.
+   *
+   * @values:
+   *    FT_VALIDATE_BASE ::
+   *      Validate BASE table.
+   *
+   *    FT_VALIDATE_GDEF ::
+   *      Validate GDEF table.
+   *
+   *    FT_VALIDATE_GPOS ::
+   *      Validate GPOS table.
+   *
+   *    FT_VALIDATE_GSUB ::
+   *      Validate GSUB table.
+   *
+   *    FT_VALIDATE_JSTF ::
+   *      Validate JSTF table.
+   *
+   *    FT_VALIDATE_MATH ::
+   *      Validate MATH table.
+   *
+   *    FT_VALIDATE_OT ::
+   *      Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
+   *
+   */
 #define FT_VALIDATE_BASE  0x0100
 #define FT_VALIDATE_GDEF  0x0200
 #define FT_VALIDATE_GPOS  0x0400
@@ -113,53 +113,54 @@
                           FT_VALIDATE_JSTF | \
                           FT_VALIDATE_MATH )
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_OpenType_Validate
-  *
-  * @description:
-  *    Validate various OpenType tables to assure that all offsets and
-  *    indices are valid.  The idea is that a higher-level library that
-  *    actually does the text layout can access those tables without
-  *    error checking (which can be quite time consuming).
-  *
-  * @input:
-  *    face ::
-  *       A handle to the input face.
-  *
-  *    validation_flags ::
-  *       A bit field that specifies the tables to be validated.  See
-  *       @FT_VALIDATE_OTXXX for possible values.
-  *
-  * @output:
-  *    BASE_table ::
-  *       A pointer to the BASE table.
-  *
-  *    GDEF_table ::
-  *       A pointer to the GDEF table.
-  *
-  *    GPOS_table ::
-  *       A pointer to the GPOS table.
-  *
-  *    GSUB_table ::
-  *       A pointer to the GSUB table.
-  *
-  *    JSTF_table ::
-  *       A pointer to the JSTF table.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   This function only works with OpenType fonts, returning an error
-  *   otherwise.
-  *
-  *   After use, the application should deallocate the five tables with
-  *   @FT_OpenType_Free.  A NULL value indicates that the table either
-  *   doesn't exist in the font, or the application hasn't asked for
-  *   validation.
-  */
+
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_OpenType_Validate
+   *
+   * @description:
+   *    Validate various OpenType tables to assure that all offsets and
+   *    indices are valid.  The idea is that a higher-level library that
+   *    actually does the text layout can access those tables without
+   *    error checking (which can be quite time consuming).
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    validation_flags ::
+   *      A bit field that specifies the tables to be validated.  See
+   *      @FT_VALIDATE_OTXXX for possible values.
+   *
+   * @output:
+   *    BASE_table ::
+   *      A pointer to the BASE table.
+   *
+   *    GDEF_table ::
+   *      A pointer to the GDEF table.
+   *
+   *    GPOS_table ::
+   *      A pointer to the GPOS table.
+   *
+   *    GSUB_table ::
+   *      A pointer to the GSUB table.
+   *
+   *    JSTF_table ::
+   *      A pointer to the JSTF table.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function only works with OpenType fonts, returning an error
+   *   otherwise.
+   *
+   *   After use, the application should deallocate the five tables with
+   *   @FT_OpenType_Free.  A NULL value indicates that the table either
+   *   doesn't exist in the font, or the application hasn't asked for
+   *   validation.
+   */
   FT_EXPORT( FT_Error )
   FT_OpenType_Validate( FT_Face    face,
                         FT_UInt    validation_flags,
@@ -169,30 +170,32 @@
                         FT_Bytes  *GSUB_table,
                         FT_Bytes  *JSTF_table );
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_OpenType_Free
-  *
-  * @description:
-  *    Free the buffer allocated by OpenType validator.
-  *
-  * @input:
-  *    face ::
-  *       A handle to the input face.
-  *
-  *    table ::
-  *       The pointer to the buffer that is allocated by
-  *       @FT_OpenType_Validate.
-  *
-  * @note:
-  *   This function must be used to free the buffer allocated by
-  *   @FT_OpenType_Validate only.
-  */
+
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_OpenType_Free
+   *
+   * @description:
+   *    Free the buffer allocated by OpenType validator.
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    table ::
+   *      The pointer to the buffer that is allocated by
+   *      @FT_OpenType_Validate.
+   *
+   * @note:
+   *   This function must be used to free the buffer allocated by
+   *   @FT_OpenType_Validate only.
+   */
   FT_EXPORT( void )
   FT_OpenType_Free( FT_Face   face,
                     FT_Bytes  table );
 
+
   /* */
 
 
diff --git a/include/freetype/ftoutln.h b/include/freetype/ftoutln.h
index 89389a4..9dae104 100644
--- a/include/freetype/ftoutln.h
+++ b/include/freetype/ftoutln.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftoutln.h                                                              */
-/*                                                                         */
-/*    Support for the FT_Outline type used to store glyph shapes of        */
-/*    most scalable font formats (specification).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftoutln.h
+ *
+ *   Support for the FT_Outline type used to store glyph shapes of
+ *   most scalable font formats (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTOUTLN_H_
@@ -34,127 +34,134 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    outline_processing                                                 */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Outline Processing                                                 */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Functions to create, transform, and render vectorial glyph images. */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains routines used to create and destroy scalable */
-  /*    glyph images known as `outlines'.  These can also be measured,     */
-  /*    transformed, and converted into bitmaps and pixmaps.               */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Outline                                                         */
-  /*    FT_Outline_New                                                     */
-  /*    FT_Outline_Done                                                    */
-  /*    FT_Outline_Copy                                                    */
-  /*    FT_Outline_Translate                                               */
-  /*    FT_Outline_Transform                                               */
-  /*    FT_Outline_Embolden                                                */
-  /*    FT_Outline_EmboldenXY                                              */
-  /*    FT_Outline_Reverse                                                 */
-  /*    FT_Outline_Check                                                   */
-  /*                                                                       */
-  /*    FT_Outline_Get_CBox                                                */
-  /*    FT_Outline_Get_BBox                                                */
-  /*                                                                       */
-  /*    FT_Outline_Get_Bitmap                                              */
-  /*    FT_Outline_Render                                                  */
-  /*    FT_Outline_Decompose                                               */
-  /*    FT_Outline_Funcs                                                   */
-  /*    FT_Outline_MoveToFunc                                              */
-  /*    FT_Outline_LineToFunc                                              */
-  /*    FT_Outline_ConicToFunc                                             */
-  /*    FT_Outline_CubicToFunc                                             */
-  /*                                                                       */
-  /*    FT_Orientation                                                     */
-  /*    FT_Outline_Get_Orientation                                         */
-  /*                                                                       */
-  /*    FT_OUTLINE_XXX                                                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   outline_processing
+   *
+   * @title:
+   *   Outline Processing
+   *
+   * @abstract:
+   *   Functions to create, transform, and render vectorial glyph images.
+   *
+   * @description:
+   *   This section contains routines used to create and destroy scalable
+   *   glyph images known as `outlines'.  These can also be measured,
+   *   transformed, and converted into bitmaps and pixmaps.
+   *
+   * @order:
+   *   FT_Outline
+   *   FT_Outline_New
+   *   FT_Outline_Done
+   *   FT_Outline_Copy
+   *   FT_Outline_Translate
+   *   FT_Outline_Transform
+   *   FT_Outline_Embolden
+   *   FT_Outline_EmboldenXY
+   *   FT_Outline_Reverse
+   *   FT_Outline_Check
+   *
+   *   FT_Outline_Get_CBox
+   *   FT_Outline_Get_BBox
+   *
+   *   FT_Outline_Get_Bitmap
+   *   FT_Outline_Render
+   *   FT_Outline_Decompose
+   *   FT_Outline_Funcs
+   *   FT_Outline_MoveToFunc
+   *   FT_Outline_LineToFunc
+   *   FT_Outline_ConicToFunc
+   *   FT_Outline_CubicToFunc
+   *
+   *   FT_Orientation
+   *   FT_Outline_Get_Orientation
+   *
+   *   FT_OUTLINE_XXX
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Decompose                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Walk over an outline's structure to decompose it into individual   */
-  /*    segments and Bezier arcs.  This function also emits `move to'      */
-  /*    operations to indicate the start of new contours in the outline.   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    outline        :: A pointer to the source target.                  */
-  /*                                                                       */
-  /*    func_interface :: A table of `emitters', i.e., function pointers   */
-  /*                      called during decomposition to indicate path     */
-  /*                      operations.                                      */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    user           :: A typeless pointer that is passed to each        */
-  /*                      emitter during the decomposition.  It can be     */
-  /*                      used to store the state during the               */
-  /*                      decomposition.                                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    A contour that contains a single point only is represented by a    */
-  /*    `move to' operation followed by `line to' to the same point.  In   */
-  /*    most cases, it is best to filter this out before using the         */
-  /*    outline for stroking purposes (otherwise it would result in a      */
-  /*    visible dot when round caps are used).                             */
-  /*                                                                       */
-  /*    Similarly, the function returns success for an empty outline also  */
-  /*    (doing nothing, this is, not calling any emitter); if necessary,   */
-  /*    you should filter this out, too.                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Decompose
+   *
+   * @description:
+   *   Walk over an outline's structure to decompose it into individual
+   *   segments and Bezier arcs.  This function also emits `move to'
+   *   operations to indicate the start of new contours in the outline.
+   *
+   * @input:
+   *   outline ::
+   *     A pointer to the source target.
+   *
+   *   func_interface ::
+   *     A table of `emitters', i.e., function pointers
+   *     called during decomposition to indicate path
+   *     operations.
+   *
+   * @inout:
+   *   user ::
+   *     A typeless pointer that is passed to each
+   *     emitter during the decomposition.  It can be
+   *     used to store the state during the
+   *     decomposition.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   A contour that contains a single point only is represented by a
+   *   `move to' operation followed by `line to' to the same point.  In
+   *   most cases, it is best to filter this out before using the
+   *   outline for stroking purposes (otherwise it would result in a
+   *   visible dot when round caps are used).
+   *
+   *   Similarly, the function returns success for an empty outline also
+   *   (doing nothing, this is, not calling any emitter); if necessary,
+   *   you should filter this out, too.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Decompose( FT_Outline*              outline,
                         const FT_Outline_Funcs*  func_interface,
                         void*                    user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_New                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new outline of a given size.                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library     :: A handle to the library object from where the       */
-  /*                   outline is allocated.  Note however that the new    */
-  /*                   outline will *not* necessarily be *freed*, when     */
-  /*                   destroying the library, by @FT_Done_FreeType.       */
-  /*                                                                       */
-  /*    numPoints   :: The maximum number of points within the outline.    */
-  /*                   Must be smaller than or equal to 0xFFFF (65535).    */
-  /*                                                                       */
-  /*    numContours :: The maximum number of contours within the outline.  */
-  /*                   This value must be in the range 0 to `numPoints'.   */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    anoutline   :: A handle to the new outline.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The reason why this function takes a `library' parameter is simply */
-  /*    to use the library's memory allocator.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_New
+   *
+   * @description:
+   *   Create a new outline of a given size.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the library object from where the
+   *     outline is allocated.  Note however that the new
+   *     outline will *not* necessarily be *freed*, when
+   *     destroying the library, by @FT_Done_FreeType.
+   *
+   *   numPoints ::
+   *     The maximum number of points within the outline.
+   *     Must be smaller than or equal to 0xFFFF (65535).
+   *
+   *   numContours ::
+   *     The maximum number of contours within the outline.
+   *     This value must be in the range 0 to `numPoints'.
+   *
+   * @output:
+   *   anoutline ::
+   *     A handle to the new outline.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The reason why this function takes a `library' parameter is simply
+   *   to use the library's memory allocator.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_New( FT_Library   library,
                   FT_UInt      numPoints,
@@ -169,27 +176,29 @@
                            FT_Outline  *anoutline );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Done                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy an outline created with @FT_Outline_New.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle of the library object used to allocate the     */
-  /*               outline.                                                */
-  /*                                                                       */
-  /*    outline :: A pointer to the outline object to be discarded.        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If the outline's `owner' field is not set, only the outline        */
-  /*    descriptor will be released.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Done
+   *
+   * @description:
+   *   Destroy an outline created with @FT_Outline_New.
+   *
+   * @input:
+   *   library ::
+   *     A handle of the library object used to allocate the
+   *     outline.
+   *
+   *   outline ::
+   *     A pointer to the outline object to be discarded.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   If the outline's `owner' field is not set, only the outline
+   *   descriptor will be released.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Done( FT_Library   library,
                    FT_Outline*  outline );
@@ -200,334 +209,354 @@
                             FT_Outline*  outline );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Check                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Check the contents of an outline descriptor.                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    outline :: A handle to a source outline.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    An empty outline, or an outline with a single point only is also   */
-  /*    valid.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Check
+   *
+   * @description:
+   *   Check the contents of an outline descriptor.
+   *
+   * @input:
+   *   outline ::
+   *     A handle to a source outline.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   An empty outline, or an outline with a single point only is also
+   *   valid.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Check( FT_Outline*  outline );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Get_CBox                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return an outline's `control box'.  The control box encloses all   */
-  /*    the outline's points, including Bezier control points.  Though it  */
-  /*    coincides with the exact bounding box for most glyphs, it can be   */
-  /*    slightly larger in some situations (like when rotating an outline  */
-  /*    that contains Bezier outside arcs).                                */
-  /*                                                                       */
-  /*    Computing the control box is very fast, while getting the bounding */
-  /*    box can take much more time as it needs to walk over all segments  */
-  /*    and arcs in the outline.  To get the latter, you can use the       */
-  /*    `ftbbox' component, which is dedicated to this single task.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    outline :: A pointer to the source outline descriptor.             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    acbox   :: The outline's control box.                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See @FT_Glyph_Get_CBox for a discussion of tricky fonts.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Get_CBox
+   *
+   * @description:
+   *   Return an outline's `control box'.  The control box encloses all
+   *   the outline's points, including Bezier control points.  Though it
+   *   coincides with the exact bounding box for most glyphs, it can be
+   *   slightly larger in some situations (like when rotating an outline
+   *   that contains Bezier outside arcs).
+   *
+   *   Computing the control box is very fast, while getting the bounding
+   *   box can take much more time as it needs to walk over all segments
+   *   and arcs in the outline.  To get the latter, you can use the
+   *   `ftbbox' component, which is dedicated to this single task.
+   *
+   * @input:
+   *   outline ::
+   *     A pointer to the source outline descriptor.
+   *
+   * @output:
+   *   acbox ::
+   *     The outline's control box.
+   *
+   * @note:
+   *   See @FT_Glyph_Get_CBox for a discussion of tricky fonts.
+   */
   FT_EXPORT( void )
   FT_Outline_Get_CBox( const FT_Outline*  outline,
                        FT_BBox           *acbox );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Translate                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply a simple translation to the points of an outline.            */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    outline :: A pointer to the target outline descriptor.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    xOffset :: The horizontal offset.                                  */
-  /*                                                                       */
-  /*    yOffset :: The vertical offset.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Translate
+   *
+   * @description:
+   *   Apply a simple translation to the points of an outline.
+   *
+   * @inout:
+   *   outline ::
+   *     A pointer to the target outline descriptor.
+   *
+   * @input:
+   *   xOffset ::
+   *     The horizontal offset.
+   *
+   *   yOffset ::
+   *     The vertical offset.
+   */
   FT_EXPORT( void )
   FT_Outline_Translate( const FT_Outline*  outline,
                         FT_Pos             xOffset,
                         FT_Pos             yOffset );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Copy                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Copy an outline into another one.  Both objects must have the      */
-  /*    same sizes (number of points & number of contours) when this       */
-  /*    function is called.                                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    source :: A handle to the source outline.                          */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    target :: A handle to the target outline.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Copy
+   *
+   * @description:
+   *   Copy an outline into another one.  Both objects must have the
+   *   same sizes (number of points & number of contours) when this
+   *   function is called.
+   *
+   * @input:
+   *   source ::
+   *     A handle to the source outline.
+   *
+   * @output:
+   *   target ::
+   *     A handle to the target outline.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Copy( const FT_Outline*  source,
                    FT_Outline        *target );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Transform                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply a simple 2x2 matrix to all of an outline's points.  Useful   */
-  /*    for applying rotations, slanting, flipping, etc.                   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    outline :: A pointer to the target outline descriptor.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    matrix  :: A pointer to the transformation matrix.                 */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You can use @FT_Outline_Translate if you need to translate the     */
-  /*    outline's points.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Transform
+   *
+   * @description:
+   *   Apply a simple 2x2 matrix to all of an outline's points.  Useful
+   *   for applying rotations, slanting, flipping, etc.
+   *
+   * @inout:
+   *   outline ::
+   *     A pointer to the target outline descriptor.
+   *
+   * @input:
+   *   matrix ::
+   *     A pointer to the transformation matrix.
+   *
+   * @note:
+   *   You can use @FT_Outline_Translate if you need to translate the
+   *   outline's points.
+   */
   FT_EXPORT( void )
   FT_Outline_Transform( const FT_Outline*  outline,
                         const FT_Matrix*   matrix );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Embolden                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Embolden an outline.  The new outline will be at most 4~times      */
-  /*    `strength' pixels wider and higher.  You may think of the left and */
-  /*    bottom borders as unchanged.                                       */
-  /*                                                                       */
-  /*    Negative `strength' values to reduce the outline thickness are     */
-  /*    possible also.                                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    outline  :: A handle to the target outline.                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    strength :: How strong the glyph is emboldened.  Expressed in      */
-  /*                26.6 pixel format.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The used algorithm to increase or decrease the thickness of the    */
-  /*    glyph doesn't change the number of points; this means that certain */
-  /*    situations like acute angles or intersections are sometimes        */
-  /*    handled incorrectly.                                               */
-  /*                                                                       */
-  /*    If you need `better' metrics values you should call                */
-  /*    @FT_Outline_Get_CBox or @FT_Outline_Get_BBox.                      */
-  /*                                                                       */
-  /*    Example call:                                                      */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );                   */
-  /*      if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE )            */
-  /*        FT_Outline_Embolden( &face->glyph->outline, strength );        */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    To get meaningful results, font scaling values must be set with    */
-  /*    functions like @FT_Set_Char_Size before calling FT_Render_Glyph.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Embolden
+   *
+   * @description:
+   *   Embolden an outline.  The new outline will be at most 4~times
+   *   `strength' pixels wider and higher.  You may think of the left and
+   *   bottom borders as unchanged.
+   *
+   *   Negative `strength' values to reduce the outline thickness are
+   *   possible also.
+   *
+   * @inout:
+   *   outline ::
+   *     A handle to the target outline.
+   *
+   * @input:
+   *   strength ::
+   *     How strong the glyph is emboldened.  Expressed in
+   *     26.6 pixel format.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The used algorithm to increase or decrease the thickness of the
+   *   glyph doesn't change the number of points; this means that certain
+   *   situations like acute angles or intersections are sometimes
+   *   handled incorrectly.
+   *
+   *   If you need `better' metrics values you should call
+   *   @FT_Outline_Get_CBox or @FT_Outline_Get_BBox.
+   *
+   *   To get meaningful results, font scaling values must be set with
+   *   functions like @FT_Set_Char_Size before calling FT_Render_Glyph.
+   *
+   * @example:
+   *   {
+   *     FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );
+   *
+   *     if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE )
+   *       FT_Outline_Embolden( &face->glyph->outline, strength );
+   *   }
+   *
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Embolden( FT_Outline*  outline,
                        FT_Pos       strength );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_EmboldenXY                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Embolden an outline.  The new outline will be `xstrength' pixels   */
-  /*    wider and `ystrength' pixels higher.  Otherwise, it is similar to  */
-  /*    @FT_Outline_Embolden, which uses the same strength in both         */
-  /*    directions.                                                        */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.10                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_EmboldenXY
+   *
+   * @description:
+   *   Embolden an outline.  The new outline will be `xstrength' pixels
+   *   wider and `ystrength' pixels higher.  Otherwise, it is similar to
+   *   @FT_Outline_Embolden, which uses the same strength in both
+   *   directions.
+   *
+   * @since:
+   *   2.4.10
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_EmboldenXY( FT_Outline*  outline,
                          FT_Pos       xstrength,
                          FT_Pos       ystrength );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Reverse                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reverse the drawing direction of an outline.  This is used to      */
-  /*    ensure consistent fill conventions for mirrored glyphs.            */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    outline :: A pointer to the target outline descriptor.             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in     */
-  /*    the outline's `flags' field.                                       */
-  /*                                                                       */
-  /*    It shouldn't be used by a normal client application, unless it     */
-  /*    knows what it is doing.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Reverse
+   *
+   * @description:
+   *   Reverse the drawing direction of an outline.  This is used to
+   *   ensure consistent fill conventions for mirrored glyphs.
+   *
+   * @inout:
+   *   outline ::
+   *     A pointer to the target outline descriptor.
+   *
+   * @note:
+   *   This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in
+   *   the outline's `flags' field.
+   *
+   *   It shouldn't be used by a normal client application, unless it
+   *   knows what it is doing.
+   */
   FT_EXPORT( void )
   FT_Outline_Reverse( FT_Outline*  outline );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Get_Bitmap                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Render an outline within a bitmap.  The outline's image is simply  */
-  /*    OR-ed to the target bitmap.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to a FreeType library object.                  */
-  /*                                                                       */
-  /*    outline :: A pointer to the source outline descriptor.             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    abitmap :: A pointer to the target bitmap descriptor.              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function does NOT CREATE the bitmap, it only renders an       */
-  /*    outline image within the one you pass to it!  Consequently, the    */
-  /*    various fields in `abitmap' should be set accordingly.             */
-  /*                                                                       */
-  /*    It will use the raster corresponding to the default glyph format.  */
-  /*                                                                       */
-  /*    The value of the `num_grays' field in `abitmap' is ignored.  If    */
-  /*    you select the gray-level rasterizer, and you want less than 256   */
-  /*    gray levels, you have to use @FT_Outline_Render directly.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Get_Bitmap
+   *
+   * @description:
+   *   Render an outline within a bitmap.  The outline's image is simply
+   *   OR-ed to the target bitmap.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a FreeType library object.
+   *
+   *   outline ::
+   *     A pointer to the source outline descriptor.
+   *
+   * @inout:
+   *   abitmap ::
+   *     A pointer to the target bitmap descriptor.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function does NOT CREATE the bitmap, it only renders an
+   *   outline image within the one you pass to it!  Consequently, the
+   *   various fields in `abitmap' should be set accordingly.
+   *
+   *   It will use the raster corresponding to the default glyph format.
+   *
+   *   The value of the `num_grays' field in `abitmap' is ignored.  If
+   *   you select the gray-level rasterizer, and you want less than 256
+   *   gray levels, you have to use @FT_Outline_Render directly.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Get_Bitmap( FT_Library        library,
                          FT_Outline*       outline,
                          const FT_Bitmap  *abitmap );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Render                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Render an outline within a bitmap using the current scan-convert.  */
-  /*    This function uses an @FT_Raster_Params structure as an argument,  */
-  /*    allowing advanced features like direct composition, translucency,  */
-  /*    etc.                                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to a FreeType library object.                  */
-  /*                                                                       */
-  /*    outline :: A pointer to the source outline descriptor.             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    params  :: A pointer to an @FT_Raster_Params structure used to     */
-  /*               describe the rendering operation.                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You should know what you are doing and how @FT_Raster_Params works */
-  /*    to use this function.                                              */
-  /*                                                                       */
-  /*    The field `params.source' will be set to `outline' before the scan */
-  /*    converter is called, which means that the value you give to it is  */
-  /*    actually ignored.                                                  */
-  /*                                                                       */
-  /*    The gray-level rasterizer always uses 256 gray levels.  If you     */
-  /*    want less gray levels, you have to provide your own span callback. */
-  /*    See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the   */
-  /*    @FT_Raster_Params structure for more details.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Render
+   *
+   * @description:
+   *   Render an outline within a bitmap using the current scan-convert.
+   *   This function uses an @FT_Raster_Params structure as an argument,
+   *   allowing advanced features like direct composition, translucency,
+   *   etc.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a FreeType library object.
+   *
+   *   outline ::
+   *     A pointer to the source outline descriptor.
+   *
+   * @inout:
+   *   params ::
+   *     A pointer to an @FT_Raster_Params structure used to
+   *     describe the rendering operation.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   You should know what you are doing and how @FT_Raster_Params works
+   *   to use this function.
+   *
+   *   The field `params.source' will be set to `outline' before the scan
+   *   converter is called, which means that the value you give to it is
+   *   actually ignored.
+   *
+   *   The gray-level rasterizer always uses 256 gray levels.  If you
+   *   want less gray levels, you have to provide your own span callback.
+   *   See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the
+   *   @FT_Raster_Params structure for more details.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Render( FT_Library         library,
                      FT_Outline*        outline,
                      FT_Raster_Params*  params );
 
 
- /**************************************************************************
-  *
-  * @enum:
-  *   FT_Orientation
-  *
-  * @description:
-  *   A list of values used to describe an outline's contour orientation.
-  *
-  *   The TrueType and PostScript specifications use different conventions
-  *   to determine whether outline contours should be filled or unfilled.
-  *
-  * @values:
-  *   FT_ORIENTATION_TRUETYPE ::
-  *     According to the TrueType specification, clockwise contours must
-  *     be filled, and counter-clockwise ones must be unfilled.
-  *
-  *   FT_ORIENTATION_POSTSCRIPT ::
-  *     According to the PostScript specification, counter-clockwise contours
-  *     must be filled, and clockwise ones must be unfilled.
-  *
-  *   FT_ORIENTATION_FILL_RIGHT ::
-  *     This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
-  *     remember that in TrueType, everything that is to the right of
-  *     the drawing direction of a contour must be filled.
-  *
-  *   FT_ORIENTATION_FILL_LEFT ::
-  *     This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
-  *     remember that in PostScript, everything that is to the left of
-  *     the drawing direction of a contour must be filled.
-  *
-  *   FT_ORIENTATION_NONE ::
-  *     The orientation cannot be determined.  That is, different parts of
-  *     the glyph have different orientation.
-  *
-  */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Orientation
+   *
+   * @description:
+   *   A list of values used to describe an outline's contour orientation.
+   *
+   *   The TrueType and PostScript specifications use different conventions
+   *   to determine whether outline contours should be filled or unfilled.
+   *
+   * @values:
+   *   FT_ORIENTATION_TRUETYPE ::
+   *     According to the TrueType specification, clockwise contours must
+   *     be filled, and counter-clockwise ones must be unfilled.
+   *
+   *   FT_ORIENTATION_POSTSCRIPT ::
+   *     According to the PostScript specification, counter-clockwise contours
+   *     must be filled, and clockwise ones must be unfilled.
+   *
+   *   FT_ORIENTATION_FILL_RIGHT ::
+   *     This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
+   *     remember that in TrueType, everything that is to the right of
+   *     the drawing direction of a contour must be filled.
+   *
+   *   FT_ORIENTATION_FILL_LEFT ::
+   *     This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
+   *     remember that in PostScript, everything that is to the left of
+   *     the drawing direction of a contour must be filled.
+   *
+   *   FT_ORIENTATION_NONE ::
+   *     The orientation cannot be determined.  That is, different parts of
+   *     the glyph have different orientation.
+   *
+   */
   typedef enum  FT_Orientation_
   {
     FT_ORIENTATION_TRUETYPE   = 0,
@@ -539,33 +568,34 @@
   } FT_Orientation;
 
 
- /**************************************************************************
-  *
-  * @function:
-  *   FT_Outline_Get_Orientation
-  *
-  * @description:
-  *   This function analyzes a glyph outline and tries to compute its
-  *   fill orientation (see @FT_Orientation).  This is done by integrating
-  *   the total area covered by the outline. The positive integral
-  *   corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT
-  *   is returned. The negative integral corresponds to the counter-clockwise
-  *   orientation and @FT_ORIENTATION_TRUETYPE is returned.
-  *
-  *   Note that this will return @FT_ORIENTATION_TRUETYPE for empty
-  *   outlines.
-  *
-  * @input:
-  *   outline ::
-  *     A handle to the source outline.
-  *
-  * @return:
-  *   The orientation.
-  *
-  */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Get_Orientation
+   *
+   * @description:
+   *   This function analyzes a glyph outline and tries to compute its
+   *   fill orientation (see @FT_Orientation).  This is done by integrating
+   *   the total area covered by the outline. The positive integral
+   *   corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT
+   *   is returned. The negative integral corresponds to the counter-clockwise
+   *   orientation and @FT_ORIENTATION_TRUETYPE is returned.
+   *
+   *   Note that this will return @FT_ORIENTATION_TRUETYPE for empty
+   *   outlines.
+   *
+   * @input:
+   *   outline ::
+   *     A handle to the source outline.
+   *
+   * @return:
+   *   The orientation.
+   *
+   */
   FT_EXPORT( FT_Orientation )
   FT_Outline_Get_Orientation( FT_Outline*  outline );
 
+
   /* */
 
 
diff --git a/include/freetype/ftparams.h b/include/freetype/ftparams.h
index 5a9006c..004eaf5 100644
--- a/include/freetype/ftparams.h
+++ b/include/freetype/ftparams.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftparams.h                                                             */
-/*                                                                         */
-/*    FreeType API for possible FT_Parameter tags (specification only).    */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftparams.h
+ *
+ *   FreeType API for possible FT_Parameter tags (specification only).
+ *
+ * Copyright 2017-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTPARAMS_H_
@@ -53,7 +53,7 @@
 
   /***************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY
    *
    * @description:
@@ -77,7 +77,7 @@
 
   /***************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY
    *
    * @description:
@@ -101,7 +101,7 @@
 
   /***************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_INCREMENTAL
    *
    * @description:
@@ -115,7 +115,7 @@
 
   /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_LCD_FILTER_WEIGHTS
    *
    * @description:
@@ -135,7 +135,7 @@
 
   /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_RANDOM_SEED
    *
    * @description:
@@ -154,7 +154,7 @@
 
   /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_STEM_DARKENING
    *
    * @description:
@@ -176,19 +176,19 @@
           FT_MAKE_TAG( 'd', 'a', 'r', 'k' )
 
 
- /***************************************************************************
-  *
-  * @constant:
-  *   FT_PARAM_TAG_UNPATENTED_HINTING
-  *
-  * @description:
-  *   Deprecated, no effect.
-  *
-  *   Previously: A constant used as the tag of an @FT_Parameter structure to
-  *   indicate that unpatented methods only should be used by the TrueType
-  *   bytecode interpreter for a typeface opened by @FT_Open_Face.
-  *
-  */
+  /***************************************************************************
+   *
+   * @enum:
+   *   FT_PARAM_TAG_UNPATENTED_HINTING
+   *
+   * @description:
+   *   Deprecated, no effect.
+   *
+   *   Previously: A constant used as the tag of an @FT_Parameter structure to
+   *   indicate that unpatented methods only should be used by the TrueType
+   *   bytecode interpreter for a typeface opened by @FT_Open_Face.
+   *
+   */
 #define FT_PARAM_TAG_UNPATENTED_HINTING \
           FT_MAKE_TAG( 'u', 'n', 'p', 'a' )
 
diff --git a/include/freetype/ftpfr.h b/include/freetype/ftpfr.h
index ce60eb4..deaae61 100644
--- a/include/freetype/ftpfr.h
+++ b/include/freetype/ftpfr.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpfr.h                                                                */
-/*                                                                         */
-/*    FreeType API for accessing PFR-specific data (specification only).   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftpfr.h
+ *
+ *   FreeType API for accessing PFR-specific data (specification only).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTPFR_H_
@@ -32,60 +32,61 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    pfr_fonts                                                          */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    PFR Fonts                                                          */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    PFR/TrueDoc specific API.                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of PFR-specific functions.   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   pfr_fonts
+   *
+   * @title:
+   *   PFR Fonts
+   *
+   * @abstract:
+   *   PFR/TrueDoc-specific API.
+   *
+   * @description:
+   *   This section contains the declaration of PFR-specific functions.
+   *
+   */
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_Get_PFR_Metrics
-  *
-  * @description:
-  *    Return the outline and metrics resolutions of a given PFR face.
-  *
-  * @input:
-  *    face :: Handle to the input face.  It can be a non-PFR face.
-  *
-  * @output:
-  *    aoutline_resolution ::
-  *      Outline resolution.  This is equivalent to `face->units_per_EM'
-  *      for non-PFR fonts.  Optional (parameter can be NULL).
-  *
-  *    ametrics_resolution ::
-  *      Metrics resolution.  This is equivalent to `outline_resolution'
-  *      for non-PFR fonts.  Optional (parameter can be NULL).
-  *
-  *    ametrics_x_scale ::
-  *      A 16.16 fixed-point number used to scale distance expressed
-  *      in metrics units to device sub-pixels.  This is equivalent to
-  *      `face->size->x_scale', but for metrics only.  Optional (parameter
-  *      can be NULL).
-  *
-  *    ametrics_y_scale ::
-  *      Same as `ametrics_x_scale' but for the vertical direction.
-  *      optional (parameter can be NULL).
-  *
-  * @return:
-  *    FreeType error code.  0~means success.
-  *
-  * @note:
-  *   If the input face is not a PFR, this function will return an error.
-  *   However, in all cases, it will return valid values.
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_Get_PFR_Metrics
+   *
+   * @description:
+   *    Return the outline and metrics resolutions of a given PFR face.
+   *
+   * @input:
+   *    face ::
+   *      Handle to the input face.  It can be a non-PFR face.
+   *
+   * @output:
+   *    aoutline_resolution ::
+   *      Outline resolution.  This is equivalent to `face->units_per_EM'
+   *      for non-PFR fonts.  Optional (parameter can be NULL).
+   *
+   *    ametrics_resolution ::
+   *      Metrics resolution.  This is equivalent to `outline_resolution'
+   *      for non-PFR fonts.  Optional (parameter can be NULL).
+   *
+   *    ametrics_x_scale ::
+   *      A 16.16 fixed-point number used to scale distance expressed
+   *      in metrics units to device subpixels.  This is equivalent to
+   *      `face->size->x_scale', but for metrics only.  Optional (parameter
+   *      can be NULL).
+   *
+   *    ametrics_y_scale ::
+   *      Same as `ametrics_x_scale' but for the vertical direction.
+   *      optional (parameter can be NULL).
+   *
+   * @return:
+   *    FreeType error code.  0~means success.
+   *
+   * @note:
+   *   If the input face is not a PFR, this function will return an error.
+   *   However, in all cases, it will return valid values.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_PFR_Metrics( FT_Face    face,
                       FT_UInt   *aoutline_resolution,
@@ -94,37 +95,41 @@
                       FT_Fixed  *ametrics_y_scale );
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_Get_PFR_Kerning
-  *
-  * @description:
-  *    Return the kerning pair corresponding to two glyphs in a PFR face.
-  *    The distance is expressed in metrics units, unlike the result of
-  *    @FT_Get_Kerning.
-  *
-  * @input:
-  *    face  :: A handle to the input face.
-  *
-  *    left  :: Index of the left glyph.
-  *
-  *    right :: Index of the right glyph.
-  *
-  * @output:
-  *    avector :: A kerning vector.
-  *
-  * @return:
-  *    FreeType error code.  0~means success.
-  *
-  * @note:
-  *    This function always return distances in original PFR metrics
-  *    units.  This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
-  *    mode, which always returns distances converted to outline units.
-  *
-  *    You can use the value of the `x_scale' and `y_scale' parameters
-  *    returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels.
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_Get_PFR_Kerning
+   *
+   * @description:
+   *    Return the kerning pair corresponding to two glyphs in a PFR face.
+   *    The distance is expressed in metrics units, unlike the result of
+   *    @FT_Get_Kerning.
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    left ::
+   *      Index of the left glyph.
+   *
+   *    right ::
+   *      Index of the right glyph.
+   *
+   * @output:
+   *    avector ::
+   *      A kerning vector.
+   *
+   * @return:
+   *    FreeType error code.  0~means success.
+   *
+   * @note:
+   *    This function always return distances in original PFR metrics
+   *    units.  This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
+   *    mode, which always returns distances converted to outline units.
+   *
+   *    You can use the value of the `x_scale' and `y_scale' parameters
+   *    returned by @FT_Get_PFR_Metrics to scale these to device subpixels.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_PFR_Kerning( FT_Face     face,
                       FT_UInt     left,
@@ -132,30 +137,33 @@
                       FT_Vector  *avector );
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_Get_PFR_Advance
-  *
-  * @description:
-  *    Return a given glyph advance, expressed in original metrics units,
-  *    from a PFR font.
-  *
-  * @input:
-  *    face   :: A handle to the input face.
-  *
-  *    gindex :: The glyph index.
-  *
-  * @output:
-  *    aadvance :: The glyph advance in metrics units.
-  *
-  * @return:
-  *    FreeType error code.  0~means success.
-  *
-  * @note:
-  *    You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
-  *    to convert the advance to device sub-pixels (i.e., 1/64th of pixels).
-  */
+  /**********************************************************************
+   *
+   * @function:
+   *    FT_Get_PFR_Advance
+   *
+   * @description:
+   *    Return a given glyph advance, expressed in original metrics units,
+   *    from a PFR font.
+   *
+   * @input:
+   *    face ::
+   *      A handle to the input face.
+   *
+   *    gindex ::
+   *      The glyph index.
+   *
+   * @output:
+   *    aadvance ::
+   *      The glyph advance in metrics units.
+   *
+   * @return:
+   *    FreeType error code.  0~means success.
+   *
+   * @note:
+   *    You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
+   *    to convert the advance to device subpixels (i.e., 1/64th of pixels).
+   */
   FT_EXPORT( FT_Error )
   FT_Get_PFR_Advance( FT_Face   face,
                       FT_UInt   gindex,
diff --git a/include/freetype/ftrender.h b/include/freetype/ftrender.h
index fa8ad22..2b7e5c8 100644
--- a/include/freetype/ftrender.h
+++ b/include/freetype/ftrender.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrender.h                                                             */
-/*                                                                         */
-/*    FreeType renderer modules public interface (specification).          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrender.h
+ *
+ *   FreeType renderer modules public interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTRENDER_H_
@@ -28,12 +28,12 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    module_management                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   module_management
+   *
+   */
 
 
   /* create a new glyph object */
@@ -116,32 +116,39 @@
 #define FTRenderer_setMode  FT_Renderer_SetModeFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Renderer_Class                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The renderer module class descriptor.                              */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root            :: The root @FT_Module_Class fields.               */
-  /*                                                                       */
-  /*    glyph_format    :: The glyph image format this renderer handles.   */
-  /*                                                                       */
-  /*    render_glyph    :: A method used to render the image that is in a  */
-  /*                       given glyph slot into a bitmap.                 */
-  /*                                                                       */
-  /*    transform_glyph :: A method used to transform the image that is in */
-  /*                       a given glyph slot.                             */
-  /*                                                                       */
-  /*    get_glyph_cbox  :: A method used to access the glyph's cbox.       */
-  /*                                                                       */
-  /*    set_mode        :: A method used to pass additional parameters.    */
-  /*                                                                       */
-  /*    raster_class    :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.    */
-  /*                       This is a pointer to its raster's class.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Renderer_Class
+   *
+   * @description:
+   *   The renderer module class descriptor.
+   *
+   * @fields:
+   *   root ::
+   *     The root @FT_Module_Class fields.
+   *
+   *   glyph_format ::
+   *     The glyph image format this renderer handles.
+   *
+   *   render_glyph ::
+   *     A method used to render the image that is in a
+   *     given glyph slot into a bitmap.
+   *
+   *   transform_glyph ::
+   *     A method used to transform the image that is in
+   *     a given glyph slot.
+   *
+   *   get_glyph_cbox ::
+   *     A method used to access the glyph's cbox.
+   *
+   *   set_mode ::
+   *     A method used to pass additional parameters.
+   *
+   *   raster_class ::
+   *     For @FT_GLYPH_FORMAT_OUTLINE renderers only.
+   *     This is a pointer to its raster's class.
+   */
   typedef struct  FT_Renderer_Class_
   {
     FT_Module_Class            root;
@@ -158,64 +165,70 @@
   } FT_Renderer_Class;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Renderer                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the current renderer for a given glyph format.            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to the library object.                         */
-  /*                                                                       */
-  /*    format  :: The glyph format.                                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A renderer handle.  0~if none found.                               */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    An error will be returned if a module already exists by that name, */
-  /*    or if the module requires a version of FreeType that is too great. */
-  /*                                                                       */
-  /*    To add a new renderer, simply use @FT_Add_Module.  To retrieve a   */
-  /*    renderer by its name, use @FT_Get_Module.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Renderer
+   *
+   * @description:
+   *   Retrieve the current renderer for a given glyph format.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the library object.
+   *
+   *   format ::
+   *     The glyph format.
+   *
+   * @return:
+   *   A renderer handle.  0~if none found.
+   *
+   * @note:
+   *   An error will be returned if a module already exists by that name,
+   *   or if the module requires a version of FreeType that is too great.
+   *
+   *   To add a new renderer, simply use @FT_Add_Module.  To retrieve a
+   *   renderer by its name, use @FT_Get_Module.
+   */
   FT_EXPORT( FT_Renderer )
   FT_Get_Renderer( FT_Library       library,
                    FT_Glyph_Format  format );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Renderer                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set the current renderer to use, and set additional mode.          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    renderer   :: A handle to the renderer object.                     */
-  /*                                                                       */
-  /*    num_params :: The number of additional parameters.                 */
-  /*                                                                       */
-  /*    parameters :: Additional parameters.                               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    In case of success, the renderer will be used to convert glyph     */
-  /*    images in the renderer's known format into bitmaps.                */
-  /*                                                                       */
-  /*    This doesn't change the current renderer for other formats.        */
-  /*                                                                       */
-  /*    Currently, no FreeType renderer module uses `parameters'; you      */
-  /*    should thus always pass NULL as the value.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Renderer
+   *
+   * @description:
+   *   Set the current renderer to use, and set additional mode.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library object.
+   *
+   * @input:
+   *   renderer ::
+   *     A handle to the renderer object.
+   *
+   *   num_params ::
+   *     The number of additional parameters.
+   *
+   *   parameters ::
+   *     Additional parameters.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   In case of success, the renderer will be used to convert glyph
+   *   images in the renderer's known format into bitmaps.
+   *
+   *   This doesn't change the current renderer for other formats.
+   *
+   *   Currently, no FreeType renderer module uses `parameters'; you
+   *   should thus always pass NULL as the value.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Renderer( FT_Library     library,
                    FT_Renderer    renderer,
diff --git a/include/freetype/ftsizes.h b/include/freetype/ftsizes.h
index 72cb08b..481a053 100644
--- a/include/freetype/ftsizes.h
+++ b/include/freetype/ftsizes.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsizes.h                                                              */
-/*                                                                         */
-/*    FreeType size objects management (specification).                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsizes.h
+ *
+ *   FreeType size objects management (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Typical application would normally not need to use these functions.   */
-  /* However, they have been placed in a public API for the rare cases     */
-  /* where they are needed.                                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Typical application would normally not need to use these functions.
+   * However, they have been placed in a public API for the rare cases
+   * where they are needed.
+   *
+   */
 
 
 #ifndef FTSIZES_H_
@@ -42,109 +42,113 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    sizes_management                                                   */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Size Management                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Managing multiple sizes per face.                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    When creating a new face object (e.g., with @FT_New_Face), an      */
-  /*    @FT_Size object is automatically created and used to store all     */
-  /*    pixel-size dependent information, available in the `face->size'    */
-  /*    field.                                                             */
-  /*                                                                       */
-  /*    It is however possible to create more sizes for a given face,      */
-  /*    mostly in order to manage several character pixel sizes of the     */
-  /*    same font family and style.  See @FT_New_Size and @FT_Done_Size.   */
-  /*                                                                       */
-  /*    Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only           */
-  /*    modify the contents of the current `active' size; you thus need    */
-  /*    to use @FT_Activate_Size to change it.                             */
-  /*                                                                       */
-  /*    99% of applications won't need the functions provided here,        */
-  /*    especially if they use the caching sub-system, so be cautious      */
-  /*    when using these.                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   sizes_management
+   *
+   * @title:
+   *   Size Management
+   *
+   * @abstract:
+   *   Managing multiple sizes per face.
+   *
+   * @description:
+   *   When creating a new face object (e.g., with @FT_New_Face), an
+   *   @FT_Size object is automatically created and used to store all
+   *   pixel-size dependent information, available in the `face->size'
+   *   field.
+   *
+   *   It is however possible to create more sizes for a given face,
+   *   mostly in order to manage several character pixel sizes of the
+   *   same font family and style.  See @FT_New_Size and @FT_Done_Size.
+   *
+   *   Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only
+   *   modify the contents of the current `active' size; you thus need
+   *   to use @FT_Activate_Size to change it.
+   *
+   *   99% of applications won't need the functions provided here,
+   *   especially if they use the caching sub-system, so be cautious
+   *   when using these.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Size                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new size object from a given face object.                 */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to a parent face object.                          */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    asize :: A handle to a new size object.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You need to call @FT_Activate_Size in order to select the new size */
-  /*    for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size,      */
-  /*    @FT_Load_Glyph, @FT_Load_Char, etc.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Size
+   *
+   * @description:
+   *   Create a new size object from a given face object.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a parent face object.
+   *
+   * @output:
+   *   asize ::
+   *     A handle to a new size object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   You need to call @FT_Activate_Size in order to select the new size
+   *   for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size,
+   *   @FT_Load_Glyph, @FT_Load_Char, etc.
+   */
   FT_EXPORT( FT_Error )
   FT_New_Size( FT_Face   face,
                FT_Size*  size );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Size                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discard a given size object.  Note that @FT_Done_Face              */
-  /*    automatically discards all size objects allocated with             */
-  /*    @FT_New_Size.                                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size :: A handle to a target size object.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Size
+   *
+   * @description:
+   *   Discard a given size object.  Note that @FT_Done_Face
+   *   automatically discards all size objects allocated with
+   *   @FT_New_Size.
+   *
+   * @input:
+   *   size ::
+   *     A handle to a target size object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Done_Size( FT_Size  size );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Activate_Size                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Even though it is possible to create several size objects for a    */
-  /*    given face (see @FT_New_Size for details), functions like          */
-  /*    @FT_Load_Glyph or @FT_Load_Char only use the one that has been     */
-  /*    activated last to determine the `current character pixel size'.    */
-  /*                                                                       */
-  /*    This function can be used to `activate' a previously created size  */
-  /*    object.                                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size :: A handle to a target size object.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If `face' is the size's parent face object, this function changes  */
-  /*    the value of `face->size' to the input size handle.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Activate_Size
+   *
+   * @description:
+   *   Even though it is possible to create several size objects for a
+   *   given face (see @FT_New_Size for details), functions like
+   *   @FT_Load_Glyph or @FT_Load_Char only use the one that has been
+   *   activated last to determine the `current character pixel size'.
+   *
+   *   This function can be used to `activate' a previously created size
+   *   object.
+   *
+   * @input:
+   *   size ::
+   *     A handle to a target size object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   If `face' is the size's parent face object, this function changes
+   *   the value of `face->size' to the input size handle.
+   */
   FT_EXPORT( FT_Error )
   FT_Activate_Size( FT_Size  size );
 
diff --git a/include/freetype/ftsnames.h b/include/freetype/ftsnames.h
index 8eb8d70..0a0ac31 100644
--- a/include/freetype/ftsnames.h
+++ b/include/freetype/ftsnames.h
@@ -1,22 +1,22 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsnames.h                                                             */
-/*                                                                         */
-/*    Simple interface to access SFNT `name' tables (which are used        */
-/*    to hold font names, copyright info, notices, etc.) (specification).  */
-/*                                                                         */
-/*    This is _not_ used to retrieve glyph names!                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsnames.h
+ *
+ *   Simple interface to access SFNT `name' tables (which are used
+ *   to hold font names, copyright info, notices, etc.) (specification).
+ *
+ *   This is _not_ used to retrieve glyph names!
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTSNAMES_H_
@@ -37,72 +37,78 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    sfnt_names                                                         */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    SFNT Names                                                         */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Access the names embedded in TrueType and OpenType files.          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The TrueType and OpenType specifications allow the inclusion of    */
-  /*    a special names table (`name') in font files.  This table contains */
-  /*    textual (and internationalized) information regarding the font,    */
-  /*    like family name, copyright, version, etc.                         */
-  /*                                                                       */
-  /*    The definitions below are used to access them if available.        */
-  /*                                                                       */
-  /*    Note that this has nothing to do with glyph names!                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   sfnt_names
+   *
+   * @title:
+   *   SFNT Names
+   *
+   * @abstract:
+   *   Access the names embedded in TrueType and OpenType files.
+   *
+   * @description:
+   *   The TrueType and OpenType specifications allow the inclusion of
+   *   a special names table (`name') in font files.  This table contains
+   *   textual (and internationalized) information regarding the font,
+   *   like family name, copyright, version, etc.
+   *
+   *   The definitions below are used to access them if available.
+   *
+   *   Note that this has nothing to do with glyph names!
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_SfntName                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to model an SFNT `name' table entry.              */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    platform_id :: The platform ID for `string'.                       */
-  /*                   See @TT_PLATFORM_XXX for possible values.           */
-  /*                                                                       */
-  /*    encoding_id :: The encoding ID for `string'.                       */
-  /*                   See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,               */
-  /*                   @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX */
-  /*                   for possible values.                                */
-  /*                                                                       */
-  /*    language_id :: The language ID for `string'.                       */
-  /*                   See @TT_MAC_LANGID_XXX and @TT_MS_LANGID_XXX for    */
-  /*                   possible values.                                    */
-  /*                                                                       */
-  /*                   Registered OpenType values for `language_id' are    */
-  /*                   always smaller than 0x8000; values equal or larger  */
-  /*                   than 0x8000 usually indicate a language tag string  */
-  /*                   (introduced in OpenType version 1.6).  Use function */
-  /*                   @FT_Get_Sfnt_LangTag with `language_id' as its      */
-  /*                   argument to retrieve the associated language tag.   */
-  /*                                                                       */
-  /*    name_id     :: An identifier for `string'.                         */
-  /*                   See @TT_NAME_ID_XXX for possible values.            */
-  /*                                                                       */
-  /*    string      :: The `name' string.  Note that its format differs    */
-  /*                   depending on the (platform,encoding) pair, being    */
-  /*                   either a string of bytes (without a terminating     */
-  /*                   NULL byte) or containing UTF-16BE entities.         */
-  /*                                                                       */
-  /*    string_len  :: The length of `string' in bytes.                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Please refer to the TrueType or OpenType specification for more    */
-  /*    details.                                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_SfntName
+   *
+   * @description:
+   *   A structure used to model an SFNT `name' table entry.
+   *
+   * @fields:
+   *   platform_id ::
+   *     The platform ID for `string'.
+   *     See @TT_PLATFORM_XXX for possible values.
+   *
+   *   encoding_id ::
+   *     The encoding ID for `string'.
+   *     See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,
+   *     @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX
+   *     for possible values.
+   *
+   *   language_id ::
+   *     The language ID for `string'.
+   *     See @TT_MAC_LANGID_XXX and @TT_MS_LANGID_XXX for
+   *     possible values.
+   *
+   *     Registered OpenType values for `language_id' are
+   *     always smaller than 0x8000; values equal or larger
+   *     than 0x8000 usually indicate a language tag string
+   *     (introduced in OpenType version 1.6).  Use function
+   *     @FT_Get_Sfnt_LangTag with `language_id' as its
+   *     argument to retrieve the associated language tag.
+   *
+   *   name_id ::
+   *     An identifier for `string'.
+   *     See @TT_NAME_ID_XXX for possible values.
+   *
+   *   string ::
+   *     The `name' string.  Note that its format differs
+   *     depending on the (platform,encoding) pair, being
+   *     either a string of bytes (without a terminating
+   *     NULL byte) or containing UTF-16BE entities.
+   *
+   *   string_len ::
+   *     The length of `string' in bytes.
+   *
+   * @note:
+   *   Please refer to the TrueType or OpenType specification for more
+   *   details.
+   */
   typedef struct  FT_SfntName_
   {
     FT_UShort  platform_id;
@@ -116,83 +122,96 @@
   } FT_SfntName;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Sfnt_Name_Count                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the number of name strings in the SFNT `name' table.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the source face.                               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The number of strings in the `name' table.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Sfnt_Name_Count
+   *
+   * @description:
+   *   Retrieve the number of name strings in the SFNT `name' table.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @return:
+   *   The number of strings in the `name' table.
+   *
+   * @note:
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_SFNT_NAMES' is not defined in `ftoption.h'.
+   */
   FT_EXPORT( FT_UInt )
   FT_Get_Sfnt_Name_Count( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Sfnt_Name                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve a string of the SFNT `name' table for a given index.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face  :: A handle to the source face.                              */
-  /*                                                                       */
-  /*    idx   :: The index of the `name' string.                           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aname :: The indexed @FT_SfntName structure.                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `string' array returned in the `aname' structure is not        */
-  /*    null-terminated.  Note that you don't have to deallocate `string'  */
-  /*    by yourself; FreeType takes care of it if you call @FT_Done_Face.  */
-  /*                                                                       */
-  /*    Use @FT_Get_Sfnt_Name_Count to get the total number of available   */
-  /*    `name' table entries, then do a loop until you get the right       */
-  /*    platform, encoding, and name ID.                                   */
-  /*                                                                       */
-  /*    `name' table format~1 entries can use language tags also, see      */
-  /*    @FT_Get_Sfnt_LangTag.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Sfnt_Name
+   *
+   * @description:
+   *   Retrieve a string of the SFNT `name' table for a given index.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   idx ::
+   *     The index of the `name' string.
+   *
+   * @output:
+   *   aname ::
+   *     The indexed @FT_SfntName structure.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The `string' array returned in the `aname' structure is not
+   *   null-terminated.  Note that you don't have to deallocate `string'
+   *   by yourself; FreeType takes care of it if you call @FT_Done_Face.
+   *
+   *   Use @FT_Get_Sfnt_Name_Count to get the total number of available
+   *   `name' table entries, then do a loop until you get the right
+   *   platform, encoding, and name ID.
+   *
+   *   `name' table format~1 entries can use language tags also, see
+   *   @FT_Get_Sfnt_LangTag.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_SFNT_NAMES' is not defined in `ftoption.h'.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Sfnt_Name( FT_Face       face,
                     FT_UInt       idx,
                     FT_SfntName  *aname );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_SfntLangTag                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a language tag entry from an SFNT `name'      */
-  /*    table.                                                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    string      :: The language tag string, encoded in UTF-16BE        */
-  /*                   (without trailing NULL bytes).                      */
-  /*                                                                       */
-  /*    string_len  :: The length of `string' in *bytes*.                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Please refer to the TrueType or OpenType specification for more    */
-  /*    details.                                                           */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_SfntLangTag
+   *
+   * @description:
+   *   A structure to model a language tag entry from an SFNT `name'
+   *   table.
+   *
+   * @fields:
+   *   string ::
+   *     The language tag string, encoded in UTF-16BE
+   *     (without trailing NULL bytes).
+   *
+   *   string_len ::
+   *     The length of `string' in *bytes*.
+   *
+   * @note:
+   *   Please refer to the TrueType or OpenType specification for more
+   *   details.
+   *
+   * @since:
+   *   2.8
+   */
   typedef struct  FT_SfntLangTag_
   {
     FT_Byte*  string;      /* this string is *not* null-terminated! */
@@ -201,41 +220,47 @@
   } FT_SfntLangTag;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Sfnt_LangTag                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the language tag associated with a language ID of an SFNT */
-  /*    `name' table entry.                                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the source face.                           */
-  /*                                                                       */
-  /*    langID   :: The language ID, as returned by @FT_Get_Sfnt_Name.     */
-  /*                This is always a value larger than 0x8000.             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    alangTag :: The language tag associated with the `name' table      */
-  /*                entry's language ID.                                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `string' array returned in the `alangTag' structure is not     */
-  /*    null-terminated.  Note that you don't have to deallocate `string'  */
-  /*    by yourself; FreeType takes care of it if you call @FT_Done_Face.  */
-  /*                                                                       */
-  /*    Only `name' table format~1 supports language tags.  For format~0   */
-  /*    tables, this function always returns FT_Err_Invalid_Table.  For    */
-  /*    invalid format~1 language ID values, FT_Err_Invalid_Argument is    */
-  /*    returned.                                                          */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Sfnt_LangTag
+   *
+   * @description:
+   *   Retrieve the language tag associated with a language ID of an SFNT
+   *   `name' table entry.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   langID ::
+   *     The language ID, as returned by @FT_Get_Sfnt_Name.
+   *     This is always a value larger than 0x8000.
+   *
+   * @output:
+   *   alangTag ::
+   *     The language tag associated with the `name' table
+   *     entry's language ID.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The `string' array returned in the `alangTag' structure is not
+   *   null-terminated.  Note that you don't have to deallocate `string'
+   *   by yourself; FreeType takes care of it if you call @FT_Done_Face.
+   *
+   *   Only `name' table format~1 supports language tags.  For format~0
+   *   tables, this function always returns FT_Err_Invalid_Table.  For
+   *   invalid format~1 language ID values, FT_Err_Invalid_Argument is
+   *   returned.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_SFNT_NAMES' is not defined in `ftoption.h'.
+   *
+   * @since:
+   *   2.8
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Sfnt_LangTag( FT_Face          face,
                        FT_UInt          langID,
diff --git a/include/freetype/ftstroke.h b/include/freetype/ftstroke.h
index 44b6fbe..91d2776 100644
--- a/include/freetype/ftstroke.h
+++ b/include/freetype/ftstroke.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstroke.h                                                             */
-/*                                                                         */
-/*    FreeType path stroker (specification).                               */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstroke.h
+ *
+ *   FreeType path stroker (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTSTROKE_H_
@@ -27,68 +27,68 @@
 FT_BEGIN_HEADER
 
 
- /************************************************************************
-  *
-  * @section:
-  *    glyph_stroker
-  *
-  * @title:
-  *    Glyph Stroker
-  *
-  * @abstract:
-  *    Generating bordered and stroked glyphs.
-  *
-  * @description:
-  *    This component generates stroked outlines of a given vectorial
-  *    glyph.  It also allows you to retrieve the `outside' and/or the
-  *    `inside' borders of the stroke.
-  *
-  *    This can be useful to generate `bordered' glyph, i.e., glyphs
-  *    displayed with a coloured (and anti-aliased) border around their
-  *    shape.
-  *
-  * @order:
-  *    FT_Stroker
-  *
-  *    FT_Stroker_LineJoin
-  *    FT_Stroker_LineCap
-  *    FT_StrokerBorder
-  *
-  *    FT_Outline_GetInsideBorder
-  *    FT_Outline_GetOutsideBorder
-  *
-  *    FT_Glyph_Stroke
-  *    FT_Glyph_StrokeBorder
-  *
-  *    FT_Stroker_New
-  *    FT_Stroker_Set
-  *    FT_Stroker_Rewind
-  *    FT_Stroker_ParseOutline
-  *    FT_Stroker_Done
-  *
-  *    FT_Stroker_BeginSubPath
-  *    FT_Stroker_EndSubPath
-  *
-  *    FT_Stroker_LineTo
-  *    FT_Stroker_ConicTo
-  *    FT_Stroker_CubicTo
-  *
-  *    FT_Stroker_GetBorderCounts
-  *    FT_Stroker_ExportBorder
-  *    FT_Stroker_GetCounts
-  *    FT_Stroker_Export
-  *
-  */
+  /************************************************************************
+   *
+   * @section:
+   *    glyph_stroker
+   *
+   * @title:
+   *    Glyph Stroker
+   *
+   * @abstract:
+   *    Generating bordered and stroked glyphs.
+   *
+   * @description:
+   *    This component generates stroked outlines of a given vectorial
+   *    glyph.  It also allows you to retrieve the `outside' and/or the
+   *    `inside' borders of the stroke.
+   *
+   *    This can be useful to generate `bordered' glyph, i.e., glyphs
+   *    displayed with a coloured (and anti-aliased) border around their
+   *    shape.
+   *
+   * @order:
+   *    FT_Stroker
+   *
+   *    FT_Stroker_LineJoin
+   *    FT_Stroker_LineCap
+   *    FT_StrokerBorder
+   *
+   *    FT_Outline_GetInsideBorder
+   *    FT_Outline_GetOutsideBorder
+   *
+   *    FT_Glyph_Stroke
+   *    FT_Glyph_StrokeBorder
+   *
+   *    FT_Stroker_New
+   *    FT_Stroker_Set
+   *    FT_Stroker_Rewind
+   *    FT_Stroker_ParseOutline
+   *    FT_Stroker_Done
+   *
+   *    FT_Stroker_BeginSubPath
+   *    FT_Stroker_EndSubPath
+   *
+   *    FT_Stroker_LineTo
+   *    FT_Stroker_ConicTo
+   *    FT_Stroker_CubicTo
+   *
+   *    FT_Stroker_GetBorderCounts
+   *    FT_Stroker_ExportBorder
+   *    FT_Stroker_GetCounts
+   *    FT_Stroker_Export
+   *
+   */
 
 
- /**************************************************************
-  *
-  * @type:
-  *   FT_Stroker
-  *
-  * @description:
-  *   Opaque handle to a path stroker object.
-  */
+  /**************************************************************
+   *
+   * @type:
+   *   FT_Stroker
+   *
+   * @description:
+   *   Opaque handle to a path stroker object.
+   */
   typedef struct FT_StrokerRec_*  FT_Stroker;
 
 
diff --git a/include/freetype/ftsynth.h b/include/freetype/ftsynth.h
index ff9fb43..f2e7856 100644
--- a/include/freetype/ftsynth.h
+++ b/include/freetype/ftsynth.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsynth.h                                                              */
-/*                                                                         */
-/*    FreeType synthesizing code for emboldening and slanting              */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsynth.h
+ *
+ *   FreeType synthesizing code for emboldening and slanting
+ *   (specification).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /*************************************************************************/
diff --git a/include/freetype/ftsystem.h b/include/freetype/ftsystem.h
index f6b1629..0b415b6 100644
--- a/include/freetype/ftsystem.h
+++ b/include/freetype/ftsystem.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsystem.h                                                             */
-/*                                                                         */
-/*    FreeType low-level system interface definition (specification).      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsystem.h
+ *
+ *   FreeType low-level system interface definition (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTSYSTEM_H_
@@ -26,31 +26,31 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   system_interface                                                    */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*   System Interface                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*   How FreeType manages memory and i/o.                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   This section contains various definitions related to memory         */
-  /*   management and i/o access.  You need to understand this             */
-  /*   information if you want to use a custom memory manager or you own   */
-  /*   i/o streams.                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *  system_interface
+   *
+   * @title:
+   *  System Interface
+   *
+   * @abstract:
+   *  How FreeType manages memory and i/o.
+   *
+   * @description:
+   *  This section contains various definitions related to memory
+   *  management and i/o access.  You need to understand this
+   *  information if you want to use a custom memory manager or you own
+   *  i/o streams.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                  M E M O R Y   M A N A G E M E N T                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                 M E M O R Y   M A N A G E M E N T
+   *
+   */
 
 
   /*************************************************************************
@@ -177,11 +177,11 @@
   };
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                       I / O   M A N A G E M E N T                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                      I / O   M A N A G E M E N T
+   *
+   */
 
 
   /*************************************************************************
@@ -265,7 +265,7 @@
    *
    * @input:
    *  stream ::
-   *     A handle to the target stream.
+   *    A handle to the target stream.
    *
    */
   typedef void
@@ -320,7 +320,8 @@
    *
    *   cursor ::
    *     This field is set and used internally by FreeType when parsing
-   *     frames.
+   *     frames.  In particular, the `FT_GET_XXX' macros use this instead
+   *     of the `pos' field.
    *
    *   limit ::
    *     This field is set and used internally by FreeType when parsing
diff --git a/include/freetype/fttrigon.h b/include/freetype/fttrigon.h
index 2e3f3f1..7a27bb2 100644
--- a/include/freetype/fttrigon.h
+++ b/include/freetype/fttrigon.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttrigon.h                                                             */
-/*                                                                         */
-/*    FreeType trigonometric functions (specification).                    */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttrigon.h
+ *
+ *   FreeType trigonometric functions (specification).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTTRIGON_H_
@@ -31,12 +31,12 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   computations                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *  computations
+   *
+   */
 
 
   /*************************************************************************
diff --git a/include/freetype/fttypes.h b/include/freetype/fttypes.h
index f638c2e..9da08a0 100644
--- a/include/freetype/fttypes.h
+++ b/include/freetype/fttypes.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttypes.h                                                              */
-/*                                                                         */
-/*    FreeType simple types definitions (specification only).              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttypes.h
+ *
+ *   FreeType simple types definitions (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTTYPES_H_
@@ -31,326 +31,328 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    basic_types                                                        */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Basic Data Types                                                   */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    The basic data types defined by the library.                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the basic data types defined by FreeType~2,  */
-  /*    ranging from simple scalar types to bitmap descriptors.  More      */
-  /*    font-specific structures are defined in a different section.       */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Byte                                                            */
-  /*    FT_Bytes                                                           */
-  /*    FT_Char                                                            */
-  /*    FT_Int                                                             */
-  /*    FT_UInt                                                            */
-  /*    FT_Int16                                                           */
-  /*    FT_UInt16                                                          */
-  /*    FT_Int32                                                           */
-  /*    FT_UInt32                                                          */
-  /*    FT_Int64                                                           */
-  /*    FT_UInt64                                                          */
-  /*    FT_Short                                                           */
-  /*    FT_UShort                                                          */
-  /*    FT_Long                                                            */
-  /*    FT_ULong                                                           */
-  /*    FT_Bool                                                            */
-  /*    FT_Offset                                                          */
-  /*    FT_PtrDist                                                         */
-  /*    FT_String                                                          */
-  /*    FT_Tag                                                             */
-  /*    FT_Error                                                           */
-  /*    FT_Fixed                                                           */
-  /*    FT_Pointer                                                         */
-  /*    FT_Pos                                                             */
-  /*    FT_Vector                                                          */
-  /*    FT_BBox                                                            */
-  /*    FT_Matrix                                                          */
-  /*    FT_FWord                                                           */
-  /*    FT_UFWord                                                          */
-  /*    FT_F2Dot14                                                         */
-  /*    FT_UnitVector                                                      */
-  /*    FT_F26Dot6                                                         */
-  /*    FT_Data                                                            */
-  /*                                                                       */
-  /*    FT_MAKE_TAG                                                        */
-  /*                                                                       */
-  /*    FT_Generic                                                         */
-  /*    FT_Generic_Finalizer                                               */
-  /*                                                                       */
-  /*    FT_Bitmap                                                          */
-  /*    FT_Pixel_Mode                                                      */
-  /*    FT_Palette_Mode                                                    */
-  /*    FT_Glyph_Format                                                    */
-  /*    FT_IMAGE_TAG                                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   basic_types
+   *
+   * @title:
+   *   Basic Data Types
+   *
+   * @abstract:
+   *   The basic data types defined by the library.
+   *
+   * @description:
+   *   This section contains the basic data types defined by FreeType~2,
+   *   ranging from simple scalar types to bitmap descriptors.  More
+   *   font-specific structures are defined in a different section.
+   *
+   * @order:
+   *   FT_Byte
+   *   FT_Bytes
+   *   FT_Char
+   *   FT_Int
+   *   FT_UInt
+   *   FT_Int16
+   *   FT_UInt16
+   *   FT_Int32
+   *   FT_UInt32
+   *   FT_Int64
+   *   FT_UInt64
+   *   FT_Short
+   *   FT_UShort
+   *   FT_Long
+   *   FT_ULong
+   *   FT_Bool
+   *   FT_Offset
+   *   FT_PtrDist
+   *   FT_String
+   *   FT_Tag
+   *   FT_Error
+   *   FT_Fixed
+   *   FT_Pointer
+   *   FT_Pos
+   *   FT_Vector
+   *   FT_BBox
+   *   FT_Matrix
+   *   FT_FWord
+   *   FT_UFWord
+   *   FT_F2Dot14
+   *   FT_UnitVector
+   *   FT_F26Dot6
+   *   FT_Data
+   *
+   *   FT_MAKE_TAG
+   *
+   *   FT_Generic
+   *   FT_Generic_Finalizer
+   *
+   *   FT_Bitmap
+   *   FT_Pixel_Mode
+   *   FT_Palette_Mode
+   *   FT_Glyph_Format
+   *   FT_IMAGE_TAG
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Bool                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef of unsigned char, used for simple booleans.  As usual,   */
-  /*    values 1 and~0 represent true and false, respectively.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Bool
+   *
+   * @description:
+   *   A typedef of unsigned char, used for simple booleans.  As usual,
+   *   values 1 and~0 represent true and false, respectively.
+   */
   typedef unsigned char  FT_Bool;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_FWord                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A signed 16-bit integer used to store a distance in original font  */
-  /*    units.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_FWord
+   *
+   * @description:
+   *   A signed 16-bit integer used to store a distance in original font
+   *   units.
+   */
   typedef signed short  FT_FWord;   /* distance in FUnits */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UFWord                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An unsigned 16-bit integer used to store a distance in original    */
-  /*    font units.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UFWord
+   *
+   * @description:
+   *   An unsigned 16-bit integer used to store a distance in original
+   *   font units.
+   */
   typedef unsigned short  FT_UFWord;  /* unsigned distance */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Char                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple typedef for the _signed_ char type.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Char
+   *
+   * @description:
+   *   A simple typedef for the _signed_ char type.
+   */
   typedef signed char  FT_Char;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Byte                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple typedef for the _unsigned_ char type.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Byte
+   *
+   * @description:
+   *   A simple typedef for the _unsigned_ char type.
+   */
   typedef unsigned char  FT_Byte;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Bytes                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for constant memory areas.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Bytes
+   *
+   * @description:
+   *   A typedef for constant memory areas.
+   */
   typedef const FT_Byte*  FT_Bytes;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Tag                                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for 32-bit tags (as used in the SFNT format).            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Tag
+   *
+   * @description:
+   *   A typedef for 32-bit tags (as used in the SFNT format).
+   */
   typedef FT_UInt32  FT_Tag;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_String                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple typedef for the char type, usually used for strings.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_String
+   *
+   * @description:
+   *   A simple typedef for the char type, usually used for strings.
+   */
   typedef char  FT_String;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Short                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for signed short.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Short
+   *
+   * @description:
+   *   A typedef for signed short.
+   */
   typedef signed short  FT_Short;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UShort                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for unsigned short.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UShort
+   *
+   * @description:
+   *   A typedef for unsigned short.
+   */
   typedef unsigned short  FT_UShort;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int                                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for the int type.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Int
+   *
+   * @description:
+   *   A typedef for the int type.
+   */
   typedef signed int  FT_Int;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for the unsigned int type.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UInt
+   *
+   * @description:
+   *   A typedef for the unsigned int type.
+   */
   typedef unsigned int  FT_UInt;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Long                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for signed long.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Long
+   *
+   * @description:
+   *   A typedef for signed long.
+   */
   typedef signed long  FT_Long;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_ULong                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for unsigned long.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_ULong
+   *
+   * @description:
+   *   A typedef for unsigned long.
+   */
   typedef unsigned long  FT_ULong;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_F2Dot14                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A signed 2.14 fixed-point type used for unit vectors.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_F2Dot14
+   *
+   * @description:
+   *   A signed 2.14 fixed-point type used for unit vectors.
+   */
   typedef signed short  FT_F2Dot14;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_F26Dot6                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A signed 26.6 fixed-point type used for vectorial pixel            */
-  /*    coordinates.                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_F26Dot6
+   *
+   * @description:
+   *   A signed 26.6 fixed-point type used for vectorial pixel
+   *   coordinates.
+   */
   typedef signed long  FT_F26Dot6;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Fixed                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This type is used to store 16.16 fixed-point values, like scaling  */
-  /*    values or matrix coefficients.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Fixed
+   *
+   * @description:
+   *   This type is used to store 16.16 fixed-point values, like scaling
+   *   values or matrix coefficients.
+   */
   typedef signed long  FT_Fixed;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Error                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The FreeType error code type.  A value of~0 is always interpreted  */
-  /*    as a successful operation.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Error
+   *
+   * @description:
+   *   The FreeType error code type.  A value of~0 is always interpreted
+   *   as a successful operation.
+   */
   typedef int  FT_Error;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Pointer                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple typedef for a typeless pointer.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Pointer
+   *
+   * @description:
+   *   A simple typedef for a typeless pointer.
+   */
   typedef void*  FT_Pointer;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Offset                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This is equivalent to the ANSI~C `size_t' type, i.e., the largest  */
-  /*    _unsigned_ integer type used to express a file size or position,   */
-  /*    or a memory block size.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Offset
+   *
+   * @description:
+   *   This is equivalent to the ANSI~C `size_t' type, i.e., the largest
+   *   _unsigned_ integer type used to express a file size or position,
+   *   or a memory block size.
+   */
   typedef size_t  FT_Offset;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_PtrDist                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the       */
-  /*    largest _signed_ integer type used to express the distance         */
-  /*    between two pointers.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_PtrDist
+   *
+   * @description:
+   *   This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the
+   *   largest _signed_ integer type used to express the distance
+   *   between two pointers.
+   */
   typedef ft_ptrdiff_t  FT_PtrDist;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_UnitVector                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple structure used to store a 2D vector unit vector.  Uses    */
-  /*    FT_F2Dot14 types.                                                  */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    x :: Horizontal coordinate.                                        */
-  /*                                                                       */
-  /*    y :: Vertical coordinate.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_UnitVector
+   *
+   * @description:
+   *   A simple structure used to store a 2D vector unit vector.  Uses
+   *   FT_F2Dot14 types.
+   *
+   * @fields:
+   *   x ::
+   *     Horizontal coordinate.
+   *
+   *   y ::
+   *     Vertical coordinate.
+   */
   typedef struct  FT_UnitVector_
   {
     FT_F2Dot14  x;
@@ -359,29 +361,33 @@
   } FT_UnitVector;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Matrix                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple structure used to store a 2x2 matrix.  Coefficients are   */
-  /*    in 16.16 fixed-point format.  The computation performed is:        */
-  /*                                                                       */
-  /*       {                                                               */
-  /*          x' = x*xx + y*xy                                             */
-  /*          y' = x*yx + y*yy                                             */
-  /*       }                                                               */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    xx :: Matrix coefficient.                                          */
-  /*                                                                       */
-  /*    xy :: Matrix coefficient.                                          */
-  /*                                                                       */
-  /*    yx :: Matrix coefficient.                                          */
-  /*                                                                       */
-  /*    yy :: Matrix coefficient.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Matrix
+   *
+   * @description:
+   *   A simple structure used to store a 2x2 matrix.  Coefficients are
+   *   in 16.16 fixed-point format.  The computation performed is:
+   *
+   *   {
+   *     x' = x*xx + y*xy
+   *     y' = x*yx + y*yy
+   *   }
+   *
+   * @fields:
+   *   xx ::
+   *     Matrix coefficient.
+   *
+   *   xy ::
+   *     Matrix coefficient.
+   *
+   *   yx ::
+   *     Matrix coefficient.
+   *
+   *   yy ::
+   *     Matrix coefficient.
+   */
   typedef struct  FT_Matrix_
   {
     FT_Fixed  xx, xy;
@@ -390,19 +396,21 @@
   } FT_Matrix;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Data                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Read-only binary data represented as a pointer and a length.       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    pointer :: The data.                                               */
-  /*                                                                       */
-  /*    length  :: The length of the data in bytes.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Data
+   *
+   * @description:
+   *   Read-only binary data represented as a pointer and a length.
+   *
+   * @fields:
+   *   pointer ::
+   *     The data.
+   *
+   *   length ::
+   *     The length of the data in bytes.
+   */
   typedef struct  FT_Data_
   {
     const FT_Byte*  pointer;
@@ -411,51 +419,53 @@
   } FT_Data;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Generic_Finalizer                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Describe a function used to destroy the `client' data of any       */
-  /*    FreeType object.  See the description of the @FT_Generic type for  */
-  /*    details of usage.                                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    The address of the FreeType object that is under finalization.     */
-  /*    Its client data is accessed through its `generic' field.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Generic_Finalizer
+   *
+   * @description:
+   *   Describe a function used to destroy the `client' data of any
+   *   FreeType object.  See the description of the @FT_Generic type for
+   *   details of usage.
+   *
+   * @input:
+   *   The address of the FreeType object that is under finalization.
+   *   Its client data is accessed through its `generic' field.
+   */
   typedef void  (*FT_Generic_Finalizer)( void*  object );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Generic                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Client applications often need to associate their own data to a    */
-  /*    variety of FreeType core objects.  For example, a text layout API  */
-  /*    might want to associate a glyph cache to a given size object.      */
-  /*                                                                       */
-  /*    Some FreeType object contains a `generic' field, of type           */
-  /*    FT_Generic, which usage is left to client applications and font    */
-  /*    servers.                                                           */
-  /*                                                                       */
-  /*    It can be used to store a pointer to client-specific data, as well */
-  /*    as the address of a `finalizer' function, which will be called by  */
-  /*    FreeType when the object is destroyed (for example, the previous   */
-  /*    client example would put the address of the glyph cache destructor */
-  /*    in the `finalizer' field).                                         */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    data      :: A typeless pointer to any client-specified data. This */
-  /*                 field is completely ignored by the FreeType library.  */
-  /*                                                                       */
-  /*    finalizer :: A pointer to a `generic finalizer' function, which    */
-  /*                 will be called when the object is destroyed.  If this */
-  /*                 field is set to NULL, no code will be called.         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Generic
+   *
+   * @description:
+   *   Client applications often need to associate their own data to a
+   *   variety of FreeType core objects.  For example, a text layout API
+   *   might want to associate a glyph cache to a given size object.
+   *
+   *   Some FreeType object contains a `generic' field, of type
+   *   FT_Generic, which usage is left to client applications and font
+   *   servers.
+   *
+   *   It can be used to store a pointer to client-specific data, as well
+   *   as the address of a `finalizer' function, which will be called by
+   *   FreeType when the object is destroyed (for example, the previous
+   *   client example would put the address of the glyph cache destructor
+   *   in the `finalizer' field).
+   *
+   * @fields:
+   *   data ::
+   *     A typeless pointer to any client-specified data. This
+   *     field is completely ignored by the FreeType library.
+   *
+   *   finalizer ::
+   *     A pointer to a `generic finalizer' function, which
+   *     will be called when the object is destroyed.  If this
+   *     field is set to NULL, no code will be called.
+   */
   typedef struct  FT_Generic_
   {
     void*                 data;
@@ -464,19 +474,19 @@
   } FT_Generic;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_MAKE_TAG                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This macro converts four-letter tags that are used to label        */
-  /*    TrueType tables into an unsigned long, to be used within FreeType. */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The produced values *must* be 32-bit integers.  Don't redefine     */
-  /*    this macro.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_MAKE_TAG
+   *
+   * @description:
+   *   This macro converts four-letter tags that are used to label
+   *   TrueType tables into an unsigned long, to be used within FreeType.
+   *
+   * @note:
+   *   The produced values *must* be 32-bit integers.  Don't redefine
+   *   this macro.
+   */
 #define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
           (FT_Tag)                        \
           ( ( (FT_ULong)_x1 << 24 ) |     \
@@ -494,53 +504,56 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    list_processing                                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   list_processing
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_ListNode                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*     Many elements and objects in FreeType are listed through an       */
-  /*     @FT_List record (see @FT_ListRec).  As its name suggests, an      */
-  /*     FT_ListNode is a handle to a single list element.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_ListNode
+   *
+   * @description:
+   *    Many elements and objects in FreeType are listed through an
+   *    @FT_List record (see @FT_ListRec).  As its name suggests, an
+   *    FT_ListNode is a handle to a single list element.
+   */
   typedef struct FT_ListNodeRec_*  FT_ListNode;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_List                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a list record (see @FT_ListRec).                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_List
+   *
+   * @description:
+   *   A handle to a list record (see @FT_ListRec).
+   */
   typedef struct FT_ListRec_*  FT_List;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_ListNodeRec                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to hold a single list element.                    */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    prev :: The previous element in the list.  NULL if first.          */
-  /*                                                                       */
-  /*    next :: The next element in the list.  NULL if last.               */
-  /*                                                                       */
-  /*    data :: A typeless pointer to the listed object.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_ListNodeRec
+   *
+   * @description:
+   *   A structure used to hold a single list element.
+   *
+   * @fields:
+   *   prev ::
+   *     The previous element in the list.  NULL if first.
+   *
+   *   next ::
+   *     The next element in the list.  NULL if last.
+   *
+   *   data ::
+   *     A typeless pointer to the listed object.
+   */
   typedef struct  FT_ListNodeRec_
   {
     FT_ListNode  prev;
@@ -550,20 +563,22 @@
   } FT_ListNodeRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_ListRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to hold a simple doubly-linked list.  These are   */
-  /*    used in many parts of FreeType.                                    */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    head :: The head (first element) of doubly-linked list.            */
-  /*                                                                       */
-  /*    tail :: The tail (last element) of doubly-linked list.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_ListRec
+   *
+   * @description:
+   *   A structure used to hold a simple doubly-linked list.  These are
+   *   used in many parts of FreeType.
+   *
+   * @fields:
+   *   head ::
+   *     The head (first element) of doubly-linked list.
+   *
+   *   tail ::
+   *     The tail (last element) of doubly-linked list.
+   */
   typedef struct  FT_ListRec_
   {
     FT_ListNode  head;
diff --git a/include/freetype/ftwinfnt.h b/include/freetype/ftwinfnt.h
index 461c65b..5d0eb0f 100644
--- a/include/freetype/ftwinfnt.h
+++ b/include/freetype/ftwinfnt.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftwinfnt.h                                                             */
-/*                                                                         */
-/*    FreeType API for accessing Windows fnt-specific data.                */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftwinfnt.h
+ *
+ *   FreeType API for accessing Windows fnt-specific data.
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTWINFNT_H_
@@ -32,22 +32,22 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    winfnt_fonts                                                       */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Window FNT Files                                                   */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Windows FNT specific API.                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of Windows FNT specific      */
-  /*    functions.                                                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   winfnt_fonts
+   *
+   * @title:
+   *   Window FNT Files
+   *
+   * @abstract:
+   *   Windows FNT-specific API.
+   *
+   * @description:
+   *   This section contains the declaration of Windows FNT-specific
+   *   functions.
+   *
+   */
 
 
   /*************************************************************************
@@ -80,26 +80,26 @@
    *   FT_WinFNT_ID_OEM ::
    *     From Michael Poettgen <michael@poettgen.de>:
    *
-   *       The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
-   *       is used for the charset of vector fonts, like `modern.fon',
-   *       `roman.fon', and `script.fon' on Windows.
+   *     The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
+   *     is used for the charset of vector fonts, like `modern.fon',
+   *     `roman.fon', and `script.fon' on Windows.
    *
-   *       The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
-   *       specifies a character set that is operating-system dependent.
+   *     The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
+   *     specifies a character set that is operating-system dependent.
    *
-   *       The `IFIMETRICS' documentation from the `Windows Driver
-   *       Development Kit' says: This font supports an OEM-specific
-   *       character set.  The OEM character set is system dependent.
+   *     The `IFIMETRICS' documentation from the `Windows Driver
+   *     Development Kit' says: This font supports an OEM-specific
+   *     character set.  The OEM character set is system dependent.
    *
-   *       In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
-   *       second default codepage that most international versions of
-   *       Windows have.  It is one of the OEM codepages from
+   *     In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
+   *     second default codepage that most international versions of
+   *     Windows have.  It is one of the OEM codepages from
    *
-   *         https://msdn.microsoft.com/en-us/goglobal/bb964655,
+   *     https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers ,
    *
-   *       and is used for the `DOS boxes', to support legacy applications.
-   *       A German Windows version for example usually uses ANSI codepage
-   *       1252 and OEM codepage 850.
+   *     and is used for the `DOS boxes', to support legacy applications.
+   *     A German Windows version for example usually uses ANSI codepage
+   *     1252 and OEM codepage 850.
    *
    *   FT_WinFNT_ID_CP874 ::
    *     A superset of Thai TIS 620 and ISO 8859-11.
@@ -173,14 +173,14 @@
 #define FT_WinFNT_ID_OEM     255
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_WinFNT_HeaderRec                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Windows FNT Header info.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_WinFNT_HeaderRec
+   *
+   * @description:
+   *   Windows FNT Header info.
+   */
   typedef struct  FT_WinFNT_HeaderRec_
   {
     FT_UShort  version;
@@ -223,14 +223,14 @@
   } FT_WinFNT_HeaderRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_WinFNT_Header                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an @FT_WinFNT_HeaderRec structure.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_WinFNT_Header
+   *
+   * @description:
+   *   A handle to an @FT_WinFNT_HeaderRec structure.
+   */
   typedef struct FT_WinFNT_HeaderRec_*  FT_WinFNT_Header;
 
 
@@ -243,10 +243,12 @@
    *    Retrieve a Windows FNT font info header.
    *
    * @input:
-   *    face    :: A handle to the input face.
+   *    face ::
+   *      A handle to the input face.
    *
    * @output:
-   *    aheader :: The WinFNT header.
+   *    aheader ::
+   *      The WinFNT header.
    *
    * @return:
    *   FreeType error code.  0~means success.
diff --git a/include/freetype/internal/autohint.h b/include/freetype/internal/autohint.h
index f4d308f..c20a18e 100644
--- a/include/freetype/internal/autohint.h
+++ b/include/freetype/internal/autohint.h
@@ -1,73 +1,73 @@
-/***************************************************************************/
-/*                                                                         */
-/*  autohint.h                                                             */
-/*                                                                         */
-/*    High-level `autohint' module-specific interface (specification).     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * autohint.h
+ *
+ *   High-level `autohint' module-specific interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The auto-hinter is used to load and automatically hint glyphs if a    */
-  /* format-specific hinter isn't available.                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * The auto-hinter is used to load and automatically hint glyphs if a
+   * format-specific hinter isn't available.
+   *
+   */
 
 
 #ifndef AUTOHINT_H_
 #define AUTOHINT_H_
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* A small technical note regarding automatic hinting in order to        */
-  /* clarify this module interface.                                        */
-  /*                                                                       */
-  /* An automatic hinter might compute two kinds of data for a given face: */
-  /*                                                                       */
-  /* - global hints: Usually some metrics that describe global properties  */
-  /*                 of the face.  It is computed by scanning more or less */
-  /*                 aggressively the glyphs in the face, and thus can be  */
-  /*                 very slow to compute (even if the size of global      */
-  /*                 hints is really small).                               */
-  /*                                                                       */
-  /* - glyph hints:  These describe some important features of the glyph   */
-  /*                 outline, as well as how to align them.  They are      */
-  /*                 generally much faster to compute than global hints.   */
-  /*                                                                       */
-  /* The current FreeType auto-hinter does a pretty good job while         */
-  /* performing fast computations for both global and glyph hints.         */
-  /* However, we might be interested in introducing more complex and       */
-  /* powerful algorithms in the future, like the one described in the John */
-  /* D. Hobby paper, which unfortunately requires a lot more horsepower.   */
-  /*                                                                       */
-  /* Because a sufficiently sophisticated font management system would     */
-  /* typically implement an LRU cache of opened face objects to reduce     */
-  /* memory usage, it is a good idea to be able to avoid recomputing       */
-  /* global hints every time the same face is re-opened.                   */
-  /*                                                                       */
-  /* We thus provide the ability to cache global hints outside of the face */
-  /* object, in order to speed up font re-opening time.  Of course, this   */
-  /* feature is purely optional, so most client programs won't even notice */
-  /* it.                                                                   */
-  /*                                                                       */
-  /* I initially thought that it would be a good idea to cache the glyph   */
-  /* hints too.  However, my general idea now is that if you really need   */
-  /* to cache these too, you are simply in need of a new font format,      */
-  /* where all this information could be stored within the font file and   */
-  /* decoded on the fly.                                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * A small technical note regarding automatic hinting in order to
+   * clarify this module interface.
+   *
+   * An automatic hinter might compute two kinds of data for a given face:
+   *
+   * - global hints: Usually some metrics that describe global properties
+   *                 of the face.  It is computed by scanning more or less
+   *                 aggressively the glyphs in the face, and thus can be
+   *                 very slow to compute (even if the size of global
+   *                 hints is really small).
+   *
+   * - glyph hints:  These describe some important features of the glyph
+   *                 outline, as well as how to align them.  They are
+   *                 generally much faster to compute than global hints.
+   *
+   * The current FreeType auto-hinter does a pretty good job while
+   * performing fast computations for both global and glyph hints.
+   * However, we might be interested in introducing more complex and
+   * powerful algorithms in the future, like the one described in the John
+   * D. Hobby paper, which unfortunately requires a lot more horsepower.
+   *
+   * Because a sufficiently sophisticated font management system would
+   * typically implement an LRU cache of opened face objects to reduce
+   * memory usage, it is a good idea to be able to avoid recomputing
+   * global hints every time the same face is re-opened.
+   *
+   * We thus provide the ability to cache global hints outside of the face
+   * object, in order to speed up font re-opening time.  Of course, this
+   * feature is purely optional, so most client programs won't even notice
+   * it.
+   *
+   * I initially thought that it would be a good idea to cache the glyph
+   * hints too.  However, my general idea now is that if you really need
+   * to cache these too, you are simply in need of a new font format,
+   * where all this information could be stored within the font file and
+   * decoded on the fly.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -80,27 +80,31 @@
   typedef struct FT_AutoHinterRec_  *FT_AutoHinter;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_AutoHinter_GlobalGetFunc                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the global hints computed for a given face object.  The   */
-  /*    resulting data is dissociated from the face and will survive a     */
-  /*    call to FT_Done_Face().  It must be discarded through the API      */
-  /*    FT_AutoHinter_GlobalDoneFunc().                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    hinter       :: A handle to the source auto-hinter.                */
-  /*                                                                       */
-  /*    face         :: A handle to the source face object.                */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    global_hints :: A typeless pointer to the global hints.            */
-  /*                                                                       */
-  /*    global_len   :: The size in bytes of the global hints.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_AutoHinter_GlobalGetFunc
+   *
+   * @description:
+   *   Retrieve the global hints computed for a given face object.  The
+   *   resulting data is dissociated from the face and will survive a
+   *   call to FT_Done_Face().  It must be discarded through the API
+   *   FT_AutoHinter_GlobalDoneFunc().
+   *
+   * @input:
+   *   hinter ::
+   *     A handle to the source auto-hinter.
+   *
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @output:
+   *   global_hints ::
+   *     A typeless pointer to the global hints.
+   *
+   *   global_len ::
+   *     The size in bytes of the global hints.
+   */
   typedef void
   (*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter  hinter,
                                   FT_Face        face,
@@ -108,69 +112,76 @@
                                   long*          global_len );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_AutoHinter_GlobalDoneFunc                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discard the global hints retrieved through                         */
-  /*    FT_AutoHinter_GlobalGetFunc().  This is the only way these hints   */
-  /*    are freed from memory.                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    hinter :: A handle to the auto-hinter module.                      */
-  /*                                                                       */
-  /*    global :: A pointer to retrieved global hints to discard.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_AutoHinter_GlobalDoneFunc
+   *
+   * @description:
+   *   Discard the global hints retrieved through
+   *   FT_AutoHinter_GlobalGetFunc().  This is the only way these hints
+   *   are freed from memory.
+   *
+   * @input:
+   *   hinter ::
+   *     A handle to the auto-hinter module.
+   *
+   *   global ::
+   *     A pointer to retrieved global hints to discard.
+   */
   typedef void
   (*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter  hinter,
                                    void*          global );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_AutoHinter_GlobalResetFunc                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used to recompute the global metrics in a given   */
-  /*    font.  This is useful when global font data changes (e.g. Multiple */
-  /*    Masters fonts where blend coordinates change).                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    hinter :: A handle to the source auto-hinter.                      */
-  /*                                                                       */
-  /*    face   :: A handle to the face.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_AutoHinter_GlobalResetFunc
+   *
+   * @description:
+   *   This function is used to recompute the global metrics in a given
+   *   font.  This is useful when global font data changes (e.g. Multiple
+   *   Masters fonts where blend coordinates change).
+   *
+   * @input:
+   *   hinter ::
+   *     A handle to the source auto-hinter.
+   *
+   *   face ::
+   *     A handle to the face.
+   */
   typedef void
   (*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter  hinter,
                                     FT_Face        face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_AutoHinter_GlyphLoadFunc                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used to load, scale, and automatically hint a     */
-  /*    glyph from a given face.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: A handle to the face.                               */
-  /*                                                                       */
-  /*    glyph_index :: The glyph index.                                    */
-  /*                                                                       */
-  /*    load_flags  :: The load flags.                                     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function is capable of loading composite glyphs by hinting    */
-  /*    each sub-glyph independently (which improves quality).             */
-  /*                                                                       */
-  /*    It will call the font driver with @FT_Load_Glyph, with             */
-  /*    @FT_LOAD_NO_SCALE set.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_AutoHinter_GlyphLoadFunc
+   *
+   * @description:
+   *   This function is used to load, scale, and automatically hint a
+   *   glyph from a given face.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the face.
+   *
+   *   glyph_index ::
+   *     The glyph index.
+   *
+   *   load_flags ::
+   *     The load flags.
+   *
+   * @note:
+   *   This function is capable of loading composite glyphs by hinting
+   *   each sub-glyph independently (which improves quality).
+   *
+   *   It will call the font driver with @FT_Load_Glyph, with
+   *   @FT_LOAD_NO_SCALE set.
+   */
   typedef FT_Error
   (*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter  hinter,
                                   FT_GlyphSlot   slot,
@@ -179,14 +190,14 @@
                                   FT_Int32       load_flags );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_AutoHinter_InterfaceRec                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The auto-hinter module's interface.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_AutoHinter_InterfaceRec
+   *
+   * @description:
+   *   The auto-hinter module's interface.
+   */
   typedef struct  FT_AutoHinter_InterfaceRec_
   {
     FT_AutoHinter_GlobalResetFunc  reset_face;
@@ -197,8 +208,6 @@
   } FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface;
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_AUTOHINTER_INTERFACE(       \
           class_,                             \
           reset_face_,                        \
@@ -214,27 +223,6 @@
     load_glyph_                               \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_AUTOHINTER_INTERFACE(                            \
-          class_,                                                  \
-          reset_face_,                                             \
-          get_global_hints_,                                       \
-          done_global_hints_,                                      \
-          load_glyph_ )                                            \
-  void                                                             \
-  FT_Init_Class_ ## class_( FT_Library                   library,  \
-                            FT_AutoHinter_InterfaceRec*  clazz )   \
-  {                                                                \
-    FT_UNUSED( library );                                          \
-                                                                   \
-    clazz->reset_face        = reset_face_;                        \
-    clazz->get_global_hints  = get_global_hints_;                  \
-    clazz->done_global_hints = done_global_hints_;                 \
-    clazz->load_glyph        = load_glyph_;                        \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 FT_END_HEADER
 
diff --git a/include/freetype/internal/cffotypes.h b/include/freetype/internal/cffotypes.h
index 57e7591..c01dba4 100644
--- a/include/freetype/internal/cffotypes.h
+++ b/include/freetype/internal/cffotypes.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffotypes.h                                                            */
-/*                                                                         */
-/*    Basic OpenType/CFF object type definitions (specification).          */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffotypes.h
+ *
+ *   Basic OpenType/CFF object type definitions (specification).
+ *
+ * Copyright 2017-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFOTYPES_H_
@@ -33,14 +33,14 @@
   typedef TT_Face  CFF_Face;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CFF_Size                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an OpenType size object.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   CFF_Size
+   *
+   * @description:
+   *   A handle to an OpenType size object.
+   */
   typedef struct  CFF_SizeRec_
   {
     FT_SizeRec  root;
@@ -49,14 +49,14 @@
   } CFF_SizeRec, *CFF_Size;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CFF_GlyphSlot                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an OpenType glyph slot object.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   CFF_GlyphSlot
+   *
+   * @description:
+   *   A handle to an OpenType glyph slot object.
+   */
   typedef struct  CFF_GlyphSlotRec_
   {
     FT_GlyphSlotRec  root;
@@ -70,14 +70,14 @@
   } CFF_GlyphSlotRec, *CFF_GlyphSlot;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CFF_Internal                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The interface to the `internal' field of `FT_Size'.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   CFF_Internal
+   *
+   * @description:
+   *   The interface to the `internal' field of `FT_Size'.
+   */
   typedef struct  CFF_InternalRec_
   {
     PSH_Globals  topfont;
@@ -86,10 +86,10 @@
   } CFF_InternalRec, *CFF_Internal;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Subglyph transformation record.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Subglyph transformation record.
+   */
   typedef struct  CFF_Transform_
   {
     FT_Fixed    xx, xy;     /* transformation matrix coefficients */
diff --git a/include/freetype/internal/cfftypes.h b/include/freetype/internal/cfftypes.h
index 7c07e1a..534ee16 100644
--- a/include/freetype/internal/cfftypes.h
+++ b/include/freetype/internal/cfftypes.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cfftypes.h                                                             */
-/*                                                                         */
-/*    Basic OpenType/CFF type definitions and interface (specification     */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cfftypes.h
+ *
+ *   Basic OpenType/CFF type definitions and interface (specification
+ *   only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFTYPES_H_
@@ -33,34 +33,42 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CFF_IndexRec                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to model a CFF Index table.                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    stream      :: The source input stream.                            */
-  /*                                                                       */
-  /*    start       :: The position of the first index byte in the         */
-  /*                   input stream.                                       */
-  /*                                                                       */
-  /*    count       :: The number of elements in the index.                */
-  /*                                                                       */
-  /*    off_size    :: The size in bytes of object offsets in index.       */
-  /*                                                                       */
-  /*    data_offset :: The position of first data byte in the index's      */
-  /*                   bytes.                                              */
-  /*                                                                       */
-  /*    data_size   :: The size of the data table in this index.           */
-  /*                                                                       */
-  /*    offsets     :: A table of element offsets in the index.  Must be   */
-  /*                   loaded explicitly.                                  */
-  /*                                                                       */
-  /*    bytes       :: If the index is loaded in memory, its bytes.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CFF_IndexRec
+   *
+   * @description:
+   *   A structure used to model a CFF Index table.
+   *
+   * @fields:
+   *   stream ::
+   *     The source input stream.
+   *
+   *   start ::
+   *     The position of the first index byte in the
+   *     input stream.
+   *
+   *   count ::
+   *     The number of elements in the index.
+   *
+   *   off_size ::
+   *     The size in bytes of object offsets in index.
+   *
+   *   data_offset ::
+   *     The position of first data byte in the index's
+   *     bytes.
+   *
+   *   data_size ::
+   *     The size of the data table in this index.
+   *
+   *   offsets ::
+   *     A table of element offsets in the index.  Must be
+   *     loaded explicitly.
+   *
+   *   bytes ::
+   *     If the index is loaded in memory, its bytes.
+   */
   typedef struct  CFF_IndexRec_
   {
     FT_Stream  stream;
diff --git a/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h
index 818a812..733b674 100644
--- a/include/freetype/internal/ftcalc.h
+++ b/include/freetype/internal/ftcalc.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcalc.h                                                               */
-/*                                                                         */
-/*    Arithmetic computations (specification).                             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcalc.h
+ *
+ *   Arithmetic computations (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTCALC_H_
@@ -27,11 +27,11 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FT_MulDiv() and FT_MulFix() are declared in freetype.h.               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * FT_MulDiv() and FT_MulFix() are declared in freetype.h.
+   *
+   */
 
 #ifndef  FT_CONFIG_OPTION_NO_ASSEMBLER
   /* Provide assembler fragments for performance-critical functions. */
@@ -246,29 +246,32 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_MulDiv_No_Round                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A very simple function used to perform the computation `(a*b)/c'   */
-  /*    (without rounding) with maximum accuracy (it uses a 64-bit         */
-  /*    intermediate integer whenever necessary).                          */
-  /*                                                                       */
-  /*    This function isn't necessarily as fast as some processor specific */
-  /*    operations, but is at least completely portable.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The first multiplier.                                         */
-  /*    b :: The second multiplier.                                        */
-  /*    c :: The divisor.                                                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result of `(a*b)/c'.  This function never traps when trying to */
-  /*    divide by zero; it simply returns `MaxInt' or `MinInt' depending   */
-  /*    on the signs of `a' and `b'.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_MulDiv_No_Round
+   *
+   * @description:
+   *   A very simple function used to perform the computation `(a*b)/c'
+   *   (without rounding) with maximum accuracy (it uses a 64-bit
+   *   intermediate integer whenever necessary).
+   *
+   *   This function isn't necessarily as fast as some processor-specific
+   *   operations, but is at least completely portable.
+   *
+   * @input:
+   *   a ::
+   *     The first multiplier.
+   *   b ::
+   *     The second multiplier.
+   *   c ::
+   *     The divisor.
+   *
+   * @return:
+   *   The result of `(a*b)/c'.  This function never traps when trying to
+   *   divide by zero; it simply returns `MaxInt' or `MinInt' depending
+   *   on the signs of `a' and `b'.
+   */
   FT_BASE( FT_Long )
   FT_MulDiv_No_Round( FT_Long  a,
                       FT_Long  b,
@@ -276,12 +279,12 @@
 
 
   /*
-   *  A variant of FT_Matrix_Multiply which scales its result afterwards.
-   *  The idea is that both `a' and `b' are scaled by factors of 10 so that
-   *  the values are as precise as possible to get a correct result during
-   *  the 64bit multiplication.  Let `sa' and `sb' be the scaling factors of
-   *  `a' and `b', respectively, then the scaling factor of the result is
-   *  `sa*sb'.
+   * A variant of FT_Matrix_Multiply which scales its result afterwards.
+   * The idea is that both `a' and `b' are scaled by factors of 10 so that
+   * the values are as precise as possible to get a correct result during
+   * the 64bit multiplication.  Let `sa' and `sb' be the scaling factors of
+   * `a' and `b', respectively, then the scaling factor of the result is
+   * `sa*sb'.
    */
   FT_BASE( void )
   FT_Matrix_Multiply_Scaled( const FT_Matrix*  a,
@@ -290,8 +293,23 @@
 
 
   /*
-   *  A variant of FT_Vector_Transform.  See comments for
-   *  FT_Matrix_Multiply_Scaled.
+   * Check a matrix.  If the transformation would lead to extreme shear or
+   * extreme scaling, for example, return 0.  If everything is OK, return 1.
+   *
+   * Based on geometric considerations we use the following inequality to
+   * identify a degenerate matrix.
+   *
+   *   50 * abs(xx*yy - xy*yx) < xx^2 + xy^2 + yx^2 + yy^2
+   *
+   * Value 50 is heuristic.
+   */
+  FT_BASE( FT_Bool )
+  FT_Matrix_Check( const FT_Matrix*  matrix );
+
+
+  /*
+   * A variant of FT_Vector_Transform.  See comments for
+   * FT_Matrix_Multiply_Scaled.
    */
   FT_BASE( void )
   FT_Vector_Transform_Scaled( FT_Vector*        vector,
@@ -300,22 +318,22 @@
 
 
   /*
-   *  This function normalizes a vector and returns its original length.
-   *  The normalized vector is a 16.16 fixed-point unit vector with length
-   *  close to 0x10000.  The accuracy of the returned length is limited to
-   *  16 bits also.  The function utilizes quick inverse square root
-   *  approximation without divisions and square roots relying on Newton's
-   *  iterations instead.
+   * This function normalizes a vector and returns its original length.
+   * The normalized vector is a 16.16 fixed-point unit vector with length
+   * close to 0x10000.  The accuracy of the returned length is limited to
+   * 16 bits also.  The function utilizes quick inverse square root
+   * approximation without divisions and square roots relying on Newton's
+   * iterations instead.
    */
   FT_BASE( FT_UInt32 )
   FT_Vector_NormLen( FT_Vector*  vector );
 
 
   /*
-   *  Return -1, 0, or +1, depending on the orientation of a given corner.
-   *  We use the Cartesian coordinate system, with positive vertical values
-   *  going upwards.  The function returns +1 if the corner turns to the
-   *  left, -1 to the right, and 0 for undecidable cases.
+   * Return -1, 0, or +1, depending on the orientation of a given corner.
+   * We use the Cartesian coordinate system, with positive vertical values
+   * going upwards.  The function returns +1 if the corner turns to the
+   * left, -1 to the right, and 0 for undecidable cases.
    */
   FT_BASE( FT_Int )
   ft_corner_orientation( FT_Pos  in_x,
@@ -325,9 +343,9 @@
 
 
   /*
-   *  Return TRUE if a corner is flat or nearly flat.  This is equivalent to
-   *  saying that the corner point is close to its neighbors, or inside an
-   *  ellipse defined by the neighbor focal points to be more precise.
+   * Return TRUE if a corner is flat or nearly flat.  This is equivalent to
+   * saying that the corner point is close to its neighbors, or inside an
+   * ellipse defined by the neighbor focal points to be more precise.
    */
   FT_BASE( FT_Int )
   ft_corner_is_flat( FT_Pos  in_x,
@@ -337,10 +355,11 @@
 
 
   /*
-   *  Return the most significant bit index.
+   * Return the most significant bit index.
    */
 
 #ifndef  FT_CONFIG_OPTION_NO_ASSEMBLER
+
 #if defined( __GNUC__ )                                          && \
     ( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) )
 
@@ -352,9 +371,34 @@
 
 #define FT_MSB( x )  ( 31 - __builtin_clzl( x ) )
 
+#endif /* __GNUC__ */
+
+
+#elif defined( _MSC_VER ) && ( _MSC_VER >= 1400 )
+
+#if FT_SIZEOF_INT == 4
+
+#include <intrin.h>
+
+  static __inline FT_Int32
+  FT_MSB_i386( FT_UInt32  x )
+  {
+    unsigned long  where;
+
+
+    /* not available in older VC versions */
+    _BitScanReverse( &where, x );
+
+    return (FT_Int32)where;
+  }
+
+#define FT_MSB( x )  ( FT_MSB_i386( x ) )
+
 #endif
 
-#endif /* __GNUC__ */
+#endif /* _MSC_VER */
+
+
 #endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
 
 #ifndef FT_MSB
@@ -366,8 +410,8 @@
 
 
   /*
-   *  Return sqrt(x*x+y*y), which is the same as `FT_Vector_Length' but uses
-   *  two fixed-point arguments instead.
+   * Return sqrt(x*x+y*y), which is the same as `FT_Vector_Length' but uses
+   * two fixed-point arguments instead.
    */
   FT_BASE( FT_Fixed )
   FT_Hypot( FT_Fixed  x,
@@ -376,23 +420,24 @@
 
 #if 0
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_SqrtFixed                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the square root of a 16.16 fixed-point value.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    x :: The value to compute the root for.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result of `sqrt(x)'.                                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function is not very fast.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_SqrtFixed
+   *
+   * @description:
+   *   Computes the square root of a 16.16 fixed-point value.
+   *
+   * @input:
+   *   x ::
+   *     The value to compute the root for.
+   *
+   * @return:
+   *   The result of `sqrt(x)'.
+   *
+   * @note:
+   *   This function is not very fast.
+   */
   FT_BASE( FT_Int32 )
   FT_SqrtFixed( FT_Int32  x );
 
@@ -409,14 +454,23 @@
                                         : ( -( ( 32 - (x) ) & -64 ) ) )
 
   /*
-   *  The following macros have two purposes.
+   * The following macros have two purposes.
    *
-   *  . Tag places where overflow is expected and harmless.
+   * - Tag places where overflow is expected and harmless.
    *
-   *  . Avoid run-time sanitizer errors.
+   * - Avoid run-time sanitizer errors.
    *
-   *  Use with care!
+   * Use with care!
    */
+#define ADD_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) + (FT_UInt)(b) )
+#define SUB_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) - (FT_UInt)(b) )
+#define MUL_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) * (FT_UInt)(b) )
+#define NEG_INT( a )                              \
+          (FT_Int)( (FT_UInt)0 - (FT_UInt)(a) )
+
 #define ADD_LONG( a, b )                             \
           (FT_Long)( (FT_ULong)(a) + (FT_ULong)(b) )
 #define SUB_LONG( a, b )                             \
diff --git a/include/freetype/internal/ftdebug.h b/include/freetype/internal/ftdebug.h
index 292a4ee..d6e8a3a 100644
--- a/include/freetype/internal/ftdebug.h
+++ b/include/freetype/internal/ftdebug.h
@@ -1,24 +1,24 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdebug.h                                                              */
-/*                                                                         */
-/*    Debugging and logging component (specification).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/*                                                                         */
-/*  IMPORTANT: A description of FreeType's debugging support can be        */
-/*             found in `docs/DEBUG.TXT'.  Read it if you need to use or   */
-/*             understand this code.                                       */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdebug.h
+ *
+ *   Debugging and logging component (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ *
+ * IMPORTANT: A description of FreeType's debugging support can be
+ *             found in `docs/DEBUG.TXT'.  Read it if you need to use or
+ *             understand this code.
+ *
+ */
 
 
 #ifndef FTDEBUG_H_
@@ -42,12 +42,12 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the trace enums as well as the trace levels array when they    */
-  /* are needed.                                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the trace enums as well as the trace levels array when they
+   * are needed.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_TRACE
 
@@ -62,24 +62,25 @@
   } FT_Trace;
 
 
-  /* defining the array of trace levels, provided by `src/base/ftdebug.c' */
-  extern int  ft_trace_levels[trace_count];
+  /* a pointer to the array of trace levels, */
+  /* provided by `src/base/ftdebug.c'        */
+  extern int*  ft_trace_levels;
 
 #undef FT_TRACE_DEF
 
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the FT_TRACE macro                                             */
-  /*                                                                       */
-  /* IMPORTANT!                                                            */
-  /*                                                                       */
-  /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */
-  /* value before using any TRACE macro.                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the FT_TRACE macro
+   *
+   * IMPORTANT!
+   *
+   * Each component must define the macro FT_COMPONENT to a valid FT_Trace
+   * value before using any TRACE macro.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_TRACE
 
@@ -97,62 +98,85 @@
 #endif /* !FT_DEBUG_LEVEL_TRACE */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Trace_Get_Count                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the number of available trace components.                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The number of trace components.  0 if FreeType 2 is not built with */
-  /*    FT_DEBUG_LEVEL_TRACE definition.                                   */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function may be useful if you want to access elements of      */
-  /*    the internal `ft_trace_levels' array by an index.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Trace_Get_Count
+   *
+   * @description:
+   *   Return the number of available trace components.
+   *
+   * @return:
+   *   The number of trace components.  0 if FreeType 2 is not built with
+   *   FT_DEBUG_LEVEL_TRACE definition.
+   *
+   * @note:
+   *   This function may be useful if you want to access elements of
+   *   the internal trace levels array by an index.
+   */
   FT_BASE( FT_Int )
   FT_Trace_Get_Count( void );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Trace_Get_Name                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the name of a trace component.                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    The index of the trace component.                                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The name of the trace component.  This is a statically allocated   */
-  /*    C string, so do not free it after use.  NULL if FreeType 2 is not  */
-  /*    built with FT_DEBUG_LEVEL_TRACE definition.                        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Use @FT_Trace_Get_Count to get the number of available trace       */
-  /*    components.                                                        */
-  /*                                                                       */
-  /*    This function may be useful if you want to control FreeType 2's    */
-  /*    debug level in your application.                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Trace_Get_Name
+   *
+   * @description:
+   *   Return the name of a trace component.
+   *
+   * @input:
+   *   The index of the trace component.
+   *
+   * @return:
+   *   The name of the trace component.  This is a statically allocated
+   *   C~string, so do not free it after use.  NULL if FreeType is not built
+   *   with FT_DEBUG_LEVEL_TRACE definition.
+   *
+   * @note:
+   *   Use @FT_Trace_Get_Count to get the number of available trace
+   *   components.
+   */
   FT_BASE( const char* )
   FT_Trace_Get_Name( FT_Int  idx );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* You need two opening and closing parentheses!                         */
-  /*                                                                       */
-  /* Example: FT_TRACE0(( "Value is %i", foo ))                            */
-  /*                                                                       */
-  /* Output of the FT_TRACEX macros is sent to stderr.                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Trace_Disable
+   *
+   * @description:
+   *   Switch off tracing temporarily.  It can be activated again with
+   *   @FT_Trace_Enable.
+   */
+  FT_BASE( void )
+  FT_Trace_Disable( void );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Trace_Enable
+   *
+   * @description:
+   *   Activate tracing.  Use it after tracing has been switched off with
+   *   @FT_Trace_Disable.
+   */
+  FT_BASE( void )
+  FT_Trace_Enable( void );
+
+
+  /**************************************************************************
+   *
+   * You need two opening and closing parentheses!
+   *
+   * Example: FT_TRACE0(( "Value is %i", foo ))
+   *
+   * Output of the FT_TRACEX macros is sent to stderr.
+   *
+   */
 
 #define FT_TRACE0( varformat )  FT_TRACE( 0, varformat )
 #define FT_TRACE1( varformat )  FT_TRACE( 1, varformat )
@@ -164,13 +188,13 @@
 #define FT_TRACE7( varformat )  FT_TRACE( 7, varformat )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the FT_ERROR macro.                                            */
-  /*                                                                       */
-  /* Output of this macro is sent to stderr.                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the FT_ERROR macro.
+   *
+   * Output of this macro is sent to stderr.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_ERROR
 
@@ -183,12 +207,12 @@
 #endif /* !FT_DEBUG_LEVEL_ERROR */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the FT_ASSERT and FT_THROW macros.  The call to `FT_Throw'     */
-  /* makes it possible to easily set a breakpoint at this function.        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the FT_ASSERT and FT_THROW macros.  The call to `FT_Throw'
+   * makes it possible to easily set a breakpoint at this function.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_ERROR
 
@@ -215,11 +239,11 @@
 #endif /* !FT_DEBUG_LEVEL_ERROR */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define `FT_Message' and `FT_Panic' when needed.                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define `FT_Message' and `FT_Panic' when needed.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_ERROR
 
diff --git a/include/freetype/internal/ftdrv.h b/include/freetype/internal/ftdrv.h
index 58dd35a..745b78a 100644
--- a/include/freetype/internal/ftdrv.h
+++ b/include/freetype/internal/ftdrv.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdrv.h                                                                */
-/*                                                                         */
-/*    FreeType internal font driver interface (specification).             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdrv.h
+ *
+ *   FreeType internal font driver interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTDRV_H_
@@ -87,73 +87,89 @@
                               FT_Fixed*  advances );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Driver_ClassRec                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The font driver class.  This structure mostly contains pointers to */
-  /*    driver methods.                                                    */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root             :: The parent module.                             */
-  /*                                                                       */
-  /*    face_object_size :: The size of a face object in bytes.            */
-  /*                                                                       */
-  /*    size_object_size :: The size of a size object in bytes.            */
-  /*                                                                       */
-  /*    slot_object_size :: The size of a glyph object in bytes.           */
-  /*                                                                       */
-  /*    init_face        :: The format-specific face constructor.          */
-  /*                                                                       */
-  /*    done_face        :: The format-specific face destructor.           */
-  /*                                                                       */
-  /*    init_size        :: The format-specific size constructor.          */
-  /*                                                                       */
-  /*    done_size        :: The format-specific size destructor.           */
-  /*                                                                       */
-  /*    init_slot        :: The format-specific slot constructor.          */
-  /*                                                                       */
-  /*    done_slot        :: The format-specific slot destructor.           */
-  /*                                                                       */
-  /*                                                                       */
-  /*    load_glyph       :: A function handle to load a glyph to a slot.   */
-  /*                        This field is mandatory!                       */
-  /*                                                                       */
-  /*    get_kerning      :: A function handle to return the unscaled       */
-  /*                        kerning for a given pair of glyphs.  Can be    */
-  /*                        set to 0 if the format doesn't support         */
-  /*                        kerning.                                       */
-  /*                                                                       */
-  /*    attach_file      :: This function handle is used to read           */
-  /*                        additional data for a face from another        */
-  /*                        file/stream.  For example, this can be used to */
-  /*                        add data from AFM or PFM files on a Type 1     */
-  /*                        face, or a CIDMap on a CID-keyed face.         */
-  /*                                                                       */
-  /*    get_advances     :: A function handle used to return advance       */
-  /*                        widths of `count' glyphs (in font units),      */
-  /*                        starting at `first'.  The `vertical' flag must */
-  /*                        be set to get vertical advance heights.  The   */
-  /*                        `advances' buffer is caller-allocated.         */
-  /*                        The idea of this function is to be able to     */
-  /*                        perform device-independent text layout without */
-  /*                        loading a single glyph image.                  */
-  /*                                                                       */
-  /*    request_size     :: A handle to a function used to request the new */
-  /*                        character size.  Can be set to 0 if the        */
-  /*                        scaling done in the base layer suffices.       */
-  /*                                                                       */
-  /*    select_size      :: A handle to a function used to select a new    */
-  /*                        fixed size.  It is used only if                */
-  /*                        @FT_FACE_FLAG_FIXED_SIZES is set.  Can be set  */
-  /*                        to 0 if the scaling done in the base layer     */
-  /*                        suffices.                                      */
-  /* <Note>                                                                */
-  /*    Most function pointers, with the exception of `load_glyph', can be */
-  /*    set to 0 to indicate a default behaviour.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Driver_ClassRec
+   *
+   * @description:
+   *   The font driver class.  This structure mostly contains pointers to
+   *   driver methods.
+   *
+   * @fields:
+   *   root ::
+   *     The parent module.
+   *
+   *   face_object_size ::
+   *     The size of a face object in bytes.
+   *
+   *   size_object_size ::
+   *     The size of a size object in bytes.
+   *
+   *   slot_object_size ::
+   *     The size of a glyph object in bytes.
+   *
+   *   init_face ::
+   *     The format-specific face constructor.
+   *
+   *   done_face ::
+   *     The format-specific face destructor.
+   *
+   *   init_size ::
+   *     The format-specific size constructor.
+   *
+   *   done_size ::
+   *     The format-specific size destructor.
+   *
+   *   init_slot ::
+   *     The format-specific slot constructor.
+   *
+   *   done_slot ::
+   *     The format-specific slot destructor.
+   *
+   *
+   *   load_glyph ::
+   *     A function handle to load a glyph to a slot.
+   *     This field is mandatory!
+   *
+   *   get_kerning ::
+   *     A function handle to return the unscaled
+   *     kerning for a given pair of glyphs.  Can be
+   *     set to 0 if the format doesn't support
+   *     kerning.
+   *
+   *   attach_file ::
+   *     This function handle is used to read
+   *     additional data for a face from another
+   *     file/stream.  For example, this can be used to
+   *     add data from AFM or PFM files on a Type 1
+   *     face, or a CIDMap on a CID-keyed face.
+   *
+   *   get_advances ::
+   *     A function handle used to return advance
+   *     widths of `count' glyphs (in font units),
+   *     starting at `first'.  The `vertical' flag must
+   *     be set to get vertical advance heights.  The
+   *     `advances' buffer is caller-allocated.
+   *     The idea of this function is to be able to
+   *     perform device-independent text layout without
+   *     loading a single glyph image.
+   *
+   *   request_size ::
+   *     A handle to a function used to request the new
+   *     character size.  Can be set to 0 if the
+   *     scaling done in the base layer suffices.
+   *
+   *   select_size ::
+   *     A handle to a function used to select a new
+   *     fixed size.  It is used only if
+   *     @FT_FACE_FLAG_FIXED_SIZES is set.  Can be set
+   *     to 0 if the scaling done in the base layer
+   *     suffices.
+   * @note:
+   *   Most function pointers, with the exception of `load_glyph', can be
+   *   set to 0 to indicate a default behaviour.
+   */
   typedef struct  FT_Driver_ClassRec_
   {
     FT_Module_Class          root;
@@ -184,45 +200,28 @@
   } FT_Driver_ClassRec, *FT_Driver_Class;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DECLARE_DRIVER                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to create a forward declaration of an FT_Driver_ClassRec      */
-  /*    struct instance.                                                   */
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_DRIVER                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Driver_ClassRec struct.       */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is defined a `create' function has to be */
-  /*    called with a pointer where the allocated structure is returned.   */
-  /*    And when it is no longer needed a `destroy' function needs to be   */
-  /*    called to release that allocation.                                 */
-  /*                                                                       */
-  /*    `ftinit.c' (ft_create_default_module_classes) already contains a   */
-  /*    mechanism to call these functions for the default modules          */
-  /*    described in `ftmodule.h'.                                         */
-  /*                                                                       */
-  /*    Notice that the created `create' and `destroy' functions call      */
-  /*    `pic_init' and `pic_free' to allow you to manually allocate and    */
-  /*    initialize any additional global data, like a module specific      */
-  /*    interface, and put them in the global pic container defined in     */
-  /*    `ftpic.h'.  If you don't need them just implement the functions as */
-  /*    empty to resolve the link error.  Also the `pic_init' and          */
-  /*    `pic_free' functions should be declared in `pic.h', to be referred */
-  /*    by driver definition calling `FT_DEFINE_DRIVER' in following.      */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro is     */
-  /*    used).                                                             */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DECLARE_DRIVER
+   *
+   * @description:
+   *   Used to create a forward declaration of an FT_Driver_ClassRec
+   *   struct instance.
+   *
+   * @macro:
+   *   FT_DEFINE_DRIVER
+   *
+   * @description:
+   *   Used to initialize an instance of FT_Driver_ClassRec struct.
+   *
+   *   `ftinit.c' (ft_create_default_module_classes) already contains a
+   *   mechanism to call these functions for the default modules
+   *   described in `ftmodule.h'.
+   *
+   *   The struct will be allocated in the global scope (or the scope
+   *   where the macro is used).
+   */
 #define FT_DECLARE_DRIVER( class_ )  \
   FT_CALLBACK_TABLE                  \
   const FT_Driver_ClassRec  class_;
@@ -289,108 +288,6 @@
     select_size_                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DECLARE_DRIVER( class_ )  FT_DECLARE_MODULE( class_ )
-
-#define FT_DEFINE_DRIVER(                                        \
-          class_,                                                \
-          flags_,                                                \
-          size_,                                                 \
-          name_,                                                 \
-          version_,                                              \
-          requires_,                                             \
-          interface_,                                            \
-          init_,                                                 \
-          done_,                                                 \
-          get_interface_,                                        \
-          face_object_size_,                                     \
-          size_object_size_,                                     \
-          slot_object_size_,                                     \
-          init_face_,                                            \
-          done_face_,                                            \
-          init_size_,                                            \
-          done_size_,                                            \
-          init_slot_,                                            \
-          done_slot_,                                            \
-          load_glyph_,                                           \
-          get_kerning_,                                          \
-          attach_file_,                                          \
-          get_advances_,                                         \
-          request_size_,                                         \
-          select_size_ )                                         \
-  void                                                           \
-  FT_Destroy_Class_ ## class_( FT_Library        library,        \
-                               FT_Module_Class*  clazz )         \
-  {                                                              \
-    FT_Memory        memory = library->memory;                   \
-    FT_Driver_Class  dclazz = (FT_Driver_Class)clazz;            \
-                                                                 \
-                                                                 \
-    class_ ## _pic_free( library );                              \
-    if ( dclazz )                                                \
-      FT_FREE( dclazz );                                         \
-  }                                                              \
-                                                                 \
-                                                                 \
-  FT_Error                                                       \
-  FT_Create_Class_ ## class_( FT_Library         library,        \
-                              FT_Module_Class**  output_class )  \
-  {                                                              \
-    FT_Driver_Class  clazz  = NULL;                              \
-    FT_Error         error;                                      \
-    FT_Memory        memory = library->memory;                   \
-                                                                 \
-                                                                 \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) )                  \
-      return error;                                              \
-                                                                 \
-    error = class_ ## _pic_init( library );                      \
-    if ( error )                                                 \
-    {                                                            \
-      FT_FREE( clazz );                                          \
-      return error;                                              \
-    }                                                            \
-                                                                 \
-    FT_DEFINE_ROOT_MODULE( flags_,                               \
-                           size_,                                \
-                           name_,                                \
-                           version_,                             \
-                           requires_,                            \
-                           interface_,                           \
-                           init_,                                \
-                           done_,                                \
-                           get_interface_ )                      \
-                                                                 \
-    clazz->face_object_size = face_object_size_;                 \
-    clazz->size_object_size = size_object_size_;                 \
-    clazz->slot_object_size = slot_object_size_;                 \
-                                                                 \
-    clazz->init_face        = init_face_;                        \
-    clazz->done_face        = done_face_;                        \
-                                                                 \
-    clazz->init_size        = init_size_;                        \
-    clazz->done_size        = done_size_;                        \
-                                                                 \
-    clazz->init_slot        = init_slot_;                        \
-    clazz->done_slot        = done_slot_;                        \
-                                                                 \
-    clazz->load_glyph       = load_glyph_;                       \
-                                                                 \
-    clazz->get_kerning      = get_kerning_;                      \
-    clazz->attach_file      = attach_file_;                      \
-    clazz->get_advances     = get_advances_;                     \
-                                                                 \
-    clazz->request_size     = request_size_;                     \
-    clazz->select_size      = select_size_;                      \
-                                                                 \
-    *output_class = (FT_Module_Class*)clazz;                     \
-                                                                 \
-    return FT_Err_Ok;                                            \
-  }
-
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 FT_END_HEADER
 
diff --git a/include/freetype/internal/ftgloadr.h b/include/freetype/internal/ftgloadr.h
index a002fdb..c731b2d 100644
--- a/include/freetype/internal/ftgloadr.h
+++ b/include/freetype/internal/ftgloadr.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgloadr.h                                                             */
-/*                                                                         */
-/*    The FreeType glyph loader (specification).                           */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgloadr.h
+ *
+ *   The FreeType glyph loader (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTGLOADR_H_
@@ -27,15 +27,15 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_GlyphLoader                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The glyph loader is an internal object used to load several glyphs */
-  /*    together (for example, in the case of composites).                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_GlyphLoader
+   *
+   * @description:
+   *   The glyph loader is an internal object used to load several glyphs
+   *   together (for example, in the case of composites).
+   */
   typedef struct  FT_SubGlyphRec_
   {
     FT_Int     index;
diff --git a/include/freetype/internal/fthash.h b/include/freetype/internal/fthash.h
index f22f9d5..2491880 100644
--- a/include/freetype/internal/fthash.h
+++ b/include/freetype/internal/fthash.h
@@ -1,10 +1,10 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fthash.h                                                               */
-/*                                                                         */
-/*    Hashing functions (specification).                                   */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fthash.h
+ *
+ *   Hashing functions (specification).
+ *
+ */
 
 /*
  * Copyright 2000 Computing Research Labs, New Mexico State University
@@ -30,13 +30,13 @@
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  This file is based on code from bdf.c,v 1.22 2000/03/16 20:08:50     */
-  /*                                                                       */
-  /*  taken from Mark Leisher's xmbdfed package                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is based on code from bdf.c,v 1.22 2000/03/16 20:08:50
+   *
+   * taken from Mark Leisher's xmbdfed package
+   *
+   */
 
 
 #ifndef FTHASH_H_
diff --git a/include/freetype/internal/ftmemory.h b/include/freetype/internal/ftmemory.h
index 054eaec..f15c77d 100644
--- a/include/freetype/internal/ftmemory.h
+++ b/include/freetype/internal/ftmemory.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmemory.h                                                             */
-/*                                                                         */
-/*    The FreeType memory management macros (specification).               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmemory.h
+ *
+ *   The FreeType memory management macros (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTMEMORY_H_
@@ -28,16 +28,16 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_SET_ERROR                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This macro is used to set an implicit `error' variable to a given  */
-  /*    expression's value (usually a function call), and convert it to a  */
-  /*    boolean which is set whenever the value is != 0.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_SET_ERROR
+   *
+   * @description:
+   *   This macro is used to set an implicit `error' variable to a given
+   *   expression's value (usually a function call), and convert it to a
+   *   boolean which is set whenever the value is != 0.
+   */
 #undef  FT_SET_ERROR
 #define FT_SET_ERROR( expression ) \
           ( ( error = (expression) ) != 0 )
@@ -58,9 +58,9 @@
 
 
   /*
-   *  C++ refuses to handle statements like p = (void*)anything, with `p' a
-   *  typed pointer.  Since we don't have a `typeof' operator in standard
-   *  C++, we have to use a template to emulate it.
+   * C++ refuses to handle statements like p = (void*)anything, with `p' a
+   * typed pointer.  Since we don't have a `typeof' operator in standard
+   * C++, we have to use a template to emulate it.
    */
 
 #ifdef __cplusplus
@@ -107,8 +107,8 @@
 
 
   /*
-   *  The allocation functions return a pointer, and the error code
-   *  is written to through the `p_error' parameter.
+   * The allocation functions return a pointer, and the error code
+   * is written to through the `p_error' parameter.
    */
 
   /* The `q' variants of the functions below (`q' for `quick') don't fill */
@@ -253,20 +253,20 @@
 
 
   /*
-   *  Return the maximum number of addressable elements in an array.
-   *  We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid
-   *  any problems.
+   * Return the maximum number of addressable elements in an array.
+   * We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid
+   * any problems.
    */
 #define FT_ARRAY_MAX( ptr )           ( FT_INT_MAX / sizeof ( *(ptr) ) )
 
 #define FT_ARRAY_CHECK( ptr, count )  ( (count) <= FT_ARRAY_MAX( ptr ) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The following functions macros expect that their pointer argument is  */
-  /* _typed_ in order to automatically compute array element sizes.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The following functions macros expect that their pointer argument is
+   * _typed_ in order to automatically compute array element sizes.
+   */
 
 #define FT_MEM_NEW_ARRAY( ptr, count )                              \
           FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory,            \
diff --git a/include/freetype/internal/ftobjs.h b/include/freetype/internal/ftobjs.h
index 37c6baf..88ced18 100644
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftobjs.h                                                               */
-/*                                                                         */
-/*    The FreeType private base classes (specification).                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftobjs.h
+ *
+ *   The FreeType private base classes (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  This file contains the definition of all internal FreeType classes.  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file contains the definition of all internal FreeType classes.
+   *
+   */
 
 
 #ifndef FTOBJS_H_
@@ -35,7 +35,6 @@
 #include FT_INTERNAL_DRIVER_H
 #include FT_INTERNAL_AUTOHINT_H
 #include FT_INTERNAL_SERVICE_H
-#include FT_INTERNAL_PIC_H
 #include FT_INTERNAL_CALC_H
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
@@ -46,10 +45,10 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Some generic definitions.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Some generic definitions.
+   */
 #ifndef TRUE
 #define TRUE  1
 #endif
@@ -63,20 +62,20 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The min and max functions missing in C.  As usual, be careful not to  */
-  /* write things like FT_MIN( a++, b++ ) to avoid side effects.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The min and max functions missing in C.  As usual, be careful not to
+   * write things like FT_MIN( a++, b++ ) to avoid side effects.
+   */
 #define FT_MIN( a, b )  ( (a) < (b) ? (a) : (b) )
 #define FT_MAX( a, b )  ( (a) > (b) ? (a) : (b) )
 
 #define FT_ABS( a )     ( (a) < 0 ? -(a) : (a) )
 
   /*
-   *  Approximate sqrt(x*x+y*y) using the `alpha max plus beta min'
-   *  algorithm.  We use alpha = 1, beta = 3/8, giving us results with a
-   *  largest error less than 7% compared to the exact value.
+   * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min'
+   * algorithm.  We use alpha = 1, beta = 3/8, giving us results with a
+   * largest error less than 7% compared to the exact value.
    */
 #define FT_HYPOT( x, y )                 \
           ( x = FT_ABS( x ),             \
@@ -111,9 +110,9 @@
 
 
   /*
-   *  character classification functions -- since these are used to parse
-   *  font files, we must not use those in <ctypes.h> which are
-   *  locale-dependent
+   * character classification functions -- since these are used to parse
+   * font files, we must not use those in <ctypes.h> which are
+   * locale-dependent
    */
 #define  ft_isdigit( x )   ( ( (unsigned)(x) - '0' ) < 10U )
 
@@ -155,7 +154,7 @@
 
   } FT_CMapRec;
 
-  /* typecase any pointer to a charmap handle */
+  /* typecast any pointer to a charmap handle */
 #define FT_CMAP( x )  ( (FT_CMap)( x ) )
 
   /* obvious macros */
@@ -228,8 +227,6 @@
   } FT_CMap_ClassRec;
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DECLARE_CMAP_CLASS( class_ )              \
   FT_CALLBACK_TABLE const  FT_CMap_ClassRec class_;
 
@@ -260,45 +257,6 @@
     variantchar_list_               \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DECLARE_CMAP_CLASS( class_ )                  \
-  void                                                   \
-  FT_Init_Class_ ## class_( FT_Library         library,  \
-                            FT_CMap_ClassRec*  clazz );
-
-#define FT_DEFINE_CMAP_CLASS(                            \
-          class_,                                        \
-          size_,                                         \
-          init_,                                         \
-          done_,                                         \
-          char_index_,                                   \
-          char_next_,                                    \
-          char_var_index_,                               \
-          char_var_default_,                             \
-          variant_list_,                                 \
-          charvariant_list_,                             \
-          variantchar_list_ )                            \
-  void                                                   \
-  FT_Init_Class_ ## class_( FT_Library         library,  \
-                            FT_CMap_ClassRec*  clazz )   \
-  {                                                      \
-    FT_UNUSED( library );                                \
-                                                         \
-    clazz->size             = size_;                     \
-    clazz->init             = init_;                     \
-    clazz->done             = done_;                     \
-    clazz->char_index       = char_index_;               \
-    clazz->char_next        = char_next_;                \
-    clazz->char_var_index   = char_var_index_;           \
-    clazz->char_var_default = char_var_default_;         \
-    clazz->variant_list     = variant_list_;             \
-    clazz->charvariant_list = charvariant_list_;         \
-    clazz->variantchar_list = variantchar_list_;         \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 
   /* create a new charmap and add it to charmap->face */
   FT_BASE( FT_Error )
@@ -312,11 +270,11 @@
   FT_CMap_Done( FT_CMap  cmap );
 
 
-  /* adds LCD padding to Min and Max boundaries */
+  /* add LCD padding to CBox */
   FT_BASE( void )
-  ft_lcd_padding( FT_Pos*       Min,
-                  FT_Pos*       Max,
-                  FT_GlyphSlot  slot );
+  ft_lcd_padding( FT_BBox*        cbox,
+                  FT_GlyphSlot    slot,
+                  FT_Render_Mode  mode );
 
 #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
 
@@ -333,74 +291,74 @@
 
 #endif /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Face_InternalRec                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure contains the internal fields of each FT_Face        */
-  /*    object.  These fields may change between different releases of     */
-  /*    FreeType.                                                          */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    max_points ::                                                      */
-  /*      The maximum number of points used to store the vectorial outline */
-  /*      of any glyph in this face.  If this value cannot be known in     */
-  /*      advance, or if the face isn't scalable, this should be set to 0. */
-  /*      Only relevant for scalable formats.                              */
-  /*                                                                       */
-  /*    max_contours ::                                                    */
-  /*      The maximum number of contours used to store the vectorial       */
-  /*      outline of any glyph in this face.  If this value cannot be      */
-  /*      known in advance, or if the face isn't scalable, this should be  */
-  /*      set to 0.  Only relevant for scalable formats.                   */
-  /*                                                                       */
-  /*    transform_matrix ::                                                */
-  /*      A 2x2 matrix of 16.16 coefficients used to transform glyph       */
-  /*      outlines after they are loaded from the font.  Only used by the  */
-  /*      convenience functions.                                           */
-  /*                                                                       */
-  /*    transform_delta ::                                                 */
-  /*      A translation vector used to transform glyph outlines after they */
-  /*      are loaded from the font.  Only used by the convenience          */
-  /*      functions.                                                       */
-  /*                                                                       */
-  /*    transform_flags ::                                                 */
-  /*      Some flags used to classify the transform.  Only used by the     */
-  /*      convenience functions.                                           */
-  /*                                                                       */
-  /*    services ::                                                        */
-  /*      A cache for frequently used services.  It should be only         */
-  /*      accessed with the macro `FT_FACE_LOOKUP_SERVICE'.                */
-  /*                                                                       */
-  /*    incremental_interface ::                                           */
-  /*      If non-null, the interface through which glyph data and metrics  */
-  /*      are loaded incrementally for faces that do not provide all of    */
-  /*      this data when first opened.  This field exists only if          */
-  /*      @FT_CONFIG_OPTION_INCREMENTAL is defined.                        */
-  /*                                                                       */
-  /*    no_stem_darkening ::                                               */
-  /*      Overrides the module-level default, see @stem-darkening[cff],    */
-  /*      for example.  FALSE and TRUE toggle stem darkening on and off,   */
-  /*      respectively, value~-1 means to use the module/driver default.   */
-  /*                                                                       */
-  /*    random_seed ::                                                     */
-  /*      If positive, override the seed value for the CFF `random'        */
-  /*      operator.  Value~0 means to use the font's value.  Value~-1      */
-  /*      means to use the CFF driver's default.                           */
-  /*                                                                       */
-  /*    lcd_weights      ::                                                */
-  /*    lcd_filter_func  ::                                                */
-  /*      If subpixel rendering is activated, the LCD filtering weights    */
-  /*      and callback function.                                           */
-  /*                                                                       */
-  /*    refcount ::                                                        */
-  /*      A counter initialized to~1 at the time an @FT_Face structure is  */
-  /*      created.  @FT_Reference_Face increments this counter, and        */
-  /*      @FT_Done_Face only destroys a face if the counter is~1,          */
-  /*      otherwise it simply decrements it.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Face_InternalRec
+   *
+   * @description:
+   *   This structure contains the internal fields of each FT_Face
+   *   object.  These fields may change between different releases of
+   *   FreeType.
+   *
+   * @fields:
+   *   max_points ::
+   *     The maximum number of points used to store the vectorial outline
+   *     of any glyph in this face.  If this value cannot be known in
+   *     advance, or if the face isn't scalable, this should be set to 0.
+   *     Only relevant for scalable formats.
+   *
+   *   max_contours ::
+   *     The maximum number of contours used to store the vectorial
+   *     outline of any glyph in this face.  If this value cannot be
+   *     known in advance, or if the face isn't scalable, this should be
+   *     set to 0.  Only relevant for scalable formats.
+   *
+   *   transform_matrix ::
+   *     A 2x2 matrix of 16.16 coefficients used to transform glyph
+   *     outlines after they are loaded from the font.  Only used by the
+   *     convenience functions.
+   *
+   *   transform_delta ::
+   *     A translation vector used to transform glyph outlines after they
+   *     are loaded from the font.  Only used by the convenience
+   *     functions.
+   *
+   *   transform_flags ::
+   *     Some flags used to classify the transform.  Only used by the
+   *     convenience functions.
+   *
+   *   services ::
+   *     A cache for frequently used services.  It should be only
+   *     accessed with the macro `FT_FACE_LOOKUP_SERVICE'.
+   *
+   *   incremental_interface ::
+   *     If non-null, the interface through which glyph data and metrics
+   *     are loaded incrementally for faces that do not provide all of
+   *     this data when first opened.  This field exists only if
+   *     @FT_CONFIG_OPTION_INCREMENTAL is defined.
+   *
+   *   no_stem_darkening ::
+   *     Overrides the module-level default, see @stem-darkening[cff],
+   *     for example.  FALSE and TRUE toggle stem darkening on and off,
+   *     respectively, value~-1 means to use the module/driver default.
+   *
+   *   random_seed ::
+   *     If positive, override the seed value for the CFF `random'
+   *     operator.  Value~0 means to use the font's value.  Value~-1
+   *     means to use the CFF driver's default.
+   *
+   *   lcd_weights ::
+   *   lcd_filter_func ::
+   *     These fields specify the LCD filtering weights and callback
+   *     function for ClearType-style subpixel rendering.
+   *
+   *   refcount ::
+   *     A counter initialized to~1 at the time an @FT_Face structure is
+   *     created.  @FT_Reference_Face increments this counter, and
+   *     @FT_Done_Face only destroys a face if the counter is~1,
+   *     otherwise it simply decrements it.
+   */
   typedef struct  FT_Face_InternalRec_
   {
     FT_Matrix  transform_matrix;
@@ -426,39 +384,49 @@
   } FT_Face_InternalRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Slot_InternalRec                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure contains the internal fields of each FT_GlyphSlot   */
-  /*    object.  These fields may change between different releases of     */
-  /*    FreeType.                                                          */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    loader            :: The glyph loader object used to load outlines */
-  /*                         into the glyph slot.                          */
-  /*                                                                       */
-  /*    flags             :: Possible values are zero or                   */
-  /*                         FT_GLYPH_OWN_BITMAP.  The latter indicates    */
-  /*                         that the FT_GlyphSlot structure owns the      */
-  /*                         bitmap buffer.                                */
-  /*                                                                       */
-  /*    glyph_transformed :: Boolean.  Set to TRUE when the loaded glyph   */
-  /*                         must be transformed through a specific        */
-  /*                         font transformation.  This is _not_ the same  */
-  /*                         as the face transform set through             */
-  /*                         FT_Set_Transform().                           */
-  /*                                                                       */
-  /*    glyph_matrix      :: The 2x2 matrix corresponding to the glyph     */
-  /*                         transformation, if necessary.                 */
-  /*                                                                       */
-  /*    glyph_delta       :: The 2d translation vector corresponding to    */
-  /*                         the glyph transformation, if necessary.       */
-  /*                                                                       */
-  /*    glyph_hints       :: Format-specific glyph hints management.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Slot_InternalRec
+   *
+   * @description:
+   *   This structure contains the internal fields of each FT_GlyphSlot
+   *   object.  These fields may change between different releases of
+   *   FreeType.
+   *
+   * @fields:
+   *   loader ::
+   *     The glyph loader object used to load outlines
+   *     into the glyph slot.
+   *
+   *   flags ::
+   *     Possible values are zero or
+   *     FT_GLYPH_OWN_BITMAP.  The latter indicates
+   *     that the FT_GlyphSlot structure owns the
+   *     bitmap buffer.
+   *
+   *   glyph_transformed ::
+   *     Boolean.  Set to TRUE when the loaded glyph
+   *     must be transformed through a specific
+   *     font transformation.  This is _not_ the same
+   *     as the face transform set through
+   *     FT_Set_Transform().
+   *
+   *   glyph_matrix ::
+   *     The 2x2 matrix corresponding to the glyph
+   *     transformation, if necessary.
+   *
+   *   glyph_delta ::
+   *     The 2d translation vector corresponding to
+   *     the glyph transformation, if necessary.
+   *
+   *   glyph_hints ::
+   *     Format-specific glyph hints management.
+   *
+   *   load_flags ::
+   *     The load flags passed as an argument to @FT_Load_Glyph while
+   *     initializing the glyph slot.
+   */
 
 #define FT_GLYPH_OWN_BITMAP  0x1U
 
@@ -471,26 +439,31 @@
     FT_Vector       glyph_delta;
     void*           glyph_hints;
 
+    FT_Int32        load_flags;
+
   } FT_GlyphSlot_InternalRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Size_InternalRec                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure contains the internal fields of each FT_Size        */
-  /*    object.                                                            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    module_data      :: Data specific to a driver module.              */
-  /*                                                                       */
-  /*    autohint_mode    :: The used auto-hinting mode.                    */
-  /*                                                                       */
-  /*    autohint_metrics :: Metrics used by the auto-hinter.               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Size_InternalRec
+   *
+   * @description:
+   *   This structure contains the internal fields of each FT_Size
+   *   object.
+   *
+   * @fields:
+   *   module_data ::
+   *     Data specific to a driver module.
+   *
+   *   autohint_mode ::
+   *     The used auto-hinting mode.
+   *
+   *   autohint_metrics ::
+   *     Metrics used by the auto-hinter.
+   *
+   */
 
   typedef struct  FT_Size_InternalRec_
   {
@@ -515,21 +488,24 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_ModuleRec                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A module object instance.                                          */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    clazz   :: A pointer to the module's class.                        */
-  /*                                                                       */
-  /*    library :: A handle to the parent library object.                  */
-  /*                                                                       */
-  /*    memory  :: A handle to the memory manager.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_ModuleRec
+   *
+   * @description:
+   *   A module object instance.
+   *
+   * @fields:
+   *   clazz ::
+   *     A pointer to the module's class.
+   *
+   *   library ::
+   *     A handle to the parent library object.
+   *
+   *   memory ::
+   *     A handle to the memory manager.
+   */
   typedef struct  FT_ModuleRec_
   {
     FT_Module_Class*  clazz;
@@ -572,27 +548,29 @@
                                         FT_MODULE_DRIVER_HINTS_LIGHTLY )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Module_Interface                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finds a module and returns its specific interface as a typeless    */
-  /*    pointer.                                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library     :: A handle to the library object.                     */
-  /*                                                                       */
-  /*    module_name :: The module's name (as an ASCII string).             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A module-specific interface if available, 0 otherwise.             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You should better be familiar with FreeType internals to know      */
-  /*    which module to look for, and what its interface is :-)            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Module_Interface
+   *
+   * @description:
+   *   Finds a module and returns its specific interface as a typeless
+   *   pointer.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the library object.
+   *
+   *   module_name ::
+   *     The module's name (as an ASCII string).
+   *
+   * @return:
+   *   A module-specific interface if available, 0 otherwise.
+   *
+   * @note:
+   *   You should better be familiar with FreeType internals to know
+   *   which module to look for, and what its interface is :-)
+   */
   FT_BASE( const void* )
   FT_Get_Module_Interface( FT_Library   library,
                            const char*  mod_name );
@@ -643,44 +621,47 @@
 #define FT_FACE_SIZE( x )     FT_FACE( x )->size
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_GlyphSlot                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    It is sometimes useful to have more than one glyph slot for a      */
-  /*    given face object.  This function is used to create additional     */
-  /*    slots.  All of them are automatically discarded when the face is   */
-  /*    destroyed.                                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face  :: A handle to a parent face object.                         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aslot :: A handle to a new glyph slot object.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_GlyphSlot
+   *
+   * @description:
+   *   It is sometimes useful to have more than one glyph slot for a
+   *   given face object.  This function is used to create additional
+   *   slots.  All of them are automatically discarded when the face is
+   *   destroyed.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a parent face object.
+   *
+   * @output:
+   *   aslot ::
+   *     A handle to a new glyph slot object.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   */
   FT_BASE( FT_Error )
   FT_New_GlyphSlot( FT_Face        face,
                     FT_GlyphSlot  *aslot );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_GlyphSlot                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroys a given glyph slot.  Remember however that all slots are  */
-  /*    automatically destroyed with its parent.  Using this function is   */
-  /*    not always mandatory.                                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    slot :: A handle to a target glyph slot.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_GlyphSlot
+   *
+   * @description:
+   *   Destroys a given glyph slot.  Remember however that all slots are
+   *   automatically destroyed with its parent.  Using this function is
+   *   not always mandatory.
+   *
+   * @input:
+   *   slot ::
+   *     A handle to a target glyph slot.
+   */
   FT_BASE( void )
   FT_Done_GlyphSlot( FT_GlyphSlot  slot );
 
@@ -802,28 +783,32 @@
 #define FT_DRIVER_CLASS( x )  FT_DRIVER( x )->clazz
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_DriverRec                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The root font driver class.  A font driver is responsible for      */
-  /*    managing and loading font files of a given format.                 */
-  /*                                                                       */
-  /*  <Fields>                                                             */
-  /*     root         :: Contains the fields of the root module class.     */
-  /*                                                                       */
-  /*     clazz        :: A pointer to the font driver's class.  Note that  */
-  /*                     this is NOT root.clazz.  `class' wasn't used      */
-  /*                     as it is a reserved word in C++.                  */
-  /*                                                                       */
-  /*     faces_list   :: The list of faces currently opened by this        */
-  /*                     driver.                                           */
-  /*                                                                       */
-  /*     glyph_loader :: Unused.  Used to be glyph loader for all faces    */
-  /*                     managed by this driver.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_DriverRec
+   *
+   * @description:
+   *   The root font driver class.  A font driver is responsible for
+   *   managing and loading font files of a given format.
+   *
+   * @fields:
+   *   root ::
+   *     Contains the fields of the root module class.
+   *
+   *   clazz ::
+   *     A pointer to the font driver's class.  Note that
+   *     this is NOT root.clazz.  `class' wasn't used
+   *     as it is a reserved word in C++.
+   *
+   *   faces_list ::
+   *     The list of faces currently opened by this
+   *     driver.
+   *
+   *   glyph_loader ::
+   *     Unused.  Used to be glyph loader for all faces
+   *     managed by this driver.
+   */
   typedef struct  FT_DriverRec_
   {
     FT_ModuleRec     root;
@@ -852,67 +837,86 @@
 #define FT_DEBUG_HOOK_TRUETYPE  0
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_LibraryRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The FreeType library class.  This is the root of all FreeType      */
-  /*    data.  Use FT_New_Library() to create a library object, and        */
-  /*    FT_Done_Library() to discard it and all child objects.             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    memory           :: The library's memory object.  Manages memory   */
-  /*                        allocation.                                    */
-  /*                                                                       */
-  /*    version_major    :: The major version number of the library.       */
-  /*                                                                       */
-  /*    version_minor    :: The minor version number of the library.       */
-  /*                                                                       */
-  /*    version_patch    :: The current patch level of the library.        */
-  /*                                                                       */
-  /*    num_modules      :: The number of modules currently registered     */
-  /*                        within this library.  This is set to 0 for new */
-  /*                        libraries.  New modules are added through the  */
-  /*                        FT_Add_Module() API function.                  */
-  /*                                                                       */
-  /*    modules          :: A table used to store handles to the currently */
-  /*                        registered modules. Note that each font driver */
-  /*                        contains a list of its opened faces.           */
-  /*                                                                       */
-  /*    renderers        :: The list of renderers currently registered     */
-  /*                        within the library.                            */
-  /*                                                                       */
-  /*    cur_renderer     :: The current outline renderer.  This is a       */
-  /*                        shortcut used to avoid parsing the list on     */
-  /*                        each call to FT_Outline_Render().  It is a     */
-  /*                        handle to the current renderer for the         */
-  /*                        FT_GLYPH_FORMAT_OUTLINE format.                */
-  /*                                                                       */
-  /*    auto_hinter      :: The auto-hinter module interface.              */
-  /*                                                                       */
-  /*    debug_hooks      :: An array of four function pointers that allow  */
-  /*                        debuggers to hook into a font format's         */
-  /*                        interpreter.  Currently, only the TrueType     */
-  /*                        bytecode debugger uses this.                   */
-  /*                                                                       */
-  /*    lcd_weights      :: If subpixel rendering is activated, the LCD    */
-  /*                        filter weights, if any.                        */
-  /*                                                                       */
-  /*    lcd_filter_func  :: If subpixel rendering is activated, the LCD    */
-  /*                        filtering callback function.                   */
-  /*                                                                       */
-  /*    pic_container    :: Contains global structs and tables, instead    */
-  /*                        of defining them globally.                     */
-  /*                                                                       */
-  /*    refcount         :: A counter initialized to~1 at the time an      */
-  /*                        @FT_Library structure is created.              */
-  /*                        @FT_Reference_Library increments this counter, */
-  /*                        and @FT_Done_Library only destroys a library   */
-  /*                        if the counter is~1, otherwise it simply       */
-  /*                        decrements it.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_LibraryRec
+   *
+   * @description:
+   *   The FreeType library class.  This is the root of all FreeType
+   *   data.  Use FT_New_Library() to create a library object, and
+   *   FT_Done_Library() to discard it and all child objects.
+   *
+   * @fields:
+   *   memory ::
+   *     The library's memory object.  Manages memory
+   *     allocation.
+   *
+   *   version_major ::
+   *     The major version number of the library.
+   *
+   *   version_minor ::
+   *     The minor version number of the library.
+   *
+   *   version_patch ::
+   *     The current patch level of the library.
+   *
+   *   num_modules ::
+   *     The number of modules currently registered
+   *     within this library.  This is set to 0 for new
+   *     libraries.  New modules are added through the
+   *     FT_Add_Module() API function.
+   *
+   *   modules ::
+   *     A table used to store handles to the currently
+   *     registered modules. Note that each font driver
+   *     contains a list of its opened faces.
+   *
+   *   renderers ::
+   *     The list of renderers currently registered
+   *     within the library.
+   *
+   *   cur_renderer ::
+   *     The current outline renderer.  This is a
+   *     shortcut used to avoid parsing the list on
+   *     each call to FT_Outline_Render().  It is a
+   *     handle to the current renderer for the
+   *     FT_GLYPH_FORMAT_OUTLINE format.
+   *
+   *   auto_hinter ::
+   *     The auto-hinter module interface.
+   *
+   *   debug_hooks ::
+   *     An array of four function pointers that allow
+   *     debuggers to hook into a font format's
+   *     interpreter.  Currently, only the TrueType
+   *     bytecode debugger uses this.
+   *
+   *   lcd_weights ::
+   *     The LCD filter weights for ClearType-style
+   *     subpixel rendering.
+   *
+   *   lcd_filter_func ::
+   *     The LCD filtering callback function for
+   *     for ClearType-style subpixel rendering.
+   *
+   *   lcd_geometry ::
+   *     This array specifies LCD subpixel geometry
+   *     and controls Harmony LCD rendering technique,
+   *     alternative to ClearType.
+   *
+   *   pic_container ::
+   *     Contains global structs and tables, instead
+   *     of defining them globally.
+   *
+   *   refcount ::
+   *     A counter initialized to~1 at the time an
+   *     @FT_Library structure is created.
+   *     @FT_Reference_Library increments this counter,
+   *     and @FT_Done_Library only destroys a library
+   *     if the counter is~1, otherwise it simply
+   *     decrements it.
+   */
   typedef struct  FT_LibraryRec_
   {
     FT_Memory          memory;           /* library's memory manager */
@@ -933,10 +937,8 @@
 #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
     FT_LcdFiveTapFilter      lcd_weights;      /* filter weights, if any */
     FT_Bitmap_LcdFilterFunc  lcd_filter_func;  /* filtering callback     */
-#endif
-
-#ifdef FT_CONFIG_OPTION_PIC
-    FT_PIC_Container   pic_container;
+#else
+    FT_Vector                lcd_geometry[3];  /* RGB subpixel positions */
 #endif
 
     FT_Int             refcount;
@@ -970,32 +972,33 @@
 
 #ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Memory                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Creates a new memory object.                                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A pointer to the new memory object.  0 in case of error.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Memory
+   *
+   * @description:
+   *   Creates a new memory object.
+   *
+   * @return:
+   *   A pointer to the new memory object.  0 in case of error.
+   */
   FT_BASE( FT_Memory )
   FT_New_Memory( void );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Memory                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discards memory manager.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory :: A handle to the memory manager.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Memory
+   *
+   * @description:
+   *   Discards memory manager.
+   *
+   * @input:
+   *   memory ::
+   *     A handle to the memory manager.
+   */
   FT_BASE( void )
   FT_Done_Memory( FT_Memory  memory );
 
@@ -1013,37 +1016,16 @@
 #endif
 
 
-  /*************************************************************************/
-  /*************************************************************************/
-  /*************************************************************************/
-  /****                                                                 ****/
-  /****                                                                 ****/
-  /****                      P I C   S U P P O R T                      ****/
-  /****                                                                 ****/
-  /****                                                                 ****/
-  /*************************************************************************/
-  /*************************************************************************/
-  /*************************************************************************/
-
-
-  /* PIC support macros for ftimage.h */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_OUTLINE_FUNCS                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Outline_Funcs struct.         */
-  /*    When FT_CONFIG_OPTION_PIC is defined an init function will need    */
-  /*    to be called with a pre-allocated structure to be filled.          */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DEFINE_OUTLINE_FUNCS
+   *
+   * @description:
+   *   Used to initialize an instance of FT_Outline_Funcs struct.
+   *   The struct will be allocated in the global scope (or the scope
+   *   where the macro is used).
+   */
 #define FT_DEFINE_OUTLINE_FUNCS(           \
           class_,                          \
           move_to_,                        \
@@ -1062,47 +1044,17 @@
     delta_                                 \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
 
-#define FT_DEFINE_OUTLINE_FUNCS(                     \
-          class_,                                    \
-          move_to_,                                  \
-          line_to_,                                  \
-          conic_to_,                                 \
-          cubic_to_,                                 \
-          shift_,                                    \
-          delta_ )                                   \
-  static FT_Error                                    \
-  Init_Class_ ## class_( FT_Outline_Funcs*  clazz )  \
-  {                                                  \
-    clazz->move_to  = move_to_;                      \
-    clazz->line_to  = line_to_;                      \
-    clazz->conic_to = conic_to_;                     \
-    clazz->cubic_to = cubic_to_;                     \
-    clazz->shift    = shift_;                        \
-    clazz->delta    = delta_;                        \
-                                                     \
-    return FT_Err_Ok;                                \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_RASTER_FUNCS                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Raster_Funcs struct.          */
-  /*    When FT_CONFIG_OPTION_PIC is defined an init function will need    */
-  /*    to be called with a pre-allocated structure to be filled.          */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DEFINE_RASTER_FUNCS
+   *
+   * @description:
+   *   Used to initialize an instance of FT_Raster_Funcs struct.
+   *   The struct will be allocated in the global scope (or the scope
+   *   where the macro is used).
+   */
 #define FT_DEFINE_RASTER_FUNCS(    \
           class_,                  \
           glyph_format_,           \
@@ -1121,48 +1073,17 @@
     raster_done_                   \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_RASTER_FUNCS(                        \
-          class_,                                      \
-          glyph_format_,                               \
-          raster_new_,                                 \
-          raster_reset_,                               \
-          raster_set_mode_,                            \
-          raster_render_,                              \
-          raster_done_ )                               \
-  void                                                 \
-  FT_Init_Class_ ## class_( FT_Raster_Funcs*  clazz )  \
-  {                                                    \
-    clazz->glyph_format    = glyph_format_;            \
-    clazz->raster_new      = raster_new_;              \
-    clazz->raster_reset    = raster_reset_;            \
-    clazz->raster_set_mode = raster_set_mode_;         \
-    clazz->raster_render   = raster_render_;           \
-    clazz->raster_done     = raster_done_;             \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 
-  /* PIC support macros for ftrender.h */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_GLYPH                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Glyph_Class struct.           */
-  /*    When FT_CONFIG_OPTION_PIC is defined an init function will need    */
-  /*    to be called with a pre-allocated structure to be filled.          */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DEFINE_GLYPH
+   *
+   * @description:
+   *   The struct will be allocated in the global scope (or the scope
+   *   where the macro is used).
+   */
 #define FT_DEFINE_GLYPH(          \
           class_,                 \
           size_,                  \
@@ -1186,73 +1107,25 @@
     prepare_                      \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
 
-#define FT_DEFINE_GLYPH(                              \
-          class_,                                     \
-          size_,                                      \
-          format_,                                    \
-          init_,                                      \
-          done_,                                      \
-          copy_,                                      \
-          transform_,                                 \
-          bbox_,                                      \
-          prepare_ )                                  \
-  void                                                \
-  FT_Init_Class_ ## class_( FT_Glyph_Class*  clazz )  \
-  {                                                   \
-    clazz->glyph_size      = size_;                   \
-    clazz->glyph_format    = format_;                 \
-    clazz->glyph_init      = init_;                   \
-    clazz->glyph_done      = done_;                   \
-    clazz->glyph_copy      = copy_;                   \
-    clazz->glyph_transform = transform_;              \
-    clazz->glyph_bbox      = bbox_;                   \
-    clazz->glyph_prepare   = prepare_;                \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DECLARE_RENDERER                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to create a forward declaration of a                          */
-  /*    FT_Renderer_Class struct instance.                                 */
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_RENDERER                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Renderer_Class struct.        */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is defined a `create' function will      */
-  /*    need to be called with a pointer where the allocated structure is  */
-  /*    returned.  And when it is no longer needed a `destroy' function    */
-  /*    needs to be called to release that allocation.                     */
-  /*    `ftinit.c' (ft_create_default_module_classes) already contains     */
-  /*    a mechanism to call these functions for the default modules        */
-  /*    described in `ftmodule.h'.                                         */
-  /*                                                                       */
-  /*    Notice that the created `create' and `destroy' functions call      */
-  /*    `pic_init' and `pic_free' to allow you to manually allocate and    */
-  /*    initialize any additional global data, like a module specific      */
-  /*    interface, and put them in the global pic container defined in     */
-  /*    `ftpic.h'.  If you don't need them just implement the functions as */
-  /*    empty to resolve the link error.  Also the `pic_init' and          */
-  /*    `pic_free' functions should be declared in `pic.h', to be referred */
-  /*    by the renderer definition calling `FT_DEFINE_RENDERER' in the     */
-  /*    following.                                                         */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DECLARE_RENDERER
+   *
+   * @description:
+   *   Used to create a forward declaration of a
+   *   FT_Renderer_Class struct instance.
+   *
+   * @macro:
+   *   FT_DEFINE_RENDERER
+   *
+   * @description:
+   *   Used to initialize an instance of FT_Renderer_Class struct.
+   *
+   *   The struct will be allocated in the global scope (or the scope
+   *   where the macro is used).
+   */
 #define FT_DECLARE_RENDERER( class_ )               \
   FT_EXPORT_VAR( const FT_Renderer_Class ) class_;
 
@@ -1295,176 +1168,33 @@
     raster_class_                            \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
 
-#define FT_DECLARE_RENDERER( class_ )  FT_DECLARE_MODULE( class_ )
-
-#define FT_DEFINE_RENDERER(                                      \
-          class_,                                                \
-          flags_,                                                \
-          size_,                                                 \
-          name_,                                                 \
-          version_,                                              \
-          requires_,                                             \
-          interface_,                                            \
-          init_,                                                 \
-          done_,                                                 \
-          get_interface_,                                        \
-          glyph_format_,                                         \
-          render_glyph_,                                         \
-          transform_glyph_,                                      \
-          get_glyph_cbox_,                                       \
-          set_mode_,                                             \
-          raster_class_ )                                        \
-  void                                                           \
-  FT_Destroy_Class_ ## class_( FT_Library        library,        \
-                               FT_Module_Class*  clazz )         \
-  {                                                              \
-    FT_Renderer_Class*  rclazz = (FT_Renderer_Class*)clazz;      \
-    FT_Memory           memory = library->memory;                \
-                                                                 \
-                                                                 \
-    class_ ## _pic_free( library );                              \
-    if ( rclazz )                                                \
-      FT_FREE( rclazz );                                         \
-  }                                                              \
-                                                                 \
-                                                                 \
-  FT_Error                                                       \
-  FT_Create_Class_ ## class_( FT_Library         library,        \
-                              FT_Module_Class**  output_class )  \
-  {                                                              \
-    FT_Renderer_Class*  clazz = NULL;                            \
-    FT_Error            error;                                   \
-    FT_Memory           memory = library->memory;                \
-                                                                 \
-                                                                 \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) )                  \
-      return error;                                              \
-                                                                 \
-    error = class_ ## _pic_init( library );                      \
-    if ( error )                                                 \
-    {                                                            \
-      FT_FREE( clazz );                                          \
-      return error;                                              \
-    }                                                            \
-                                                                 \
-    FT_DEFINE_ROOT_MODULE( flags_,                               \
-                           size_,                                \
-                           name_,                                \
-                           version_,                             \
-                           requires_,                            \
-                           interface_,                           \
-                           init_,                                \
-                           done_,                                \
-                           get_interface_ )                      \
-                                                                 \
-    clazz->glyph_format    = glyph_format_;                      \
-                                                                 \
-    clazz->render_glyph    = render_glyph_;                      \
-    clazz->transform_glyph = transform_glyph_;                   \
-    clazz->get_glyph_cbox  = get_glyph_cbox_;                    \
-    clazz->set_mode        = set_mode_;                          \
-                                                                 \
-    clazz->raster_class    = raster_class_;                      \
-                                                                 \
-    *output_class = (FT_Module_Class*)clazz;                     \
-                                                                 \
-    return FT_Err_Ok;                                            \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-  /* PIC support macros for ftmodapi.h **/
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Creator                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to create (allocate) a new module class object.    */
-  /*    The object's members are initialized, but the module itself is     */
-  /*    not.                                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory       :: A handle to the memory manager.                    */
-  /*    output_class :: Initialized with the newly allocated class.        */
-  /*                                                                       */
-  typedef FT_Error
-  (*FT_Module_Creator)( FT_Memory          memory,
-                        FT_Module_Class**  output_class );
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Destroyer                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to destroy (deallocate) a module class object.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory :: A handle to the memory manager.                          */
-  /*    clazz  :: Module class to destroy.                                 */
-  /*                                                                       */
-  typedef void
-  (*FT_Module_Destroyer)( FT_Memory         memory,
-                          FT_Module_Class*  clazz );
-
-#endif
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DECLARE_MODULE                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to create a forward declaration of a                          */
-  /*    FT_Module_Class struct instance.                                   */
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_MODULE                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of an FT_Module_Class struct.       */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is defined a `create' function needs     */
-  /*    to be called with a pointer where the allocated structure is       */
-  /*    returned.  And when it is no longer needed a `destroy' function    */
-  /*    needs to be called to release that allocation.                     */
-  /*    `ftinit.c' (ft_create_default_module_classes) already contains     */
-  /*    a mechanism to call these functions for the default modules        */
-  /*    described in `ftmodule.h'.                                         */
-  /*                                                                       */
-  /*    Notice that the created `create' and `destroy' functions call      */
-  /*    `pic_init' and `pic_free' to allow you to manually allocate and    */
-  /*    initialize any additional global data, like a module specific      */
-  /*    interface, and put them in the global pic container defined in     */
-  /*    `ftpic.h'.  If you don't need them just implement the functions as */
-  /*    empty to resolve the link error.  Also the `pic_init' and          */
-  /*    `pic_free' functions should be declared in `pic.h', to be referred */
-  /*    by the module definition calling `FT_DEFINE_MODULE' in the         */
-  /*    following.                                                         */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_ROOT_MODULE                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of an FT_Module_Class struct inside */
-  /*    another struct that contains it or in a function that initializes  */
-  /*    that containing struct.                                            */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DECLARE_MODULE
+   *
+   * @description:
+   *   Used to create a forward declaration of a
+   *   FT_Module_Class struct instance.
+   *
+   * @macro:
+   *   FT_DEFINE_MODULE
+   *
+   * @description:
+   *   Used to initialize an instance of an FT_Module_Class struct.
+   *
+   *   The struct will be allocated in the global scope (or the scope
+   *   where the macro is used).
+   *
+   * @macro:
+   *   FT_DEFINE_ROOT_MODULE
+   *
+   * @description:
+   *   Used to initialize an instance of an FT_Module_Class struct inside
+   *   another struct that contains it or in a function that initializes
+   *   that containing struct.
+   */
 #define FT_DECLARE_MODULE( class_ )  \
   FT_CALLBACK_TABLE                  \
   const FT_Module_Class  class_;
@@ -1523,100 +1253,6 @@
   };
 
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DECLARE_MODULE( class_ )                               \
-  FT_Error                                                        \
-  FT_Create_Class_ ## class_( FT_Library         library,         \
-                              FT_Module_Class**  output_class );  \
-  void                                                            \
-  FT_Destroy_Class_ ## class_( FT_Library        library,         \
-                               FT_Module_Class*  clazz );
-
-#define FT_DEFINE_ROOT_MODULE(                      \
-          flags_,                                   \
-          size_,                                    \
-          name_,                                    \
-          version_,                                 \
-          requires_,                                \
-          interface_,                               \
-          init_,                                    \
-          done_,                                    \
-          get_interface_ )                          \
-    clazz->root.module_flags     = flags_;          \
-    clazz->root.module_size      = size_;           \
-    clazz->root.module_name      = name_;           \
-    clazz->root.module_version   = version_;        \
-    clazz->root.module_requires  = requires_;       \
-                                                    \
-    clazz->root.module_interface = interface_;      \
-                                                    \
-    clazz->root.module_init      = init_;           \
-    clazz->root.module_done      = done_;           \
-    clazz->root.get_interface    = get_interface_;
-
-#define FT_DEFINE_MODULE(                                        \
-          class_,                                                \
-          flags_,                                                \
-          size_,                                                 \
-          name_,                                                 \
-          version_,                                              \
-          requires_,                                             \
-          interface_,                                            \
-          init_,                                                 \
-          done_,                                                 \
-          get_interface_ )                                       \
-  void                                                           \
-  FT_Destroy_Class_ ## class_( FT_Library        library,        \
-                               FT_Module_Class*  clazz )         \
-  {                                                              \
-    FT_Memory memory = library->memory;                          \
-                                                                 \
-                                                                 \
-    class_ ## _pic_free( library );                              \
-    if ( clazz )                                                 \
-      FT_FREE( clazz );                                          \
-  }                                                              \
-                                                                 \
-                                                                 \
-  FT_Error                                                       \
-  FT_Create_Class_ ## class_( FT_Library         library,        \
-                              FT_Module_Class**  output_class )  \
-  {                                                              \
-    FT_Memory         memory = library->memory;                  \
-    FT_Module_Class*  clazz  = NULL;                             \
-    FT_Error          error;                                     \
-                                                                 \
-                                                                 \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) )                  \
-      return error;                                              \
-    error = class_ ## _pic_init( library );                      \
-    if ( error )                                                 \
-    {                                                            \
-      FT_FREE( clazz );                                          \
-      return error;                                              \
-    }                                                            \
-                                                                 \
-    clazz->module_flags     = flags_;                            \
-    clazz->module_size      = size_;                             \
-    clazz->module_name      = name_;                             \
-    clazz->module_version   = version_;                          \
-    clazz->module_requires  = requires_;                         \
-                                                                 \
-    clazz->module_interface = interface_;                        \
-                                                                 \
-    clazz->module_init      = init_;                             \
-    clazz->module_done      = done_;                             \
-    clazz->get_interface    = get_interface_;                    \
-                                                                 \
-    *output_class = clazz;                                       \
-                                                                 \
-    return FT_Err_Ok;                                            \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
 FT_END_HEADER
 
 #endif /* FTOBJS_H_ */
diff --git a/include/freetype/internal/ftpic.h b/include/freetype/internal/ftpic.h
deleted file mode 100644
index 5214f05..0000000
--- a/include/freetype/internal/ftpic.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpic.h                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services (declaration).       */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Modules that ordinarily have const global data that need address     */
-  /*  can instead define pointers here.                                    */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#ifndef FTPIC_H_
-#define FTPIC_H_
-
-
-FT_BEGIN_HEADER
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  typedef struct  FT_PIC_Container_
-  {
-    /* pic containers for base */
-    void*  base;
-
-    /* pic containers for modules */
-    void*  autofit;
-    void*  cff;
-    void*  pshinter;
-    void*  psnames;
-    void*  raster;
-    void*  sfnt;
-    void*  smooth;
-    void*  truetype;
-
-  } FT_PIC_Container;
-
-
-  /* Initialize the various function tables, structs, etc. */
-  /* stored in the container.                              */
-  FT_BASE( FT_Error )
-  ft_pic_container_init( FT_Library  library );
-
-
-  /* Destroy the contents of the container. */
-  FT_BASE( void )
-  ft_pic_container_destroy( FT_Library  library );
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-FT_END_HEADER
-
-#endif /* FTPIC_H_ */
-
-
-/* END */
diff --git a/include/freetype/internal/ftpsprop.h b/include/freetype/internal/ftpsprop.h
index abbb628..dd0588f 100644
--- a/include/freetype/internal/ftpsprop.h
+++ b/include/freetype/internal/ftpsprop.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpsprop.h                                                             */
-/*                                                                         */
-/*    Get and set properties of PostScript drivers (specification).        */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftpsprop.h
+ *
+ *   Get and set properties of PostScript drivers (specification).
+ *
+ * Copyright 2017-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTPSPROP_H_
diff --git a/include/freetype/internal/ftrfork.h b/include/freetype/internal/ftrfork.h
index 1aca48a..a056171 100644
--- a/include/freetype/internal/ftrfork.h
+++ b/include/freetype/internal/ftrfork.h
@@ -1,24 +1,24 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrfork.h                                                              */
-/*                                                                         */
-/*    Embedded resource forks accessor (specification).                    */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  Masatake YAMATO and Redhat K.K.                                        */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrfork.h
+ *
+ *   Embedded resource forks accessor (specification).
+ *
+ * Copyright 2004-2018 by
+ * Masatake YAMATO and Redhat K.K.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/* Development of the code in this file is support of                      */
-/* Information-technology Promotion Agency, Japan.                         */
-/***************************************************************************/
+/****************************************************************************
+ * Development of the code in this file is support of
+ * Information-technology Promotion Agency, Japan.
+ */
 
 
 #ifndef FTRFORK_H_
@@ -80,77 +80,57 @@
     FT_RFork_Rule          type;
   } ft_raccess_guess_rec;
 
-#ifndef FT_CONFIG_OPTION_PIC
 
-  /* this array is a storage in non-PIC mode, so ; is needed in END */
 #define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type )  \
           static const type name[] = {
 #define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix )  \
           { raccess_guess_ ## func_suffix,                           \
             FT_RFork_Rule_ ## type_suffix },
+  /* this array is a storage, thus a final `;' is needed */
 #define CONST_FT_RFORK_RULE_ARRAY_END  };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-  /* this array is a function in PIC mode, so no ; is needed in END */
-#define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type )  \
-          void                                         \
-          FT_Init_Table_ ## name( type*  storage )     \
-          {                                            \
-            type*  local = storage;                    \
-                                                       \
-                                                       \
-            int  i = 0;
-#define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix )  \
-          local[i].func = raccess_guess_ ## func_suffix;             \
-          local[i].type = FT_RFork_Rule_ ## type_suffix;             \
-          i++;
-#define CONST_FT_RFORK_RULE_ARRAY_END  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 #endif /* FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Raccess_Guess                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Guess a file name and offset where the actual resource fork is     */
-  /*    stored.  The macro FT_RACCESS_N_RULES holds the number of          */
-  /*    guessing rules;  the guessed result for the Nth rule is            */
-  /*    represented as a triplet: a new file name (new_names[N]), a file   */
-  /*    offset (offsets[N]), and an error code (errors[N]).                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library ::                                                         */
-  /*      A FreeType library instance.                                     */
-  /*                                                                       */
-  /*    stream ::                                                          */
-  /*      A file stream containing the resource fork.                      */
-  /*                                                                       */
-  /*    base_name ::                                                       */
-  /*      The (base) file name of the resource fork used for some          */
-  /*      guessing rules.                                                  */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    new_names ::                                                       */
-  /*      An array of guessed file names in which the resource forks may   */
-  /*      exist.  If `new_names[N]' is NULL, the guessed file name is      */
-  /*      equal to `base_name'.                                            */
-  /*                                                                       */
-  /*    offsets ::                                                         */
-  /*      An array of guessed file offsets.  `offsets[N]' holds the file   */
-  /*      offset of the possible start of the resource fork in file        */
-  /*      `new_names[N]'.                                                  */
-  /*                                                                       */
-  /*    errors ::                                                          */
-  /*      An array of FreeType error codes.  `errors[N]' is the error      */
-  /*      code of Nth guessing rule function.  If `errors[N]' is not       */
-  /*      FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Raccess_Guess
+   *
+   * @description:
+   *   Guess a file name and offset where the actual resource fork is
+   *   stored.  The macro FT_RACCESS_N_RULES holds the number of
+   *   guessing rules;  the guessed result for the Nth rule is
+   *   represented as a triplet: a new file name (new_names[N]), a file
+   *   offset (offsets[N]), and an error code (errors[N]).
+   *
+   * @input:
+   *   library ::
+   *     A FreeType library instance.
+   *
+   *   stream ::
+   *     A file stream containing the resource fork.
+   *
+   *   base_name ::
+   *     The (base) file name of the resource fork used for some
+   *     guessing rules.
+   *
+   * @output:
+   *   new_names ::
+   *     An array of guessed file names in which the resource forks may
+   *     exist.  If `new_names[N]' is NULL, the guessed file name is
+   *     equal to `base_name'.
+   *
+   *   offsets ::
+   *     An array of guessed file offsets.  `offsets[N]' holds the file
+   *     offset of the possible start of the resource fork in file
+   *     `new_names[N]'.
+   *
+   *   errors ::
+   *     An array of FreeType error codes.  `errors[N]' is the error
+   *     code of Nth guessing rule function.  If `errors[N]' is not
+   *     FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless.
+   */
   FT_BASE( void )
   FT_Raccess_Guess( FT_Library  library,
                     FT_Stream   stream,
@@ -160,37 +140,37 @@
                     FT_Error*   errors );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Raccess_Get_HeaderInfo                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the information from the header of resource fork.  The         */
-  /*    information includes the file offset where the resource map        */
-  /*    starts, and the file offset where the resource data starts.        */
-  /*    `FT_Raccess_Get_DataOffsets' requires these two data.              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library ::                                                         */
-  /*      A FreeType library instance.                                     */
-  /*                                                                       */
-  /*    stream ::                                                          */
-  /*      A file stream containing the resource fork.                      */
-  /*                                                                       */
-  /*    rfork_offset ::                                                    */
-  /*      The file offset where the resource fork starts.                  */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    map_offset ::                                                      */
-  /*      The file offset where the resource map starts.                   */
-  /*                                                                       */
-  /*    rdata_pos ::                                                       */
-  /*      The file offset where the resource data starts.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  FT_Err_Ok means success.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Raccess_Get_HeaderInfo
+   *
+   * @description:
+   *   Get the information from the header of resource fork.  The
+   *   information includes the file offset where the resource map
+   *   starts, and the file offset where the resource data starts.
+   *   `FT_Raccess_Get_DataOffsets' requires these two data.
+   *
+   * @input:
+   *   library ::
+   *     A FreeType library instance.
+   *
+   *   stream ::
+   *     A file stream containing the resource fork.
+   *
+   *   rfork_offset ::
+   *     The file offset where the resource fork starts.
+   *
+   * @output:
+   *   map_offset ::
+   *     The file offset where the resource map starts.
+   *
+   *   rdata_pos ::
+   *     The file offset where the resource data starts.
+   *
+   * @return:
+   *   FreeType error code.  FT_Err_Ok means success.
+   */
   FT_BASE( FT_Error )
   FT_Raccess_Get_HeaderInfo( FT_Library  library,
                              FT_Stream   stream,
@@ -199,55 +179,55 @@
                              FT_Long    *rdata_pos );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Raccess_Get_DataOffsets                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the data offsets for a tag in a resource fork.  Offsets are    */
-  /*    stored in an array because, in some cases, resources in a resource */
-  /*    fork have the same tag.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library ::                                                         */
-  /*      A FreeType library instance.                                     */
-  /*                                                                       */
-  /*    stream ::                                                          */
-  /*      A file stream containing the resource fork.                      */
-  /*                                                                       */
-  /*    map_offset ::                                                      */
-  /*      The file offset where the resource map starts.                   */
-  /*                                                                       */
-  /*    rdata_pos ::                                                       */
-  /*      The file offset where the resource data starts.                  */
-  /*                                                                       */
-  /*    tag ::                                                             */
-  /*      The resource tag.                                                */
-  /*                                                                       */
-  /*    sort_by_res_id ::                                                  */
-  /*      A Boolean to sort the fragmented resource by their ids.          */
-  /*      The fragmented resources for `POST' resource should be sorted    */
-  /*      to restore Type1 font properly.  For `sfnt' resources, sorting   */
-  /*      may induce a different order of the faces in comparison to that  */
-  /*      by QuickDraw API.                                                */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    offsets ::                                                         */
-  /*      The stream offsets for the resource data specified by `tag'.     */
-  /*      This array is allocated by the function, so you have to call     */
-  /*      @ft_mem_free after use.                                          */
-  /*                                                                       */
-  /*    count ::                                                           */
-  /*      The length of offsets array.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  FT_Err_Ok means success.                     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Normally you should use `FT_Raccess_Get_HeaderInfo' to get the     */
-  /*    value for `map_offset' and `rdata_pos'.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Raccess_Get_DataOffsets
+   *
+   * @description:
+   *   Get the data offsets for a tag in a resource fork.  Offsets are
+   *   stored in an array because, in some cases, resources in a resource
+   *   fork have the same tag.
+   *
+   * @input:
+   *   library ::
+   *     A FreeType library instance.
+   *
+   *   stream ::
+   *     A file stream containing the resource fork.
+   *
+   *   map_offset ::
+   *     The file offset where the resource map starts.
+   *
+   *   rdata_pos ::
+   *     The file offset where the resource data starts.
+   *
+   *   tag ::
+   *     The resource tag.
+   *
+   *   sort_by_res_id ::
+   *     A Boolean to sort the fragmented resource by their ids.
+   *     The fragmented resources for `POST' resource should be sorted
+   *     to restore Type1 font properly.  For `sfnt' resources, sorting
+   *     may induce a different order of the faces in comparison to that
+   *     by QuickDraw API.
+   *
+   * @output:
+   *   offsets ::
+   *     The stream offsets for the resource data specified by `tag'.
+   *     This array is allocated by the function, so you have to call
+   *     @ft_mem_free after use.
+   *
+   *   count ::
+   *     The length of offsets array.
+   *
+   * @return:
+   *   FreeType error code.  FT_Err_Ok means success.
+   *
+   * @note:
+   *   Normally you should use `FT_Raccess_Get_HeaderInfo' to get the
+   *   value for `map_offset' and `rdata_pos'.
+   */
   FT_BASE( FT_Error )
   FT_Raccess_Get_DataOffsets( FT_Library  library,
                               FT_Stream   stream,
diff --git a/include/freetype/internal/ftserv.h b/include/freetype/internal/ftserv.h
index e01c167..3f493b5 100644
--- a/include/freetype/internal/ftserv.h
+++ b/include/freetype/internal/ftserv.h
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftserv.h                                                               */
-/*                                                                         */
-/*    The FreeType services (specification only).                          */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftserv.h
+ *
+ *   The FreeType services (specification only).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Each module can export one or more `services'.  Each service is      */
-  /*  identified by a constant string and modeled by a pointer; the latter */
-  /*  generally corresponds to a structure containing function pointers.   */
-  /*                                                                       */
-  /*  Note that a service's data cannot be a mere function pointer because */
-  /*  in C it is possible that function pointers might be implemented      */
-  /*  differently than data pointers (e.g. 48 bits instead of 32).         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Each module can export one or more `services'.  Each service is
+   * identified by a constant string and modeled by a pointer; the latter
+   * generally corresponds to a structure containing function pointers.
+   *
+   * Note that a service's data cannot be a mere function pointer because
+   * in C it is possible that function pointers might be implemented
+   * differently than data pointers (e.g. 48 bits instead of 32).
+   *
+   */
 
 
 #ifndef FTSERV_H_
@@ -34,7 +34,8 @@
 
 FT_BEGIN_HEADER
 
-  /*
+  /**************************************************************************
+   *
    * @macro:
    *   FT_FACE_FIND_SERVICE
    *
@@ -85,7 +86,8 @@
 #endif /* !C++ */
 
 
-  /*
+  /**************************************************************************
+   *
    * @macro:
    *   FT_FACE_FIND_GLOBAL_SERVICE
    *
@@ -144,8 +146,8 @@
   /*************************************************************************/
 
   /*
-   *  The following structure is used to _describe_ a given service
-   *  to the library.  This is useful to build simple static service lists.
+   * The following structure is used to _describe_ a given service
+   * to the library.  This is useful to build simple static service lists.
    */
   typedef struct  FT_ServiceDescRec_
   {
@@ -157,35 +159,26 @@
   typedef const FT_ServiceDescRec*  FT_ServiceDesc;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_SERVICEDESCREC1                                          */
-  /*    FT_DEFINE_SERVICEDESCREC2                                          */
-  /*    FT_DEFINE_SERVICEDESCREC3                                          */
-  /*    FT_DEFINE_SERVICEDESCREC4                                          */
-  /*    FT_DEFINE_SERVICEDESCREC5                                          */
-  /*    FT_DEFINE_SERVICEDESCREC6                                          */
-  /*    FT_DEFINE_SERVICEDESCREC7                                          */
-  /*    FT_DEFINE_SERVICEDESCREC8                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an array of FT_ServiceDescRec structures.       */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is defined a `create' function needs to  */
-  /*    be called with a pointer to return an allocated array.  As soon as */
-  /*    it is no longer needed, a `destroy' function needs to be called to */
-  /*    release that allocation.                                           */
-  /*                                                                       */
-  /*    These functions should be manually called from the `pic_init' and  */
-  /*    `pic_free' functions of your module (see FT_DEFINE_MODULE).        */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the array will be         */
-  /*    allocated in the global scope (or the scope where the macro is     */
-  /*    used).                                                             */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DEFINE_SERVICEDESCREC1
+   *   FT_DEFINE_SERVICEDESCREC2
+   *   FT_DEFINE_SERVICEDESCREC3
+   *   FT_DEFINE_SERVICEDESCREC4
+   *   FT_DEFINE_SERVICEDESCREC5
+   *   FT_DEFINE_SERVICEDESCREC6
+   *   FT_DEFINE_SERVICEDESCREC7
+   *   FT_DEFINE_SERVICEDESCREC8
+   *   FT_DEFINE_SERVICEDESCREC9
+   *   FT_DEFINE_SERVICEDESCREC10
+   *
+   * @description:
+   *   Used to initialize an array of FT_ServiceDescRec structures.
+   *
+   *   The array will be allocated in the global scope (or the scope
+   *   where the macro is used).
+   */
 #define FT_DEFINE_SERVICEDESCREC1( class_,                                  \
                                    serv_id_1, serv_data_1 )                 \
   static const FT_ServiceDescRec  class_[] =                                \
@@ -356,504 +349,15 @@
     { NULL, NULL }                                                          \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICEDESCREC1( class_,                                  \
-                                   serv_id_1, serv_data_1 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 2 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = NULL;                                              \
-    clazz[1].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC2( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 3 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = NULL;                                              \
-    clazz[2].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC3( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 4 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = NULL;                                              \
-    clazz[3].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC4( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 5 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = NULL;                                              \
-    clazz[4].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC5( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 6 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = NULL;                                              \
-    clazz[5].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC6( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5,                  \
-                                   serv_id_6, serv_data_6 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 7 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = serv_id_6;                                         \
-    clazz[5].serv_data = serv_data_6;                                       \
-    clazz[6].serv_id   = NULL;                                              \
-    clazz[6].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC7( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5,                  \
-                                   serv_id_6, serv_data_6,                  \
-                                   serv_id_7, serv_data_7 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 8 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = serv_id_6;                                         \
-    clazz[5].serv_data = serv_data_6;                                       \
-    clazz[6].serv_id   = serv_id_7;                                         \
-    clazz[6].serv_data = serv_data_7;                                       \
-    clazz[7].serv_id   = NULL;                                              \
-    clazz[7].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC8( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5,                  \
-                                   serv_id_6, serv_data_6,                  \
-                                   serv_id_7, serv_data_7,                  \
-                                   serv_id_8, serv_data_8 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 9 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = serv_id_6;                                         \
-    clazz[5].serv_data = serv_data_6;                                       \
-    clazz[6].serv_id   = serv_id_7;                                         \
-    clazz[6].serv_data = serv_data_7;                                       \
-    clazz[7].serv_id   = serv_id_8;                                         \
-    clazz[7].serv_data = serv_data_8;                                       \
-    clazz[8].serv_id   = NULL;                                              \
-    clazz[8].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC9( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5,                  \
-                                   serv_id_6, serv_data_6,                  \
-                                   serv_id_7, serv_data_7,                  \
-                                   serv_id_8, serv_data_8,                  \
-                                   serv_id_9, serv_data_9 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 10 ) )                        \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = serv_id_6;                                         \
-    clazz[5].serv_data = serv_data_6;                                       \
-    clazz[6].serv_id   = serv_id_7;                                         \
-    clazz[6].serv_data = serv_data_7;                                       \
-    clazz[7].serv_id   = serv_id_8;                                         \
-    clazz[7].serv_data = serv_data_8;                                       \
-    clazz[8].serv_id   = serv_id_9;                                         \
-    clazz[8].serv_data = serv_data_9;                                       \
-    clazz[9].serv_id   = NULL;                                              \
-    clazz[9].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC10( class_,                                 \
-                                    serv_id_1, serv_data_1,                 \
-                                    serv_id_2, serv_data_2,                 \
-                                    serv_id_3, serv_data_3,                 \
-                                    serv_id_4, serv_data_4,                 \
-                                    serv_id_5, serv_data_5,                 \
-                                    serv_id_6, serv_data_6,                 \
-                                    serv_id_7, serv_data_7,                 \
-                                    serv_id_8, serv_data_8,                 \
-                                    serv_id_9, serv_data_9,                 \
-                                    serv_id_10, serv_data_10 )              \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 11 ) )                        \
-      return error;                                                         \
-                                                                            \
-    clazz[ 0].serv_id   = serv_id_1;                                        \
-    clazz[ 0].serv_data = serv_data_1;                                      \
-    clazz[ 1].serv_id   = serv_id_2;                                        \
-    clazz[ 1].serv_data = serv_data_2;                                      \
-    clazz[ 2].serv_id   = serv_id_3;                                        \
-    clazz[ 2].serv_data = serv_data_3;                                      \
-    clazz[ 3].serv_id   = serv_id_4;                                        \
-    clazz[ 3].serv_data = serv_data_4;                                      \
-    clazz[ 4].serv_id   = serv_id_5;                                        \
-    clazz[ 4].serv_data = serv_data_5;                                      \
-    clazz[ 5].serv_id   = serv_id_6;                                        \
-    clazz[ 5].serv_data = serv_data_6;                                      \
-    clazz[ 6].serv_id   = serv_id_7;                                        \
-    clazz[ 6].serv_data = serv_data_7;                                      \
-    clazz[ 7].serv_id   = serv_id_8;                                        \
-    clazz[ 7].serv_data = serv_data_8;                                      \
-    clazz[ 8].serv_id   = serv_id_9;                                        \
-    clazz[ 8].serv_data = serv_data_9;                                      \
-    clazz[ 9].serv_id   = serv_id_10;                                       \
-    clazz[ 9].serv_data = serv_data_10;                                     \
-    clazz[10].serv_id   = NULL;                                             \
-    clazz[10].serv_data = NULL;                                             \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 
   /*
-   *  Parse a list of FT_ServiceDescRec descriptors and look for
-   *  a specific service by ID.  Note that the last element in the
-   *  array must be { NULL, NULL }, and that the function should
-   *  return NULL if the service isn't available.
+   * Parse a list of FT_ServiceDescRec descriptors and look for
+   * a specific service by ID.  Note that the last element in the
+   * array must be { NULL, NULL }, and that the function should
+   * return NULL if the service isn't available.
    *
-   *  This function can be used by modules to implement their
-   *  `get_service' method.
+   * This function can be used by modules to implement their
+   * `get_service' method.
    */
   FT_BASE( FT_Pointer )
   ft_service_list_lookup( FT_ServiceDesc  service_descriptors,
@@ -869,16 +373,16 @@
   /*************************************************************************/
 
   /*
-   *  This structure is used to store a cache for several frequently used
-   *  services.  It is the type of `face->internal->services'.  You
-   *  should only use FT_FACE_LOOKUP_SERVICE to access it.
+   * This structure is used to store a cache for several frequently used
+   * services.  It is the type of `face->internal->services'.  You
+   * should only use FT_FACE_LOOKUP_SERVICE to access it.
    *
-   *  All fields should have the type FT_Pointer to relax compilation
-   *  dependencies.  We assume the developer isn't completely stupid.
+   * All fields should have the type FT_Pointer to relax compilation
+   * dependencies.  We assume the developer isn't completely stupid.
    *
-   *  Each field must be named `service_XXXX' where `XXX' corresponds to
-   *  the correct FT_SERVICE_ID_XXXX macro.  See the definition of
-   *  FT_FACE_LOOKUP_SERVICE below how this is implemented.
+   * Each field must be named `service_XXXX' where `XXX' corresponds to
+   * the correct FT_SERVICE_ID_XXXX macro.  See the definition of
+   * FT_FACE_LOOKUP_SERVICE below how this is implemented.
    *
    */
   typedef struct  FT_ServiceCacheRec_
@@ -894,14 +398,15 @@
 
 
   /*
-   *  A magic number used within the services cache.
+   * A magic number used within the services cache.
    */
 
   /* ensure that value `1' has the same width as a pointer */
 #define FT_SERVICE_UNAVAILABLE  ((FT_Pointer)~(FT_PtrDist)1)
 
 
-  /*
+  /**************************************************************************
+   *
    * @macro:
    *   FT_FACE_LOOKUP_SERVICE
    *
@@ -910,7 +415,7 @@
    *   using its cache.
    *
    * @input:
-   *   face::
+   *   face ::
    *     The source face handle containing the cache.
    *
    *   field ::
@@ -969,7 +474,7 @@
 #endif /* !C++ */
 
   /*
-   *  A macro used to define new service structure types.
+   * A macro used to define new service structure types.
    */
 
 #define FT_DEFINE_SERVICE( name )            \
@@ -982,7 +487,7 @@
   /* */
 
   /*
-   *  The header files containing the services.
+   * The header files containing the services.
    */
 
 #define FT_SERVICE_BDF_H                <freetype/internal/services/svbdf.h>
diff --git a/include/freetype/internal/ftstream.h b/include/freetype/internal/ftstream.h
index f90002f..aaf8e0b 100644
--- a/include/freetype/internal/ftstream.h
+++ b/include/freetype/internal/ftstream.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstream.h                                                             */
-/*                                                                         */
-/*    Stream handling (specification).                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstream.h
+ *
+ *   Stream handling (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTSTREAM_H_
@@ -147,11 +147,11 @@
 #define FT_FRAME_SKIP_BYTES( count )  { ft_frame_skip, count, 0 }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Integer extraction macros -- the `buffer' parameter must ALWAYS be of */
-  /* type `char*' or equivalent (1-byte elements).                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Integer extraction macros -- the `buffer' parameter must ALWAYS be of
+   * type `char*' or equivalent (1-byte elements).
+   */
 
 #define FT_BYTE_( p, i )  ( ((const FT_Byte*)(p))[(i)] )
 
@@ -165,6 +165,10 @@
 #define FT_BYTE_U32( p, i, s )  ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) )
 
 
+  /*
+   * `FT_PEEK_XXX' are generic macros to get data from a buffer position.
+   * No safety checks are performed.
+   */
 #define FT_PEEK_SHORT( p )  FT_INT16( FT_BYTE_U16( p, 0, 8 ) | \
                                       FT_BYTE_U16( p, 1, 0 ) )
 
@@ -213,7 +217,10 @@
                                           FT_BYTE_U32( p, 1,  8 ) | \
                                           FT_BYTE_U32( p, 0,  0 ) )
 
-
+  /*
+   * `FT_NEXT_XXX' are generic macros to get data from a buffer position
+   * which is then increased appropriately.  No safety checks are performed.
+   */
 #define FT_NEXT_CHAR( buffer )       \
           ( (signed char)*buffer++ )
 
@@ -258,10 +265,14 @@
           ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Each GET_xxxx() macro uses an implicit `stream' variable.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The `FT_GET_XXX' macros use an implicit `stream' variable.
+   *
+   * Note that a call to `FT_STREAM_SEEK' or `FT_STREAM_POS' has *no* effect
+   * on `FT_GET_XXX'!  They operate on `stream->pos', while `FT_GET_XXX' use
+   * `stream->cursor'.
+   */
 #if 0
 #define FT_GET_MACRO( type )    FT_NEXT_ ## type ( stream->cursor )
 
@@ -299,10 +310,18 @@
 #define FT_GET_ULONG_LE()   FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong )
 #endif
 
+
 #define FT_READ_MACRO( func, type, var )        \
           ( var = (type)func( stream, &error ), \
             error != FT_Err_Ok )
 
+  /*
+   * The `FT_READ_XXX' macros use implicit `stream' and `error' variables.
+   *
+   * `FT_READ_XXX' can be controlled with `FT_STREAM_SEEK' and
+   * `FT_STREAM_POS'.  They use the full machinery to check whether a read
+   * is valid.
+   */
 #define FT_READ_BYTE( var )       FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var )
 #define FT_READ_CHAR( var )       FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var )
 #define FT_READ_SHORT( var )      FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )
@@ -387,10 +406,10 @@
 
   /* Enter a frame of `count' consecutive bytes in a stream.  Returns an */
   /* error if the frame could not be read/accessed.  The caller can use  */
-  /* the FT_Stream_Get_XXX functions to retrieve frame data without      */
+  /* the `FT_Stream_Get_XXX' functions to retrieve frame data without    */
   /* error checks.                                                       */
   /*                                                                     */
-  /* You must _always_ call FT_Stream_ExitFrame() once you have entered  */
+  /* You must _always_ call `FT_Stream_ExitFrame' once you have entered  */
   /* a stream frame!                                                     */
   /*                                                                     */
   FT_BASE( FT_Error )
@@ -415,7 +434,7 @@
                           FT_ULong   count,
                           FT_Byte**  pbytes );
 
-  /* release an extract frame (see FT_Stream_ExtractFrame) */
+  /* release an extract frame (see `FT_Stream_ExtractFrame') */
   FT_BASE( void )
   FT_Stream_ReleaseFrame( FT_Stream  stream,
                           FT_Byte**  pbytes );
diff --git a/include/freetype/internal/fttrace.h b/include/freetype/internal/fttrace.h
index 8092e41..78b731c 100644
--- a/include/freetype/internal/fttrace.h
+++ b/include/freetype/internal/fttrace.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttrace.h                                                              */
-/*                                                                         */
-/*    Tracing handling (specification only).                               */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttrace.h
+ *
+ *   Tracing handling (specification only).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /* definitions of trace levels for FreeType 2 */
@@ -23,23 +23,24 @@
 
   /* base components */
 FT_TRACE_DEF( calc )      /* calculations            (ftcalc.c)   */
+FT_TRACE_DEF( gloader )   /* glyph loader            (ftgloadr.c) */
+FT_TRACE_DEF( glyph )     /* glyph management        (ftglyph.c)  */
 FT_TRACE_DEF( memory )    /* memory manager          (ftobjs.c)   */
-FT_TRACE_DEF( stream )    /* stream manager          (ftstream.c) */
+FT_TRACE_DEF( init )      /* initialization          (ftinit.c)   */
 FT_TRACE_DEF( io )        /* i/o interface           (ftsystem.c) */
 FT_TRACE_DEF( list )      /* list management         (ftlist.c)   */
-FT_TRACE_DEF( init )      /* initialization          (ftinit.c)   */
 FT_TRACE_DEF( objs )      /* base objects            (ftobjs.c)   */
 FT_TRACE_DEF( outline )   /* outline management      (ftoutln.c)  */
-FT_TRACE_DEF( glyph )     /* glyph management        (ftglyph.c)  */
-FT_TRACE_DEF( gloader )   /* glyph loader            (ftgloadr.c) */
+FT_TRACE_DEF( stream )    /* stream manager          (ftstream.c) */
 
+FT_TRACE_DEF( bitmap )    /* bitmap manipulation     (ftbitmap.c) */
+FT_TRACE_DEF( checksum )  /* bitmap checksum         (ftobjs.c)   */
+FT_TRACE_DEF( mm )        /* MM interface            (ftmm.c)     */
+FT_TRACE_DEF( psprops )   /* PS driver properties    (ftpsprop.c) */
+FT_TRACE_DEF( raccess )   /* resource fork accessor  (ftrfork.c)  */
 FT_TRACE_DEF( raster )    /* monochrome rasterizer   (ftraster.c) */
 FT_TRACE_DEF( smooth )    /* anti-aliasing raster    (ftgrays.c)  */
-FT_TRACE_DEF( mm )        /* MM interface            (ftmm.c)     */
-FT_TRACE_DEF( raccess )   /* resource fork accessor  (ftrfork.c)  */
 FT_TRACE_DEF( synth )     /* bold/slant synthesizer  (ftsynth.c)  */
-FT_TRACE_DEF( bitmap )    /* bitmap checksum         (ftobjs.c)   */
-FT_TRACE_DEF( psprops )   /* PS driver properties    (ftpsprop.c) */
 
   /* Cache sub-system */
 FT_TRACE_DEF( cache )     /* cache sub-system        (ftcache.c, etc.) */
@@ -47,21 +48,23 @@
   /* SFNT driver components */
 FT_TRACE_DEF( sfdriver )  /* SFNT font driver        (sfdriver.c) */
 FT_TRACE_DEF( sfobjs )    /* SFNT object handler     (sfobjs.c)   */
+FT_TRACE_DEF( ttbdf )     /* TrueType embedded BDF   (ttbdf.c)    */
 FT_TRACE_DEF( ttcmap )    /* charmap handler         (ttcmap.c)   */
+FT_TRACE_DEF( ttcolr )    /* glyph layer table       (ttcolr.c)   */
+FT_TRACE_DEF( ttcpal )    /* color palette table     (ttcpal.c)   */
 FT_TRACE_DEF( ttkern )    /* kerning handler         (ttkern.c)   */
 FT_TRACE_DEF( ttload )    /* basic TrueType tables   (ttload.c)   */
 FT_TRACE_DEF( ttmtx )     /* metrics-related tables  (ttmtx.c)    */
 FT_TRACE_DEF( ttpost )    /* PS table processing     (ttpost.c)   */
 FT_TRACE_DEF( ttsbit )    /* TrueType sbit handling  (ttsbit.c)   */
-FT_TRACE_DEF( ttbdf )     /* TrueType embedded BDF   (ttbdf.c)    */
 
   /* TrueType driver components */
 FT_TRACE_DEF( ttdriver )  /* TT font driver          (ttdriver.c) */
 FT_TRACE_DEF( ttgload )   /* TT glyph loader         (ttgload.c)  */
+FT_TRACE_DEF( ttgxvar )   /* TrueType GX var handler (ttgxvar.c)  */
 FT_TRACE_DEF( ttinterp )  /* bytecode interpreter    (ttinterp.c) */
 FT_TRACE_DEF( ttobjs )    /* TT objects manager      (ttobjs.c)   */
 FT_TRACE_DEF( ttpload )   /* TT data/program loader  (ttpload.c)  */
-FT_TRACE_DEF( ttgxvar )   /* TrueType GX var handler (ttgxvar.c)  */
 
   /* Type 1 driver components */
 FT_TRACE_DEF( t1afm )
@@ -72,14 +75,14 @@
 FT_TRACE_DEF( t1parse )
 
   /* PostScript helper module `psaux' */
-FT_TRACE_DEF( t1decode )
 FT_TRACE_DEF( cffdecode )
-FT_TRACE_DEF( psobjs )
 FT_TRACE_DEF( psconv )
+FT_TRACE_DEF( psobjs )
+FT_TRACE_DEF( t1decode )
 
   /* PostScript hinting module `pshinter' */
-FT_TRACE_DEF( pshrec )
 FT_TRACE_DEF( pshalgo )
+FT_TRACE_DEF( pshrec )
 
   /* Type 2 driver components */
 FT_TRACE_DEF( cffdriver )
@@ -117,7 +120,6 @@
 FT_TRACE_DEF( pfr )
 
   /* OpenType validation components */
-FT_TRACE_DEF( otvmodule )
 FT_TRACE_DEF( otvcommon )
 FT_TRACE_DEF( otvbase )
 FT_TRACE_DEF( otvgdef )
@@ -125,29 +127,30 @@
 FT_TRACE_DEF( otvgsub )
 FT_TRACE_DEF( otvjstf )
 FT_TRACE_DEF( otvmath )
+FT_TRACE_DEF( otvmodule )
 
   /* TrueTypeGX/AAT validation components */
-FT_TRACE_DEF( gxvmodule )
+FT_TRACE_DEF( gxvbsln )
 FT_TRACE_DEF( gxvcommon )
 FT_TRACE_DEF( gxvfeat )
-FT_TRACE_DEF( gxvmort )
-FT_TRACE_DEF( gxvmorx )
-FT_TRACE_DEF( gxvbsln )
 FT_TRACE_DEF( gxvjust )
 FT_TRACE_DEF( gxvkern )
-FT_TRACE_DEF( gxvopbd )
-FT_TRACE_DEF( gxvtrak )
-FT_TRACE_DEF( gxvprop )
+FT_TRACE_DEF( gxvmodule )
+FT_TRACE_DEF( gxvmort )
+FT_TRACE_DEF( gxvmorx )
 FT_TRACE_DEF( gxvlcar )
+FT_TRACE_DEF( gxvopbd )
+FT_TRACE_DEF( gxvprop )
+FT_TRACE_DEF( gxvtrak )
 
   /* autofit components */
-FT_TRACE_DEF( afmodule )
-FT_TRACE_DEF( afhints )
 FT_TRACE_DEF( afcjk )
+FT_TRACE_DEF( afglobal )
+FT_TRACE_DEF( afhints )
+FT_TRACE_DEF( afmodule )
 FT_TRACE_DEF( aflatin )
 FT_TRACE_DEF( aflatin2 )
-FT_TRACE_DEF( afwarp )
 FT_TRACE_DEF( afshaper )
-FT_TRACE_DEF( afglobal )
+FT_TRACE_DEF( afwarp )
 
 /* END */
diff --git a/include/freetype/internal/ftvalid.h b/include/freetype/internal/ftvalid.h
index cad47a5..265d79b 100644
--- a/include/freetype/internal/ftvalid.h
+++ b/include/freetype/internal/ftvalid.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftvalid.h                                                              */
-/*                                                                         */
-/*    FreeType validation support (specification).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftvalid.h
+ *
+ *   FreeType validation support (specification).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTVALID_H_
@@ -42,31 +42,31 @@
   typedef struct FT_ValidatorRec_ volatile*  FT_Validator;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* There are three distinct validation levels defined here:              */
-  /*                                                                       */
-  /* FT_VALIDATE_DEFAULT ::                                                */
-  /*   A table that passes this validation level can be used reliably by   */
-  /*   FreeType.  It generally means that all offsets have been checked to */
-  /*   prevent out-of-bound reads, that array counts are correct, etc.     */
-  /*                                                                       */
-  /* FT_VALIDATE_TIGHT ::                                                  */
-  /*   A table that passes this validation level can be used reliably and  */
-  /*   doesn't contain invalid data.  For example, a charmap table that    */
-  /*   returns invalid glyph indices will not pass, even though it can     */
-  /*   be used with FreeType in default mode (the library will simply      */
-  /*   return an error later when trying to load the glyph).               */
-  /*                                                                       */
-  /*   It also checks that fields which must be a multiple of 2, 4, or 8,  */
-  /*   don't have incorrect values, etc.                                   */
-  /*                                                                       */
-  /* FT_VALIDATE_PARANOID ::                                               */
-  /*   Only for font debugging.  Checks that a table follows the           */
-  /*   specification by 100%.  Very few fonts will be able to pass this    */
-  /*   level anyway but it can be useful for certain tools like font       */
-  /*   editors/converters.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * There are three distinct validation levels defined here:
+   *
+   * FT_VALIDATE_DEFAULT ::
+   *   A table that passes this validation level can be used reliably by
+   *   FreeType.  It generally means that all offsets have been checked to
+   *   prevent out-of-bound reads, that array counts are correct, etc.
+   *
+   * FT_VALIDATE_TIGHT ::
+   *   A table that passes this validation level can be used reliably and
+   *   doesn't contain invalid data.  For example, a charmap table that
+   *   returns invalid glyph indices will not pass, even though it can
+   *   be used with FreeType in default mode (the library will simply
+   *   return an error later when trying to load the glyph).
+   *
+   *   It also checks that fields which must be a multiple of 2, 4, or 8,
+   *   don't have incorrect values, etc.
+   *
+   * FT_VALIDATE_PARANOID ::
+   *   Only for font debugging.  Checks that a table follows the
+   *   specification by 100%.  Very few fonts will be able to pass this
+   *   level anyway but it can be useful for certain tools like font
+   *   editors/converters.
+   */
   typedef enum  FT_ValidationLevel_
   {
     FT_VALIDATE_DEFAULT = 0,
diff --git a/include/freetype/internal/internal.h b/include/freetype/internal/internal.h
index 8f546e4..8261043 100644
--- a/include/freetype/internal/internal.h
+++ b/include/freetype/internal/internal.h
@@ -1,31 +1,30 @@
-/***************************************************************************/
-/*                                                                         */
-/*  internal.h                                                             */
-/*                                                                         */
-/*    Internal header files (specification only).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * internal.h
+ *
+ *   Internal header files (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is automatically included by `ft2build.h'.                  */
-  /* Do not include it manually!                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is automatically included by `ft2build.h'.
+   * Do not include it manually!
+   *
+   */
 
 
 #define FT_INTERNAL_OBJECTS_H             <freetype/internal/ftobjs.h>
-#define FT_INTERNAL_PIC_H                 <freetype/internal/ftpic.h>
 #define FT_INTERNAL_STREAM_H              <freetype/internal/ftstream.h>
 #define FT_INTERNAL_MEMORY_H              <freetype/internal/ftmemory.h>
 #define FT_INTERNAL_DEBUG_H               <freetype/internal/ftdebug.h>
diff --git a/include/freetype/internal/psaux.h b/include/freetype/internal/psaux.h
index f77380d..2c5a6d2 100644
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psaux.h                                                                */
-/*                                                                         */
-/*    Auxiliary functions and data structures related to PostScript fonts  */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psaux.h
+ *
+ *   Auxiliary functions and data structures related to PostScript fonts
+ *   (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSAUX_H_
@@ -35,10 +35,10 @@
 FT_BEGIN_HEADER
 
 
-  /***********************************************************************/
-  /*                                                                     */
-  /* PostScript modules driver class.                                    */
-  /*                                                                     */
+  /************************************************************************
+   *
+   * PostScript modules driver class.
+   */
   typedef struct  PS_DriverRec_
   {
     FT_DriverRec  root;
@@ -64,23 +64,27 @@
   typedef const struct PS_Table_FuncsRec_*  PS_Table_Funcs;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_Table_FuncsRec                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A set of function pointers to manage PS_Table objects.             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    table_init    :: Used to initialize a table.                       */
-  /*                                                                       */
-  /*    table_done    :: Finalizes resp. destroy a given table.            */
-  /*                                                                       */
-  /*    table_add     :: Adds a new object to a table.                     */
-  /*                                                                       */
-  /*    table_release :: Releases table data, then finalizes it.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_Table_FuncsRec
+   *
+   * @description:
+   *   A set of function pointers to manage PS_Table objects.
+   *
+   * @fields:
+   *   table_init ::
+   *     Used to initialize a table.
+   *
+   *   table_done ::
+   *     Finalizes resp. destroy a given table.
+   *
+   *   table_add ::
+   *     Adds a new object to a table.
+   *
+   *   table_release ::
+   *     Releases table data, then finalizes it.
+   */
   typedef struct  PS_Table_FuncsRec_
   {
     FT_Error
@@ -103,41 +107,51 @@
   } PS_Table_FuncsRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_TableRec                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A PS_Table is a simple object used to store an array of objects in */
-  /*    a single memory block.                                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    block     :: The address in memory of the growheap's block.  This  */
-  /*                 can change between two object adds, due to            */
-  /*                 reallocation.                                         */
-  /*                                                                       */
-  /*    cursor    :: The current top of the grow heap within its block.    */
-  /*                                                                       */
-  /*    capacity  :: The current size of the heap block.  Increments by    */
-  /*                 1kByte chunks.                                        */
-  /*                                                                       */
-  /*    init      :: Set to 0xDEADBEEF if `elements' and `lengths' have    */
-  /*                 been allocated.                                       */
-  /*                                                                       */
-  /*    max_elems :: The maximum number of elements in table.              */
-  /*                                                                       */
-  /*    num_elems :: The current number of elements in table.              */
-  /*                                                                       */
-  /*    elements  :: A table of element addresses within the block.        */
-  /*                                                                       */
-  /*    lengths   :: A table of element sizes within the block.            */
-  /*                                                                       */
-  /*    memory    :: The object used for memory operations                 */
-  /*                 (alloc/realloc).                                      */
-  /*                                                                       */
-  /*    funcs     :: A table of method pointers for this object.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_TableRec
+   *
+   * @description:
+   *   A PS_Table is a simple object used to store an array of objects in
+   *   a single memory block.
+   *
+   * @fields:
+   *   block ::
+   *     The address in memory of the growheap's block.  This
+   *     can change between two object adds, due to
+   *     reallocation.
+   *
+   *   cursor ::
+   *     The current top of the grow heap within its block.
+   *
+   *   capacity ::
+   *     The current size of the heap block.  Increments by
+   *     1kByte chunks.
+   *
+   *   init ::
+   *     Set to 0xDEADBEEF if `elements' and `lengths' have
+   *     been allocated.
+   *
+   *   max_elems ::
+   *     The maximum number of elements in table.
+   *
+   *   num_elems ::
+   *     The current number of elements in table.
+   *
+   *   elements ::
+   *     A table of element addresses within the block.
+   *
+   *   lengths ::
+   *     A table of element sizes within the block.
+   *
+   *   memory ::
+   *     The object used for memory operations
+   *     (alloc/realloc).
+   *
+   *   funcs ::
+   *     A table of method pointers for this object.
+   */
   typedef struct  PS_TableRec_
   {
     FT_Byte*           block;          /* current memory block           */
@@ -425,27 +439,33 @@
   } PS_Parser_FuncsRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_ParserRec                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A PS_Parser is an object used to parse a Type 1 font very quickly. */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    cursor :: The current position in the text.                        */
-  /*                                                                       */
-  /*    base   :: Start of the processed text.                             */
-  /*                                                                       */
-  /*    limit  :: End of the processed text.                               */
-  /*                                                                       */
-  /*    error  :: The last error returned.                                 */
-  /*                                                                       */
-  /*    memory :: The object used for memory operations (alloc/realloc).   */
-  /*                                                                       */
-  /*    funcs  :: A table of functions for the parser.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_ParserRec
+   *
+   * @description:
+   *   A PS_Parser is an object used to parse a Type 1 font very quickly.
+   *
+   * @fields:
+   *   cursor ::
+   *     The current position in the text.
+   *
+   *   base ::
+   *     Start of the processed text.
+   *
+   *   limit ::
+   *     End of the processed text.
+   *
+   *   error ::
+   *     The last error returned.
+   *
+   *   memory ::
+   *     The object used for memory operations (alloc/realloc).
+   *
+   *   funcs ::
+   *     A table of functions for the parser.
+   */
   typedef struct  PS_ParserRec_
   {
     FT_Byte*   cursor;
@@ -484,51 +504,68 @@
   } PS_Builder_FuncsRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Structure>                                                           */
-  /*    PS_Builder                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*     A structure used during glyph loading to store its outline.       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    memory       :: The current memory object.                         */
-  /*                                                                       */
-  /*    face         :: The current face object.                           */
-  /*                                                                       */
-  /*    glyph        :: The current glyph slot.                            */
-  /*                                                                       */
-  /*    loader       :: XXX                                                */
-  /*                                                                       */
-  /*    base         :: The base glyph outline.                            */
-  /*                                                                       */
-  /*    current      :: The current glyph outline.                         */
-  /*                                                                       */
-  /*    pos_x        :: The horizontal translation (if composite glyph).   */
-  /*                                                                       */
-  /*    pos_y        :: The vertical translation (if composite glyph).     */
-  /*                                                                       */
-  /*    left_bearing :: The left side bearing point.                       */
-  /*                                                                       */
-  /*    advance      :: The horizontal advance vector.                     */
-  /*                                                                       */
-  /*    bbox         :: Unused.                                            */
-  /*                                                                       */
-  /*    path_begun   :: A flag which indicates that a new path has begun.  */
-  /*                                                                       */
-  /*    load_points  :: If this flag is not set, no points are loaded.     */
-  /*                                                                       */
-  /*    no_recurse   :: Set but not used.                                  */
-  /*                                                                       */
-  /*    metrics_only :: A boolean indicating that we only want to compute  */
-  /*                    the metrics of a given glyph, not load all of its  */
-  /*                    points.                                            */
-  /*                                                                       */
-  /*    is_t1        :: Set if current font type is Type 1.                */
-  /*                                                                       */
-  /*    funcs        :: An array of function pointers for the builder.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_Builder
+   *
+   * @description:
+   *    A structure used during glyph loading to store its outline.
+   *
+   * @fields:
+   *   memory ::
+   *     The current memory object.
+   *
+   *   face ::
+   *     The current face object.
+   *
+   *   glyph ::
+   *     The current glyph slot.
+   *
+   *   loader ::
+   *     XXX
+   *
+   *   base ::
+   *     The base glyph outline.
+   *
+   *   current ::
+   *     The current glyph outline.
+   *
+   *   pos_x ::
+   *     The horizontal translation (if composite glyph).
+   *
+   *   pos_y ::
+   *     The vertical translation (if composite glyph).
+   *
+   *   left_bearing ::
+   *     The left side bearing point.
+   *
+   *   advance ::
+   *     The horizontal advance vector.
+   *
+   *   bbox ::
+   *     Unused.
+   *
+   *   path_begun ::
+   *     A flag which indicates that a new path has begun.
+   *
+   *   load_points ::
+   *     If this flag is not set, no points are loaded.
+   *
+   *   no_recurse ::
+   *     Set but not used.
+   *
+   *   metrics_only ::
+   *     A boolean indicating that we only want to compute
+   *     the metrics of a given glyph, not load all of its
+   *     points.
+   *
+   *   is_t1 ::
+   *     Set if current font type is Type 1.
+   *
+   *   funcs ::
+   *     An array of function pointers for the builder.
+   */
   struct  PS_Builder_
   {
     FT_Memory       memory;
@@ -729,54 +766,72 @@
   } T1_ParseState;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Structure>                                                           */
-  /*    T1_BuilderRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*     A structure used during glyph loading to store its outline.       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    memory       :: The current memory object.                         */
-  /*                                                                       */
-  /*    face         :: The current face object.                           */
-  /*                                                                       */
-  /*    glyph        :: The current glyph slot.                            */
-  /*                                                                       */
-  /*    loader       :: XXX                                                */
-  /*                                                                       */
-  /*    base         :: The base glyph outline.                            */
-  /*                                                                       */
-  /*    current      :: The current glyph outline.                         */
-  /*                                                                       */
-  /*    max_points   :: maximum points in builder outline                  */
-  /*                                                                       */
-  /*    max_contours :: Maximum number of contours in builder outline.     */
-  /*                                                                       */
-  /*    pos_x        :: The horizontal translation (if composite glyph).   */
-  /*                                                                       */
-  /*    pos_y        :: The vertical translation (if composite glyph).     */
-  /*                                                                       */
-  /*    left_bearing :: The left side bearing point.                       */
-  /*                                                                       */
-  /*    advance      :: The horizontal advance vector.                     */
-  /*                                                                       */
-  /*    bbox         :: Unused.                                            */
-  /*                                                                       */
-  /*    parse_state  :: An enumeration which controls the charstring       */
-  /*                    parsing state.                                     */
-  /*                                                                       */
-  /*    load_points  :: If this flag is not set, no points are loaded.     */
-  /*                                                                       */
-  /*    no_recurse   :: Set but not used.                                  */
-  /*                                                                       */
-  /*    metrics_only :: A boolean indicating that we only want to compute  */
-  /*                    the metrics of a given glyph, not load all of its  */
-  /*                    points.                                            */
-  /*                                                                       */
-  /*    funcs        :: An array of function pointers for the builder.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   T1_BuilderRec
+   *
+   * @description:
+   *    A structure used during glyph loading to store its outline.
+   *
+   * @fields:
+   *   memory ::
+   *     The current memory object.
+   *
+   *   face ::
+   *     The current face object.
+   *
+   *   glyph ::
+   *     The current glyph slot.
+   *
+   *   loader ::
+   *     XXX
+   *
+   *   base ::
+   *     The base glyph outline.
+   *
+   *   current ::
+   *     The current glyph outline.
+   *
+   *   max_points ::
+   *     maximum points in builder outline
+   *
+   *   max_contours ::
+   *     Maximum number of contours in builder outline.
+   *
+   *   pos_x ::
+   *     The horizontal translation (if composite glyph).
+   *
+   *   pos_y ::
+   *     The vertical translation (if composite glyph).
+   *
+   *   left_bearing ::
+   *     The left side bearing point.
+   *
+   *   advance ::
+   *     The horizontal advance vector.
+   *
+   *   bbox ::
+   *     Unused.
+   *
+   *   parse_state ::
+   *     An enumeration which controls the charstring
+   *     parsing state.
+   *
+   *   load_points ::
+   *     If this flag is not set, no points are loaded.
+   *
+   *   no_recurse ::
+   *     Set but not used.
+   *
+   *   metrics_only ::
+   *     A boolean indicating that we only want to compute
+   *     the metrics of a given glyph, not load all of its
+   *     points.
+   *
+   *   funcs ::
+   *     An array of function pointers for the builder.
+   */
   typedef struct  T1_BuilderRec_
   {
     FT_Memory       memory;
@@ -817,19 +872,19 @@
 
 #if 0
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine   */
-  /* calls during glyph loading.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine
+   * calls during glyph loading.
+   */
 #define T1_MAX_SUBRS_CALLS  8
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A     */
-  /* minimum of 16 is required.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A
+   * minimum of 16 is required.
+   */
 #define T1_MAX_CHARSTRINGS_OPERANDS  32
 
 #endif /* 0 */
@@ -993,53 +1048,71 @@
   } CFF_Builder_FuncsRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Structure>                                                           */
-  /*    CFF_Builder                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*     A structure used during glyph loading to store its outline.       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    memory        :: The current memory object.                        */
-  /*                                                                       */
-  /*    face          :: The current face object.                          */
-  /*                                                                       */
-  /*    glyph         :: The current glyph slot.                           */
-  /*                                                                       */
-  /*    loader        :: The current glyph loader.                         */
-  /*                                                                       */
-  /*    base          :: The base glyph outline.                           */
-  /*                                                                       */
-  /*    current       :: The current glyph outline.                        */
-  /*                                                                       */
-  /*    pos_x         :: The horizontal translation (if composite glyph).  */
-  /*                                                                       */
-  /*    pos_y         :: The vertical translation (if composite glyph).    */
-  /*                                                                       */
-  /*    left_bearing  :: The left side bearing point.                      */
-  /*                                                                       */
-  /*    advance       :: The horizontal advance vector.                    */
-  /*                                                                       */
-  /*    bbox          :: Unused.                                           */
-  /*                                                                       */
-  /*    path_begun    :: A flag which indicates that a new path has begun. */
-  /*                                                                       */
-  /*    load_points   :: If this flag is not set, no points are loaded.    */
-  /*                                                                       */
-  /*    no_recurse    :: Set but not used.                                 */
-  /*                                                                       */
-  /*    metrics_only  :: A boolean indicating that we only want to compute */
-  /*                     the metrics of a given glyph, not load all of its */
-  /*                     points.                                           */
-  /*                                                                       */
-  /*    hints_funcs   :: Auxiliary pointer for hinting.                    */
-  /*                                                                       */
-  /*    hints_globals :: Auxiliary pointer for hinting.                    */
-  /*                                                                       */
-  /*    funcs         :: A table of method pointers for this object.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CFF_Builder
+   *
+   * @description:
+   *    A structure used during glyph loading to store its outline.
+   *
+   * @fields:
+   *   memory ::
+   *     The current memory object.
+   *
+   *   face ::
+   *     The current face object.
+   *
+   *   glyph ::
+   *     The current glyph slot.
+   *
+   *   loader ::
+   *     The current glyph loader.
+   *
+   *   base ::
+   *     The base glyph outline.
+   *
+   *   current ::
+   *     The current glyph outline.
+   *
+   *   pos_x ::
+   *     The horizontal translation (if composite glyph).
+   *
+   *   pos_y ::
+   *     The vertical translation (if composite glyph).
+   *
+   *   left_bearing ::
+   *     The left side bearing point.
+   *
+   *   advance ::
+   *     The horizontal advance vector.
+   *
+   *   bbox ::
+   *     Unused.
+   *
+   *   path_begun ::
+   *     A flag which indicates that a new path has begun.
+   *
+   *   load_points ::
+   *     If this flag is not set, no points are loaded.
+   *
+   *   no_recurse ::
+   *     Set but not used.
+   *
+   *   metrics_only ::
+   *     A boolean indicating that we only want to compute
+   *     the metrics of a given glyph, not load all of its
+   *     points.
+   *
+   *   hints_funcs ::
+   *     Auxiliary pointer for hinting.
+   *
+   *   hints_globals ::
+   *     Auxiliary pointer for hinting.
+   *
+   *   funcs ::
+   *     A table of method pointers for this object.
+   */
   struct  CFF_Builder_
   {
     FT_Memory       memory;
@@ -1211,25 +1284,29 @@
   typedef struct AFM_StreamRec_*  AFM_Stream;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    AFM_ParserRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An AFM_Parser is a parser for the AFM files.                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    memory    :: The object used for memory operations (alloc and      */
-  /*                 realloc).                                             */
-  /*                                                                       */
-  /*    stream    :: This is an opaque object.                             */
-  /*                                                                       */
-  /*    FontInfo  :: The result will be stored here.                       */
-  /*                                                                       */
-  /*    get_index :: A user provided function to get a glyph index by its  */
-  /*                 name.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   AFM_ParserRec
+   *
+   * @description:
+   *   An AFM_Parser is a parser for the AFM files.
+   *
+   * @fields:
+   *   memory ::
+   *     The object used for memory operations (alloc and
+   *     realloc).
+   *
+   *   stream ::
+   *     This is an opaque object.
+   *
+   *   FontInfo ::
+   *     The result will be stored here.
+   *
+   *   get_index ::
+   *     A user provided function to get a glyph index by its
+   *     name.
+   */
   typedef struct  AFM_ParserRec_
   {
     FT_Memory     memory;
diff --git a/include/freetype/internal/pshints.h b/include/freetype/internal/pshints.h
index d29314e..90a28ac 100644
--- a/include/freetype/internal/pshints.h
+++ b/include/freetype/internal/pshints.h
@@ -1,21 +1,21 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshints.h                                                              */
-/*                                                                         */
-/*    Interface to Postscript-specific (Type 1 and Type 2) hints           */
-/*    recorders (specification only).  These are used to support native    */
-/*    T1/T2 hints in the `type1', `cid', and `cff' font drivers.           */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshints.h
+ *
+ *   Interface to Postscript-specific (Type 1 and Type 2) hints
+ *   recorders (specification only).  These are used to support native
+ *   T1/T2 hints in the `type1', `cid', and `cff' font drivers.
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSHINTS_H_
@@ -680,8 +680,6 @@
   typedef PSHinter_Interface*  PSHinter_Service;
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_PSHINTER_INTERFACE(        \
           class_,                            \
           get_globals_funcs_,                \
@@ -694,25 +692,6 @@
     get_t2_funcs_                            \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_PSHINTER_INTERFACE(                      \
-          class_,                                          \
-          get_globals_funcs_,                              \
-          get_t1_funcs_,                                   \
-          get_t2_funcs_ )                                  \
-  void                                                     \
-  FT_Init_Class_ ## class_( FT_Library           library,  \
-                            PSHinter_Interface*  clazz )   \
-  {                                                        \
-    FT_UNUSED( library );                                  \
-                                                           \
-    clazz->get_globals_funcs = get_globals_funcs_;         \
-    clazz->get_t1_funcs      = get_t1_funcs_;              \
-    clazz->get_t2_funcs      = get_t2_funcs_;              \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 FT_END_HEADER
 
diff --git a/include/freetype/internal/services/svbdf.h b/include/freetype/internal/services/svbdf.h
index 4a9ec20..b29f537 100644
--- a/include/freetype/internal/services/svbdf.h
+++ b/include/freetype/internal/services/svbdf.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svbdf.h                                                                */
-/*                                                                         */
-/*    The FreeType BDF services (specification).                           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svbdf.h
+ *
+ *   The FreeType BDF services (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVBDF_H_
@@ -46,8 +46,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_BDFRec( class_,                                \
                                   get_charset_id_,                       \
                                   get_property_ )                        \
@@ -56,20 +54,6 @@
     get_charset_id_, get_property_                                       \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_BDFRec( class_,                                \
-                                  get_charset_id_,                       \
-                                  get_property_ )                        \
-  void                                                                   \
-  FT_Init_Class_ ## class_( FT_Service_BDFRec*  clazz )                  \
-  {                                                                      \
-    clazz->get_charset_id = get_charset_id_;                             \
-    clazz->get_property   = get_property_;                               \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svcfftl.h b/include/freetype/internal/services/svcfftl.h
index db623e6..9e4486e 100644
--- a/include/freetype/internal/services/svcfftl.h
+++ b/include/freetype/internal/services/svcfftl.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svcfftl.h                                                              */
-/*                                                                         */
-/*    The FreeType CFF tables loader service (specification).              */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svcfftl.h
+ *
+ *   The FreeType CFF tables loader service (specification).
+ *
+ * Copyright 2017-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVCFFTL_H_
@@ -65,8 +65,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_CFFLOADREC( class_,                  \
                                       get_standard_encoding_,  \
                                       load_private_dict_,      \
@@ -82,26 +80,6 @@
     blend_build_vector_                                        \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_CFFLOADREC( class_,                  \
-                                      get_standard_encoding_,  \
-                                      load_private_dict_,      \
-                                      fd_select_get_,          \
-                                      blend_check_vector_,     \
-                                      blend_build_vector_ )    \
-  void                                                         \
-  FT_Init_Class_ ## class_( FT_Service_CFFLoadRec*  clazz )    \
-  {                                                            \
-    clazz->get_standard_encoding = get_standard_encoding_;     \
-    clazz->load_private_dict     = load_private_dict_;         \
-    clazz->fd_select_get         = fd_select_get_;             \
-    clazz->blend_check_vector    = blend_check_vector_;        \
-    clazz->blend_build_vector    = blend_build_vector_;        \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 
 FT_END_HEADER
 
diff --git a/include/freetype/internal/services/svcid.h b/include/freetype/internal/services/svcid.h
index cb59ac6..9ef0a0c 100644
--- a/include/freetype/internal/services/svcid.h
+++ b/include/freetype/internal/services/svcid.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svcid.h                                                                */
-/*                                                                         */
-/*    The FreeType CID font services (specification).                      */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Derek Clegg and Michael Toftdal.                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svcid.h
+ *
+ *   The FreeType CID font services (specification).
+ *
+ * Copyright 2007-2018 by
+ * Derek Clegg and Michael Toftdal.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVCID_H_
@@ -48,8 +48,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_CIDREC( class_,                                   \
                                   get_ros_,                                 \
                                   get_is_cid_,                              \
@@ -59,25 +57,6 @@
     get_ros_, get_is_cid_, get_cid_from_glyph_index_                        \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_CIDREC( class_,                                   \
-                                  get_ros_,                                 \
-                                  get_is_cid_,                              \
-                                  get_cid_from_glyph_index_ )               \
-  void                                                                      \
-  FT_Init_Class_ ## class_( FT_Library          library,                    \
-                            FT_Service_CIDRec*  clazz )                     \
-  {                                                                         \
-    FT_UNUSED( library );                                                   \
-                                                                            \
-    clazz->get_ros                  = get_ros_;                             \
-    clazz->get_is_cid               = get_is_cid_;                          \
-    clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_;            \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svfntfmt.h b/include/freetype/internal/services/svfntfmt.h
index 3b732be..6182362 100644
--- a/include/freetype/internal/services/svfntfmt.h
+++ b/include/freetype/internal/services/svfntfmt.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svfntfmt.h                                                             */
-/*                                                                         */
-/*    The FreeType font format service (specification only).               */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svfntfmt.h
+ *
+ *   The FreeType font format service (specification only).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVFNTFMT_H_
@@ -26,9 +26,9 @@
 
 
   /*
-   *  A trivial service used to return the name of a face's font driver,
-   *  according to the XFree86 nomenclature.  Note that the service data
-   *  is a simple constant string pointer.
+   * A trivial service used to return the name of a face's font driver,
+   * according to the XFree86 nomenclature.  Note that the service data
+   * is a simple constant string pointer.
    */
 
 #define FT_SERVICE_ID_FONT_FORMAT  "font-format"
diff --git a/include/freetype/internal/services/svgldict.h b/include/freetype/internal/services/svgldict.h
index f1a68e3..0840b58 100644
--- a/include/freetype/internal/services/svgldict.h
+++ b/include/freetype/internal/services/svgldict.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svgldict.h                                                             */
-/*                                                                         */
-/*    The FreeType glyph dictionary services (specification).              */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svgldict.h
+ *
+ *   The FreeType glyph dictionary services (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVGLDICT_H_
@@ -26,8 +26,8 @@
 
 
   /*
-   *  A service used to retrieve glyph names, as well as to find the
-   *  index of a given glyph name in a font.
+   * A service used to retrieve glyph names, as well as to find the
+   * index of a given glyph name in a font.
    *
    */
 
@@ -52,8 +52,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_GLYPHDICTREC( class_,                        \
                                         get_name_,                     \
                                         name_index_ )                  \
@@ -62,23 +60,6 @@
     get_name_, name_index_                                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_GLYPHDICTREC( class_,                        \
-                                        get_name_,                     \
-                                        name_index_ )                  \
-  void                                                                 \
-  FT_Init_Class_ ## class_( FT_Library                library,         \
-                            FT_Service_GlyphDictRec*  clazz )          \
-  {                                                                    \
-    FT_UNUSED( library );                                              \
-                                                                       \
-    clazz->get_name   = get_name_;                                     \
-    clazz->name_index = name_index_;                                   \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svgxval.h b/include/freetype/internal/services/svgxval.h
index ed79ebe..7fa27ff 100644
--- a/include/freetype/internal/services/svgxval.h
+++ b/include/freetype/internal/services/svgxval.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svgxval.h                                                              */
-/*                                                                         */
-/*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  Masatake YAMATO, Red Hat K.K.,                                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svgxval.h
+ *
+ *   FreeType API for validating TrueTypeGX/AAT tables (specification).
+ *
+ * Copyright 2004-2018 by
+ * Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #ifndef SVGXVAL_H_
diff --git a/include/freetype/internal/services/svkern.h b/include/freetype/internal/services/svkern.h
index c7e8f6e..ef95b32 100644
--- a/include/freetype/internal/services/svkern.h
+++ b/include/freetype/internal/services/svkern.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svkern.h                                                               */
-/*                                                                         */
-/*    The FreeType Kerning service (specification).                        */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svkern.h
+ *
+ *   The FreeType Kerning service (specification).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVKERN_H_
diff --git a/include/freetype/internal/services/svmetric.h b/include/freetype/internal/services/svmetric.h
index abaacdd..91de020 100644
--- a/include/freetype/internal/services/svmetric.h
+++ b/include/freetype/internal/services/svmetric.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svmetric.h                                                             */
-/*                                                                         */
-/*    The FreeType services for metrics variations (specification).        */
-/*                                                                         */
-/*  Copyright 2016-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svmetric.h
+ *
+ *   The FreeType services for metrics variations (specification).
+ *
+ * Copyright 2016-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVMETRIC_H_
@@ -26,7 +26,7 @@
 
 
   /*
-   *  A service to manage the `HVAR, `MVAR', and `VVAR' OpenType tables.
+   * A service to manage the `HVAR, `MVAR', and `VVAR' OpenType tables.
    *
    */
 
@@ -93,8 +93,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_METRICSVARIATIONSREC( class_,            \
                                                 hadvance_adjust_,  \
                                                 lsb_adjust_,       \
@@ -116,32 +114,6 @@
     metrics_adjust_                                                \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_METRICSVARIATIONSREC( class_,               \
-                                                hadvance_adjust_,     \
-                                                lsb_adjust_,          \
-                                                rsb_adjust_,          \
-                                                vadvance_adjust_,     \
-                                                tsb_adjust_,          \
-                                                bsb_adjust_,          \
-                                                vorg_adjust_,         \
-                                                metrics_adjust_  )    \
-  void                                                                \
-  FT_Init_Class_ ## class_( FT_Service_MetricsVariationsRec*  clazz ) \
-  {                                                                   \
-    clazz->hadvance_adjust = hadvance_adjust_;                        \
-    clazz->lsb_adjust      = lsb_adjust_;                             \
-    clazz->rsb_adjust      = rsb_adjust_;                             \
-    clazz->vadvance_adjust = vadvance_adjust_;                        \
-    clazz->tsb_adjust      = tsb_adjust_;                             \
-    clazz->bsb_adjust      = bsb_adjust_;                             \
-    clazz->vorg_adjust     = vorg_adjust_;                            \
-    clazz->metrics_adjust  = metrics_adjust_;                         \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svmm.h b/include/freetype/internal/services/svmm.h
index bcbb38e..6aeaa45 100644
--- a/include/freetype/internal/services/svmm.h
+++ b/include/freetype/internal/services/svmm.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svmm.h                                                                 */
-/*                                                                         */
-/*    The FreeType Multiple Masters and GX var services (specification).   */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svmm.h
+ *
+ *   The FreeType Multiple Masters and GX var services (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVMM_H_
@@ -26,9 +26,9 @@
 
 
   /*
-   *  A service used to manage multiple-masters data in a given face.
+   * A service used to manage multiple-masters data in a given face.
    *
-   *  See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
+   * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
    *
    */
 
@@ -104,8 +104,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_,          \
                                            get_mm_,         \
                                            set_mm_design_,  \
@@ -131,36 +129,6 @@
     done_blend_                                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_,               \
-                                           get_mm_,              \
-                                           set_mm_design_,       \
-                                           set_mm_blend_,        \
-                                           get_mm_blend_,        \
-                                           get_mm_var_,          \
-                                           set_var_design_,      \
-                                           get_var_design_,      \
-                                           set_instance_,        \
-                                           get_var_blend_,       \
-                                           done_blend_ )         \
-  void                                                           \
-  FT_Init_Class_ ## class_( FT_Service_MultiMastersRec*  clazz ) \
-  {                                                              \
-    clazz->get_mm         = get_mm_;                             \
-    clazz->set_mm_design  = set_mm_design_;                      \
-    clazz->set_mm_blend   = set_mm_blend_;                       \
-    clazz->get_mm_blend   = get_mm_blend_;                       \
-    clazz->get_mm_var     = get_mm_var_;                         \
-    clazz->set_var_design = set_var_design_;                     \
-    clazz->get_var_design = get_var_design_;                     \
-    clazz->set_instance   = set_instance_;                       \
-    clazz->get_var_blend  = get_var_blend_;                      \
-    clazz->done_blend     = done_blend_;                         \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svotval.h b/include/freetype/internal/services/svotval.h
index 3129429..9a3ff47 100644
--- a/include/freetype/internal/services/svotval.h
+++ b/include/freetype/internal/services/svotval.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svotval.h                                                              */
-/*                                                                         */
-/*    The FreeType OpenType validation service (specification).            */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svotval.h
+ *
+ *   The FreeType OpenType validation service (specification).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVOTVAL_H_
diff --git a/include/freetype/internal/services/svpfr.h b/include/freetype/internal/services/svpfr.h
index e65d57e..21deb31 100644
--- a/include/freetype/internal/services/svpfr.h
+++ b/include/freetype/internal/services/svpfr.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svpfr.h                                                                */
-/*                                                                         */
-/*    Internal PFR service functions (specification).                      */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svpfr.h
+ *
+ *   Internal PFR service functions (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVPFR_H_
diff --git a/include/freetype/internal/services/svpostnm.h b/include/freetype/internal/services/svpostnm.h
index 4a49d8b..1e39dce 100644
--- a/include/freetype/internal/services/svpostnm.h
+++ b/include/freetype/internal/services/svpostnm.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svpostnm.h                                                             */
-/*                                                                         */
-/*    The FreeType PostScript name services (specification).               */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svpostnm.h
+ *
+ *   The FreeType PostScript name services (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVPOSTNM_H_
@@ -25,13 +25,13 @@
 FT_BEGIN_HEADER
 
   /*
-   *  A trivial service used to retrieve the PostScript name of a given
-   *  font when available.  The `get_name' field should never be NULL.
+   * A trivial service used to retrieve the PostScript name of a given
+   * font when available.  The `get_name' field should never be NULL.
    *
-   *  The corresponding function can return NULL to indicate that the
-   *  PostScript name is not available.
+   * The corresponding function can return NULL to indicate that the
+   * PostScript name is not available.
    *
-   *  The name is owned by the face and will be destroyed with it.
+   * The name is owned by the face and will be destroyed with it.
    */
 
 #define FT_SERVICE_ID_POSTSCRIPT_FONT_NAME  "postscript-font-name"
@@ -47,28 +47,12 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \
   static const FT_Service_PsFontNameRec  class_ =                    \
   {                                                                  \
     get_ps_font_name_                                                \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \
-  void                                                               \
-  FT_Init_Class_ ## class_( FT_Library                 library,      \
-                            FT_Service_PsFontNameRec*  clazz )       \
-  {                                                                  \
-    FT_UNUSED( library );                                            \
-                                                                     \
-    clazz->get_ps_font_name = get_ps_font_name_;                     \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svprop.h b/include/freetype/internal/services/svprop.h
index adc0bcf..7e84cc8 100644
--- a/include/freetype/internal/services/svprop.h
+++ b/include/freetype/internal/services/svprop.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svprop.h                                                               */
-/*                                                                         */
-/*    The FreeType property service (specification).                       */
-/*                                                                         */
-/*  Copyright 2012-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svprop.h
+ *
+ *   The FreeType property service (specification).
+ *
+ * Copyright 2012-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVPROP_H_
@@ -45,8 +45,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_PROPERTIESREC( class_,          \
                                          set_property_,   \
                                          get_property_ )  \
@@ -56,20 +54,6 @@
     get_property_                                         \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_PROPERTIESREC( class_,                \
-                                         set_property_,         \
-                                         get_property_ )        \
-  void                                                          \
-  FT_Init_Class_ ## class_( FT_Service_PropertiesRec*  clazz )  \
-  {                                                             \
-    clazz->set_property = set_property_;                        \
-    clazz->get_property = get_property_;                        \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svpscmap.h b/include/freetype/internal/services/svpscmap.h
index 5589575..136879d 100644
--- a/include/freetype/internal/services/svpscmap.h
+++ b/include/freetype/internal/services/svpscmap.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svpscmap.h                                                             */
-/*                                                                         */
-/*    The FreeType PostScript charmap service (specification).             */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svpscmap.h
+ *
+ *   The FreeType PostScript charmap service (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVPSCMAP_H_
@@ -29,27 +29,27 @@
 
 
   /*
-   *  Adobe glyph name to unicode value.
+   * Adobe glyph name to unicode value.
    */
   typedef FT_UInt32
   (*PS_Unicode_ValueFunc)( const char*  glyph_name );
 
   /*
-   *  Macintosh name id to glyph name.  NULL if invalid index.
+   * Macintosh name id to glyph name.  NULL if invalid index.
    */
   typedef const char*
   (*PS_Macintosh_NameFunc)( FT_UInt  name_index );
 
   /*
-   *  Adobe standard string ID to glyph name.  NULL if invalid index.
+   * Adobe standard string ID to glyph name.  NULL if invalid index.
    */
   typedef const char*
   (*PS_Adobe_Std_StringsFunc)( FT_UInt  string_index );
 
 
   /*
-   *  Simple unicode -> glyph index charmap built from font glyph names
-   *  table.
+   * Simple unicode -> glyph index charmap built from font glyph names
+   * table.
    */
   typedef struct  PS_UniMap_
   {
@@ -71,16 +71,16 @@
 
 
   /*
-   *  A function which returns a glyph name for a given index.  Returns
-   *  NULL if invalid index.
+   * A function which returns a glyph name for a given index.  Returns
+   * NULL if invalid index.
    */
   typedef const char*
   (*PS_GetGlyphNameFunc)( FT_Pointer  data,
                           FT_UInt     string_index );
 
   /*
-   *  A function used to release the glyph name returned by
-   *  PS_GetGlyphNameFunc, when needed
+   * A function used to release the glyph name returned by
+   * PS_GetGlyphNameFunc, when needed
    */
   typedef void
   (*PS_FreeGlyphNameFunc)( FT_Pointer  data,
@@ -118,8 +118,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_PSCMAPSREC( class_,                               \
                                       unicode_value_,                       \
                                       unicodes_init_,                       \
@@ -136,35 +134,6 @@
     adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_         \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_PSCMAPSREC( class_,                               \
-                                      unicode_value_,                       \
-                                      unicodes_init_,                       \
-                                      unicodes_char_index_,                 \
-                                      unicodes_char_next_,                  \
-                                      macintosh_name_,                      \
-                                      adobe_std_strings_,                   \
-                                      adobe_std_encoding_,                  \
-                                      adobe_expert_encoding_ )              \
-  void                                                                      \
-  FT_Init_Class_ ## class_( FT_Library              library,                \
-                            FT_Service_PsCMapsRec*  clazz )                 \
-  {                                                                         \
-    FT_UNUSED( library );                                                   \
-                                                                            \
-    clazz->unicode_value         = unicode_value_;                          \
-    clazz->unicodes_init         = unicodes_init_;                          \
-    clazz->unicodes_char_index   = unicodes_char_index_;                    \
-    clazz->unicodes_char_next    = unicodes_char_next_;                     \
-    clazz->macintosh_name        = macintosh_name_;                         \
-    clazz->adobe_std_strings     = adobe_std_strings_;                      \
-    clazz->adobe_std_encoding    = adobe_std_encoding_;                     \
-    clazz->adobe_expert_encoding = adobe_expert_encoding_;                  \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svpsinfo.h b/include/freetype/internal/services/svpsinfo.h
index 408f406..214fd1e 100644
--- a/include/freetype/internal/services/svpsinfo.h
+++ b/include/freetype/internal/services/svpsinfo.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svpsinfo.h                                                             */
-/*                                                                         */
-/*    The FreeType PostScript info service (specification).                */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svpsinfo.h
+ *
+ *   The FreeType PostScript info service (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVPSINFO_H_
@@ -62,8 +62,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_PSINFOREC( class_,                     \
                                      get_font_info_,             \
                                      ps_get_font_extra_,         \
@@ -76,29 +74,6 @@
     get_font_private_, get_font_value_                           \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_PSINFOREC( class_,                     \
-                                     get_font_info_,             \
-                                     ps_get_font_extra_,         \
-                                     has_glyph_names_,           \
-                                     get_font_private_,          \
-                                     get_font_value_ )           \
-  void                                                           \
-  FT_Init_Class_ ## class_( FT_Library             library,      \
-                            FT_Service_PsInfoRec*  clazz )       \
-  {                                                              \
-    FT_UNUSED( library );                                        \
-                                                                 \
-    clazz->ps_get_font_info    = get_font_info_;                 \
-    clazz->ps_get_font_extra   = ps_get_font_extra_;             \
-    clazz->ps_has_glyph_names  = has_glyph_names_;               \
-    clazz->ps_get_font_private = get_font_private_;              \
-    clazz->ps_get_font_value   = get_font_value_;                \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svsfnt.h b/include/freetype/internal/services/svsfnt.h
index e8b37bc..035e119 100644
--- a/include/freetype/internal/services/svsfnt.h
+++ b/include/freetype/internal/services/svsfnt.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svsfnt.h                                                               */
-/*                                                                         */
-/*    The FreeType SFNT table loading service (specification).             */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svsfnt.h
+ *
+ *   The FreeType SFNT table loading service (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVSFNT_H_
@@ -27,7 +27,7 @@
 
 
   /*
-   *  SFNT table loading service.
+   * SFNT table loading service.
    */
 
 #define FT_SERVICE_ID_SFNT_TABLE  "sfnt-table"
@@ -70,27 +70,12 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ )  \
   static const FT_Service_SFNT_TableRec  class_ =                      \
   {                                                                    \
     load_, get_, info_                                                 \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \
-  void                                                                \
-  FT_Init_Class_ ## class_( FT_Service_SFNT_TableRec*  clazz )        \
-  {                                                                   \
-    clazz->load_table = load_;                                        \
-    clazz->get_table  = get_;                                         \
-    clazz->table_info = info_;                                        \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svttcmap.h b/include/freetype/internal/services/svttcmap.h
index cd0e6fd..cc4328f 100644
--- a/include/freetype/internal/services/svttcmap.h
+++ b/include/freetype/internal/services/svttcmap.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svttcmap.h                                                             */
-/*                                                                         */
-/*    The FreeType TrueType/sfnt cmap extra information service.           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  Masatake YAMATO, Redhat K.K.,                                          */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svttcmap.h
+ *
+ *   The FreeType TrueType/sfnt cmap extra information service.
+ *
+ * Copyright 2003-2018 by
+ * Masatake YAMATO, Redhat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 /* Development of this service is support of
    Information-technology Promotion Agency, Japan. */
@@ -32,29 +32,29 @@
 #define FT_SERVICE_ID_TT_CMAP  "tt-cmaps"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_CMapInfo                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to store TrueType/sfnt specific cmap information  */
-  /*    which is not covered by the generic @FT_CharMap structure.  This   */
-  /*    structure can be accessed with the @FT_Get_TT_CMap_Info function.  */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    language ::                                                        */
-  /*      The language ID used in Mac fonts.  Definitions of values are in */
-  /*      `ttnameid.h'.                                                    */
-  /*                                                                       */
-  /*    format ::                                                          */
-  /*      The cmap format.  OpenType 1.6 defines the formats 0 (byte       */
-  /*      encoding table), 2~(high-byte mapping through table), 4~(segment */
-  /*      mapping to delta values), 6~(trimmed table mapping), 8~(mixed    */
-  /*      16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented   */
-  /*      coverage), 13~(last resort font), and 14 (Unicode Variation      */
-  /*      Sequences).                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_CMapInfo
+   *
+   * @description:
+   *   A structure used to store TrueType/sfnt specific cmap information
+   *   which is not covered by the generic @FT_CharMap structure.  This
+   *   structure can be accessed with the @FT_Get_TT_CMap_Info function.
+   *
+   * @fields:
+   *   language ::
+   *     The language ID used in Mac fonts.  Definitions of values are in
+   *     `ttnameid.h'.
+   *
+   *   format ::
+   *     The cmap format.  OpenType 1.6 defines the formats 0 (byte
+   *     encoding table), 2~(high-byte mapping through table), 4~(segment
+   *     mapping to delta values), 6~(trimmed table mapping), 8~(mixed
+   *     16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented
+   *     coverage), 13~(last resort font), and 14 (Unicode Variation
+   *     Sequences).
+   */
   typedef struct  TT_CMapInfo_
   {
     FT_ULong  language;
@@ -73,7 +73,6 @@
     TT_CMap_Info_GetFunc  get_cmap_info;
   };
 
-#ifndef FT_CONFIG_OPTION_PIC
 
 #define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
   static const FT_Service_TTCMapsRec  class_ =                  \
@@ -81,20 +80,6 @@
     get_cmap_info_                                              \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
-  void                                                          \
-  FT_Init_Class_ ## class_( FT_Library              library,    \
-                            FT_Service_TTCMapsRec*  clazz )     \
-  {                                                             \
-    FT_UNUSED( library );                                       \
-                                                                \
-    clazz->get_cmap_info = get_cmap_info_;                      \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svtteng.h b/include/freetype/internal/services/svtteng.h
index 92e3c54..2564a41 100644
--- a/include/freetype/internal/services/svtteng.h
+++ b/include/freetype/internal/services/svtteng.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svtteng.h                                                              */
-/*                                                                         */
-/*    The FreeType TrueType engine query service (specification).          */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svtteng.h
+ *
+ *   The FreeType TrueType engine query service (specification).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVTTENG_H_
@@ -27,7 +27,7 @@
 
 
   /*
-   *  SFNT table loading service.
+   * SFNT table loading service.
    */
 
 #define FT_SERVICE_ID_TRUETYPE_ENGINE  "truetype-engine"
diff --git a/include/freetype/internal/services/svttglyf.h b/include/freetype/internal/services/svttglyf.h
index 16fac1c..38444e9 100644
--- a/include/freetype/internal/services/svttglyf.h
+++ b/include/freetype/internal/services/svttglyf.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svttglyf.h                                                             */
-/*                                                                         */
-/*    The FreeType TrueType glyph service.                                 */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner.                                                          */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svttglyf.h
+ *
+ *   The FreeType TrueType glyph service.
+ *
+ * Copyright 2007-2018 by
+ * David Turner.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #ifndef SVTTGLYF_H_
 #define SVTTGLYF_H_
@@ -39,25 +39,12 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ )  \
   static const FT_Service_TTGlyfRec  class_ =                 \
   {                                                           \
     get_location_                                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ )  \
-  void                                                        \
-  FT_Init_Class_ ## class_( FT_Service_TTGlyfRec*  clazz )    \
-  {                                                           \
-    clazz->get_location = get_location_;                      \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
diff --git a/include/freetype/internal/services/svwinfnt.h b/include/freetype/internal/services/svwinfnt.h
index 80d481c..3aaa8a8 100644
--- a/include/freetype/internal/services/svwinfnt.h
+++ b/include/freetype/internal/services/svwinfnt.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svwinfnt.h                                                             */
-/*                                                                         */
-/*    The FreeType Windows FNT/FONT service (specification).               */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svwinfnt.h
+ *
+ *   The FreeType Windows FNT/FONT service (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SVWINFNT_H_
diff --git a/include/freetype/internal/sfnt.h b/include/freetype/internal/sfnt.h
index fb1e327..178d892 100644
--- a/include/freetype/internal/sfnt.h
+++ b/include/freetype/internal/sfnt.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfnt.h                                                                 */
-/*                                                                         */
-/*    High-level `sfnt' driver interface (specification).                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfnt.h
+ *
+ *   High-level `sfnt' driver interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SFNT_H_
@@ -28,43 +28,48 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Init_Face_Func                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    First part of the SFNT face object initialization.  This finds     */
-  /*    the face in a SFNT file or collection, and load its format tag in  */
-  /*    face->format_tag.                                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream     :: The input stream.                                    */
-  /*                                                                       */
-  /*    face       :: A handle to the target face object.                  */
-  /*                                                                       */
-  /*    face_index :: The index of the TrueType font, if we are opening a  */
-  /*                  collection, in bits 0-15.  The numbered instance     */
-  /*                  index~+~1 of a GX (sub)font, if applicable, in bits  */
-  /*                  16-30.                                               */
-  /*                                                                       */
-  /*    num_params :: The number of additional parameters.                 */
-  /*                                                                       */
-  /*    params     :: Optional additional parameters.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The stream cursor must be at the font file's origin.               */
-  /*                                                                       */
-  /*    This function recognizes fonts embedded in a `TrueType             */
-  /*    collection'.                                                       */
-  /*                                                                       */
-  /*    Once the format tag has been validated by the font driver, it      */
-  /*    should then call the TT_Load_Face_Func() callback to read the rest */
-  /*    of the SFNT tables in the object.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Init_Face_Func
+   *
+   * @description:
+   *   First part of the SFNT face object initialization.  This finds
+   *   the face in a SFNT file or collection, and load its format tag in
+   *   face->format_tag.
+   *
+   * @input:
+   *   stream ::
+   *     The input stream.
+   *
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   face_index ::
+   *     The index of the TrueType font, if we are opening a
+   *     collection, in bits 0-15.  The numbered instance
+   *     index~+~1 of a GX (sub)font, if applicable, in bits
+   *     16-30.
+   *
+   *   num_params ::
+   *     The number of additional parameters.
+   *
+   *   params ::
+   *     Optional additional parameters.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   The stream cursor must be at the font file's origin.
+   *
+   *   This function recognizes fonts embedded in a `TrueType
+   *   collection'.
+   *
+   *   Once the format tag has been validated by the font driver, it
+   *   should then call the TT_Load_Face_Func() callback to read the rest
+   *   of the SFNT tables in the object.
+   */
   typedef FT_Error
   (*TT_Init_Face_Func)( FT_Stream      stream,
                         TT_Face        face,
@@ -73,36 +78,41 @@
                         FT_Parameter*  params );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_Face_Func                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Second part of the SFNT face object initialization.  This loads    */
-  /*    the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the    */
-  /*    face object.                                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream     :: The input stream.                                    */
-  /*                                                                       */
-  /*    face       :: A handle to the target face object.                  */
-  /*                                                                       */
-  /*    face_index :: The index of the TrueType font, if we are opening a  */
-  /*                  collection, in bits 0-15.  The numbered instance     */
-  /*                  index~+~1 of a GX (sub)font, if applicable, in bits  */
-  /*                  16-30.                                               */
-  /*                                                                       */
-  /*    num_params :: The number of additional parameters.                 */
-  /*                                                                       */
-  /*    params     :: Optional additional parameters.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function must be called after TT_Init_Face_Func().            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Face_Func
+   *
+   * @description:
+   *   Second part of the SFNT face object initialization.  This loads
+   *   the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the
+   *   face object.
+   *
+   * @input:
+   *   stream ::
+   *     The input stream.
+   *
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   face_index ::
+   *     The index of the TrueType font, if we are opening a
+   *     collection, in bits 0-15.  The numbered instance
+   *     index~+~1 of a GX (sub)font, if applicable, in bits
+   *     16-30.
+   *
+   *   num_params ::
+   *     The number of additional parameters.
+   *
+   *   params ::
+   *     Optional additional parameters.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   This function must be called after TT_Init_Face_Func().
+   */
   typedef FT_Error
   (*TT_Load_Face_Func)( FT_Stream      stream,
                         TT_Face        face,
@@ -111,64 +121,70 @@
                         FT_Parameter*  params );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Done_Face_Func                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A callback used to delete the common SFNT data from a face.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the target face object.                        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function does NOT destroy the face object.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Done_Face_Func
+   *
+   * @description:
+   *   A callback used to delete the common SFNT data from a face.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   * @note:
+   *   This function does NOT destroy the face object.
+   */
   typedef void
   (*TT_Done_Face_Func)( TT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_Any_Func                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load any font table into client memory.                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: The face object to look for.                             */
-  /*                                                                       */
-  /*    tag    :: The tag of table to load.  Use the value 0 if you want   */
-  /*              to access the whole font file, else set this parameter   */
-  /*              to a valid TrueType table tag that you can forge with    */
-  /*              the MAKE_TT_TAG macro.                                   */
-  /*                                                                       */
-  /*    offset :: The starting offset in the table (or the file if         */
-  /*              tag == 0).                                               */
-  /*                                                                       */
-  /*    length :: The address of the decision variable:                    */
-  /*                                                                       */
-  /*                If length == NULL:                                     */
-  /*                  Loads the whole table.  Returns an error if          */
-  /*                  `offset' == 0!                                       */
-  /*                                                                       */
-  /*                If *length == 0:                                       */
-  /*                  Exits immediately; returning the length of the given */
-  /*                  table or of the font file, depending on the value of */
-  /*                  `tag'.                                               */
-  /*                                                                       */
-  /*                If *length != 0:                                       */
-  /*                  Loads the next `length' bytes of table or font,      */
-  /*                  starting at offset `offset' (in table or font too).  */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    buffer :: The address of target buffer.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    TrueType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Any_Func
+   *
+   * @description:
+   *   Load any font table into client memory.
+   *
+   * @input:
+   *   face ::
+   *     The face object to look for.
+   *
+   *   tag ::
+   *     The tag of table to load.  Use the value 0 if you want
+   *     to access the whole font file, else set this parameter
+   *     to a valid TrueType table tag that you can forge with
+   *     the MAKE_TT_TAG macro.
+   *
+   *   offset ::
+   *     The starting offset in the table (or the file if
+   *     tag == 0).
+   *
+   *   length ::
+   *     The address of the decision variable:
+   *
+   *     If length == NULL:
+   *     Loads the whole table.  Returns an error if
+   *     `offset' == 0!
+   *
+   *     If *length == 0:
+   *     Exits immediately; returning the length of the given
+   *     table or of the font file, depending on the value of
+   *     `tag'.
+   *
+   *     If *length != 0:
+   *     Loads the next `length' bytes of table or font,
+   *     starting at offset `offset' (in table or font too).
+   *
+   * @output:
+   *   buffer ::
+   *     The address of target buffer.
+   *
+   * @return:
+   *   TrueType error code.  0 means success.
+   */
   typedef FT_Error
   (*TT_Load_Any_Func)( TT_Face    face,
                        FT_ULong   tag,
@@ -177,34 +193,40 @@
                        FT_ULong*  length );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Find_SBit_Image_Func                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Check whether an embedded bitmap (an `sbit') exists for a given    */
-  /*    glyph, at a given strike.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face          :: The target face object.                           */
-  /*                                                                       */
-  /*    glyph_index   :: The glyph index.                                  */
-  /*                                                                       */
-  /*    strike_index  :: The current strike index.                         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    arange        :: The SBit range containing the glyph index.        */
-  /*                                                                       */
-  /*    astrike       :: The SBit strike containing the glyph index.       */
-  /*                                                                       */
-  /*    aglyph_offset :: The offset of the glyph data in `EBDT' table.     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.  Returns                    */
-  /*    SFNT_Err_Invalid_Argument if no sbit exists for the requested      */
-  /*    glyph.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Find_SBit_Image_Func
+   *
+   * @description:
+   *   Check whether an embedded bitmap (an `sbit') exists for a given
+   *   glyph, at a given strike.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   glyph_index ::
+   *     The glyph index.
+   *
+   *   strike_index ::
+   *     The current strike index.
+   *
+   * @output:
+   *   arange ::
+   *     The SBit range containing the glyph index.
+   *
+   *   astrike ::
+   *     The SBit strike containing the glyph index.
+   *
+   *   aglyph_offset ::
+   *     The offset of the glyph data in `EBDT' table.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.  Returns
+   *   SFNT_Err_Invalid_Argument if no sbit exists for the requested
+   *   glyph.
+   */
   typedef FT_Error
   (*TT_Find_SBit_Image_Func)( TT_Face          face,
                               FT_UInt          glyph_index,
@@ -214,78 +236,81 @@
                               FT_ULong        *aglyph_offset );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_SBit_Metrics_Func                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the big metrics for a given embedded bitmap.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream      :: The input stream.                                   */
-  /*                                                                       */
-  /*    range       :: The SBit range containing the glyph.                */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    big_metrics :: A big SBit metrics structure for the glyph.         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The stream cursor must be positioned at the glyph's offset within  */
-  /*    the `EBDT' table before the call.                                  */
-  /*                                                                       */
-  /*    If the image format uses variable metrics, the stream cursor is    */
-  /*    positioned just after the metrics header in the `EBDT' table on    */
-  /*    function exit.                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_SBit_Metrics_Func
+   *
+   * @description:
+   *   Get the big metrics for a given embedded bitmap.
+   *
+   * @input:
+   *   stream ::
+   *     The input stream.
+   *
+   *   range ::
+   *     The SBit range containing the glyph.
+   *
+   * @output:
+   *   big_metrics ::
+   *     A big SBit metrics structure for the glyph.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   The stream cursor must be positioned at the glyph's offset within
+   *   the `EBDT' table before the call.
+   *
+   *   If the image format uses variable metrics, the stream cursor is
+   *   positioned just after the metrics header in the `EBDT' table on
+   *   function exit.
+   */
   typedef FT_Error
   (*TT_Load_SBit_Metrics_Func)( FT_Stream        stream,
                                 TT_SBit_Range    range,
                                 TT_SBit_Metrics  metrics );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_SBit_Image_Func                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load a given glyph sbit image from the font resource.  This also   */
-  /*    returns its metrics.                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      The target face object.                                          */
-  /*                                                                       */
-  /*    strike_index ::                                                    */
-  /*      The strike index.                                                */
-  /*                                                                       */
-  /*    glyph_index ::                                                     */
-  /*      The current glyph index.                                         */
-  /*                                                                       */
-  /*    load_flags ::                                                      */
-  /*      The current load flags.                                          */
-  /*                                                                       */
-  /*    stream ::                                                          */
-  /*      The input stream.                                                */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    amap ::                                                            */
-  /*      The target pixmap.                                               */
-  /*                                                                       */
-  /*    ametrics ::                                                        */
-  /*      A big sbit metrics structure for the glyph image.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.  Returns an error if no     */
-  /*    glyph sbit exists for the index.                                   */
-  /*                                                                       */
-  /*  <Note>                                                               */
-  /*    The `map.buffer' field is always freed before the glyph is loaded. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_SBit_Image_Func
+   *
+   * @description:
+   *   Load a given glyph sbit image from the font resource.  This also
+   *   returns its metrics.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   strike_index ::
+   *     The strike index.
+   *
+   *   glyph_index ::
+   *     The current glyph index.
+   *
+   *   load_flags ::
+   *     The current load flags.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @output:
+   *   amap ::
+   *     The target pixmap.
+   *
+   *   ametrics ::
+   *     A big sbit metrics structure for the glyph image.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.  Returns an error if no
+   *   glyph sbit exists for the index.
+   *
+   * @note:
+   *   The `map.buffer' field is always freed before the glyph is loaded.
+   */
   typedef FT_Error
   (*TT_Load_SBit_Image_Func)( TT_Face              face,
                               FT_ULong             strike_index,
@@ -296,130 +321,146 @@
                               TT_SBit_MetricsRec  *ametrics );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Set_SBit_Strike_Func                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Select an sbit strike for a given size request.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face          :: The target face object.                           */
-  /*                                                                       */
-  /*    req           :: The size request.                                 */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    astrike_index :: The index of the sbit strike.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.  Returns an error if no     */
-  /*    sbit strike exists for the selected ppem values.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Set_SBit_Strike_Func
+   *
+   * @description:
+   *   Select an sbit strike for a given size request.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   req ::
+   *     The size request.
+   *
+   * @output:
+   *   astrike_index ::
+   *     The index of the sbit strike.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.  Returns an error if no
+   *   sbit strike exists for the selected ppem values.
+   */
   typedef FT_Error
   (*TT_Set_SBit_Strike_Func)( TT_Face          face,
                               FT_Size_Request  req,
                               FT_ULong*        astrike_index );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_Strike_Metrics_Func                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the metrics of a given strike.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face          :: The target face object.                           */
-  /*                                                                       */
-  /*    strike_index  :: The strike index.                                 */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    metrics       :: the metrics of the strike.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.  Returns an error if no     */
-  /*    such sbit strike exists.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Strike_Metrics_Func
+   *
+   * @description:
+   *   Load the metrics of a given strike.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   strike_index ::
+   *     The strike index.
+   *
+   * @output:
+   *   metrics ::
+   *     the metrics of the strike.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.  Returns an error if no
+   *   such sbit strike exists.
+   */
   typedef FT_Error
   (*TT_Load_Strike_Metrics_Func)( TT_Face           face,
                                   FT_ULong          strike_index,
                                   FT_Size_Metrics*  metrics );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Get_PS_Name_Func                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the PostScript glyph name of a glyph.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    idx  :: The glyph index.                                           */
-  /*                                                                       */
-  /*    PSname :: The address of a string pointer.  Will be NULL in case   */
-  /*              of error, otherwise it is a pointer to the glyph name.   */
-  /*                                                                       */
-  /*              You must not modify the returned string!                 */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_PS_Name_Func
+   *
+   * @description:
+   *   Get the PostScript glyph name of a glyph.
+   *
+   * @input:
+   *   idx ::
+   *     The glyph index.
+   *
+   *   PSname ::
+   *     The address of a string pointer.  Will be NULL in case
+   *     of error, otherwise it is a pointer to the glyph name.
+   *
+   *     You must not modify the returned string!
+   *
+   * @output:
+   *   FreeType error code.  0 means success.
+   */
   typedef FT_Error
   (*TT_Get_PS_Name_Func)( TT_Face      face,
                           FT_UInt      idx,
                           FT_String**  PSname );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_Metrics_Func                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load a metrics table, which is a table with a horizontal and a     */
-  /*    vertical version.                                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the target face object.                    */
-  /*                                                                       */
-  /*    stream   :: The input stream.                                      */
-  /*                                                                       */
-  /*    vertical :: A boolean flag.  If set, load the vertical one.        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Metrics_Func
+   *
+   * @description:
+   *   Load a metrics table, which is a table with a horizontal and a
+   *   vertical version.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   *   vertical ::
+   *     A boolean flag.  If set, load the vertical one.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   */
   typedef FT_Error
   (*TT_Load_Metrics_Func)( TT_Face    face,
                            FT_Stream  stream,
                            FT_Bool    vertical );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Get_Metrics_Func                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the horizontal or vertical header in a face object.           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the target face object.                    */
-  /*                                                                       */
-  /*    vertical :: A boolean flag.  If set, load vertical metrics.        */
-  /*                                                                       */
-  /*    gindex   :: The glyph index.                                       */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    abearing :: The horizontal (or vertical) bearing.  Set to zero in  */
-  /*                case of error.                                         */
-  /*                                                                       */
-  /*    aadvance :: The horizontal (or vertical) advance.  Set to zero in  */
-  /*                case of error.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_Metrics_Func
+   *
+   * @description:
+   *   Load the horizontal or vertical header in a face object.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   vertical ::
+   *     A boolean flag.  If set, load vertical metrics.
+   *
+   *   gindex ::
+   *     The glyph index.
+   *
+   * @output:
+   *   abearing ::
+   *     The horizontal (or vertical) bearing.  Set to zero in
+   *     case of error.
+   *
+   *   aadvance ::
+   *     The horizontal (or vertical) advance.  Set to zero in
+   *     case of error.
+   */
   typedef void
   (*TT_Get_Metrics_Func)( TT_Face     face,
                           FT_Bool     vertical,
@@ -428,57 +469,169 @@
                           FT_UShort*  aadvance );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Get_Name_Func                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    From the `name' table, return a given ENGLISH name record in       */
-  /*    ASCII.                                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the source face object.                    */
-  /*                                                                       */
-  /*    nameid   :: The name id of the name record to return.              */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    name     :: The address of an allocated string pointer.  NULL if   */
-  /*                no name is present.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Set_Palette_Func
+   *
+   * @description:
+   *   Load the colors into `face->palette' for a given palette index.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   idx ::
+   *     The palette index.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   */
+  typedef FT_Error
+  (*TT_Set_Palette_Func)( TT_Face  face,
+                          FT_UInt  idx );
+
+
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_Colr_Layer_Func
+   *
+   * @description:
+   *   Iteratively get the color layer data of a given glyph index.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   base_glyph ::
+   *     The glyph index the colored glyph layers are associated with.
+   *
+   * @inout:
+   *   iterator ::
+   *     An @FT_LayerIterator object.  For the first call you should set
+   *     `iterator->p' to NULL.  For all following calls, simply use the
+   *     same object again.
+   *
+   * @output:
+   *   aglyph_index ::
+   *     The glyph index of the current layer.
+   *
+   *   acolor_index ::
+   *     The color index into the font face's color palette of the current
+   *     layer.  The value 0xFFFF is special; it doesn't reference a palette
+   *     entry but indicates that the text foreground color should be used
+   *     instead (to be set up by the application outside of FreeType).
+   *
+   * @return:
+   *   Value~1 if everything is OK.  If there are no more layers (or if
+   *   there are no layers at all), value~0 gets returned.  In case of an
+   *   error, value~0 is returned also.
+   */
+  typedef FT_Bool
+  (*TT_Get_Colr_Layer_Func)( TT_Face            face,
+                             FT_UInt            base_glyph,
+                             FT_UInt           *aglyph_index,
+                             FT_UInt           *acolor_index,
+                             FT_LayerIterator*  iterator );
+
+
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Blend_Colr_Func
+   *
+   * @description:
+   *   Blend the bitmap in `new_glyph' into `base_glyph' using the color
+   *   specified by `color_index'.  If `color_index' is 0xFFFF, use
+   *   `face->foreground_color' if `face->have_foreground_color' is set.
+   *   Otherwise check `face->palette_data.palette_flags': If present and
+   *   @FT_PALETTE_FOR_DARK_BACKGROUND is set, use BGRA value 0xFFFFFFFF
+   *   (white opaque).  Otherwise use BGRA value 0x000000FF (black opaque).
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   color_index ::
+   *     Color index from the COLR table.
+   *
+   *   base_glyph ::
+   *     Slot for bitmap to be merged into.  The underlying
+   *     bitmap may get reallocated.
+   *
+   *   new_glyph ::
+   *     Slot to be incooperated into `base_glyph'.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.  Returns an error if
+   *   color_index is invalid or reallocation fails.
+   */
+  typedef FT_Error
+  (*TT_Blend_Colr_Func)( TT_Face       face,
+                         FT_UInt       color_index,
+                         FT_GlyphSlot  base_glyph,
+                         FT_GlyphSlot  new_glyph );
+
+
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_Name_Func
+   *
+   * @description:
+   *   From the `name' table, return a given ENGLISH name record in
+   *   ASCII.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   nameid ::
+   *     The name id of the name record to return.
+   *
+   * @inout:
+   *   name ::
+   *     The address of an allocated string pointer.  NULL if
+   *     no name is present.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   */
   typedef FT_Error
   (*TT_Get_Name_Func)( TT_Face      face,
                        FT_UShort    nameid,
                        FT_String**  name );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Get_Name_ID_Func                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Search whether an ENGLISH version for a given name ID is in the    */
-  /*    `name' table.                                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the source face object.                    */
-  /*                                                                       */
-  /*    nameid   :: The name id of the name record to return.              */
-  /*                                                                       */
-  /* <Out>                                                                 */
-  /*    win      :: If non-negative, an index into the `name' table with   */
-  /*                the corresponding (3,1) or (3,0) Windows entry.        */
-  /*                                                                       */
-  /*    apple    :: If non-negative, an index into the `name' table with   */
-  /*                the corresponding (1,0) Apple entry.                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    1 if there is either a win or apple entry (or both), 0 otheriwse.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_Name_ID_Func
+   *
+   * @description:
+   *   Search whether an ENGLISH version for a given name ID is in the
+   *   `name' table.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   nameid ::
+   *     The name id of the name record to return.
+   *
+   * @output:
+   *   win ::
+   *     If non-negative, an index into the `name' table with
+   *     the corresponding (3,1) or (3,0) Windows entry.
+   *
+   *   apple ::
+   *     If non-negative, an index into the `name' table with
+   *     the corresponding (1,0) Apple entry.
+   *
+   * @return:
+   *   1 if there is either a win or apple entry (or both), 0 otheriwse.
+   */
   typedef FT_Bool
   (*TT_Get_Name_ID_Func)( TT_Face    face,
                           FT_UShort  nameid,
@@ -486,42 +639,45 @@
                           FT_Int    *apple );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_Table_Func                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load a given TrueType table.                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: The input stream.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The function uses `face->goto_table' to seek the stream to the     */
-  /*    start of the table, except while loading the font directory.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Table_Func
+   *
+   * @description:
+   *   Load a given TrueType table.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   The function uses `face->goto_table' to seek the stream to the
+   *   start of the table, except while loading the font directory.
+   */
   typedef FT_Error
   (*TT_Load_Table_Func)( TT_Face    face,
                          FT_Stream  stream );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Free_Table_Func                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Free a given TrueType table.                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the target face object.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Free_Table_Func
+   *
+   * @description:
+   *   Free a given TrueType table.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   */
   typedef void
   (*TT_Free_Table_Func)( TT_Face  face );
 
@@ -547,18 +703,18 @@
                              FT_UInt  right_glyph );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    SFNT_Interface                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure holds pointers to the functions used to load and    */
-  /*    free the basic tables that are required in a `sfnt' font file.     */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    Check the various xxx_Func() descriptions for details.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   SFNT_Interface
+   *
+   * @description:
+   *   This structure holds pointers to the functions used to load and
+   *   free the basic tables that are required in a `sfnt' font file.
+   *
+   * @fields:
+   *   Check the various xxx_Func() descriptions for details.
+   */
   typedef struct  SFNT_Interface_
   {
     TT_Loader_GotoTableFunc      goto_table;
@@ -616,6 +772,14 @@
     TT_Set_SBit_Strike_Func      set_sbit_strike;
     TT_Load_Strike_Metrics_Func  load_strike_metrics;
 
+    TT_Load_Table_Func           load_cpal;
+    TT_Load_Table_Func           load_colr;
+    TT_Free_Table_Func           free_cpal;
+    TT_Free_Table_Func           free_colr;
+    TT_Set_Palette_Func          set_palette;
+    TT_Get_Colr_Layer_Func       get_colr_layer;
+    TT_Blend_Colr_Func           colr_blend;
+
     TT_Get_Metrics_Func          get_metrics;
 
     TT_Get_Name_Func             get_name;
@@ -627,7 +791,6 @@
   /* transitional */
   typedef SFNT_Interface*   SFNT_Service;
 
-#ifndef FT_CONFIG_OPTION_PIC
 
 #define FT_DEFINE_SFNT_INTERFACE(        \
           class_,                        \
@@ -659,6 +822,13 @@
           free_eblc_,                    \
           set_sbit_strike_,              \
           load_strike_metrics_,          \
+          load_cpal_,                    \
+          load_colr_,                    \
+          free_cpal_,                    \
+          free_colr_,                    \
+          set_palette_,                  \
+          get_colr_layer_,               \
+          colr_blend_,                   \
           get_metrics_,                  \
           get_name_,                     \
           get_name_id_ )                 \
@@ -692,89 +862,18 @@
     free_eblc_,                          \
     set_sbit_strike_,                    \
     load_strike_metrics_,                \
+    load_cpal_,                          \
+    load_colr_,                          \
+    free_cpal_,                          \
+    free_colr_,                          \
+    set_palette_,                        \
+    get_colr_layer_,                     \
+    colr_blend_,                         \
     get_metrics_,                        \
     get_name_,                           \
     get_name_id_                         \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_INTERNAL( a, a_ )  \
-          clazz->a = a_;
-
-#define FT_DEFINE_SFNT_INTERFACE(                       \
-          class_,                                       \
-          goto_table_,                                  \
-          init_face_,                                   \
-          load_face_,                                   \
-          done_face_,                                   \
-          get_interface_,                               \
-          load_any_,                                    \
-          load_head_,                                   \
-          load_hhea_,                                   \
-          load_cmap_,                                   \
-          load_maxp_,                                   \
-          load_os2_,                                    \
-          load_post_,                                   \
-          load_name_,                                   \
-          free_name_,                                   \
-          load_kern_,                                   \
-          load_gasp_,                                   \
-          load_pclt_,                                   \
-          load_bhed_,                                   \
-          load_sbit_image_,                             \
-          get_psname_,                                  \
-          free_psnames_,                                \
-          get_kerning_,                                 \
-          load_font_dir_,                               \
-          load_hmtx_,                                   \
-          load_eblc_,                                   \
-          free_eblc_,                                   \
-          set_sbit_strike_,                             \
-          load_strike_metrics_,                         \
-          get_metrics_,                                 \
-          get_name_,                                    \
-          get_name_id_ )                                \
-  void                                                  \
-  FT_Init_Class_ ## class_( FT_Library       library,   \
-                            SFNT_Interface*  clazz )    \
-  {                                                     \
-    FT_UNUSED( library );                               \
-                                                        \
-    clazz->goto_table          = goto_table_;           \
-    clazz->init_face           = init_face_;            \
-    clazz->load_face           = load_face_;            \
-    clazz->done_face           = done_face_;            \
-    clazz->get_interface       = get_interface_;        \
-    clazz->load_any            = load_any_;             \
-    clazz->load_head           = load_head_;            \
-    clazz->load_hhea           = load_hhea_;            \
-    clazz->load_cmap           = load_cmap_;            \
-    clazz->load_maxp           = load_maxp_;            \
-    clazz->load_os2            = load_os2_;             \
-    clazz->load_post           = load_post_;            \
-    clazz->load_name           = load_name_;            \
-    clazz->free_name           = free_name_;            \
-    clazz->load_kern           = load_kern_;            \
-    clazz->load_gasp           = load_gasp_;            \
-    clazz->load_pclt           = load_pclt_;            \
-    clazz->load_bhed           = load_bhed_;            \
-    clazz->load_sbit_image     = load_sbit_image_;      \
-    clazz->get_psname          = get_psname_;           \
-    clazz->free_psnames        = free_psnames_;         \
-    clazz->get_kerning         = get_kerning_;          \
-    clazz->load_font_dir       = load_font_dir_;        \
-    clazz->load_hmtx           = load_hmtx_;            \
-    clazz->load_eblc           = load_eblc_;            \
-    clazz->free_eblc           = free_eblc_;            \
-    clazz->set_sbit_strike     = set_sbit_strike_;      \
-    clazz->load_strike_metrics = load_strike_metrics_;  \
-    clazz->get_metrics         = get_metrics_;          \
-    clazz->get_name            = get_name_;             \
-    clazz->get_name_id         = get_name_id_;          \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 FT_END_HEADER
 
diff --git a/include/freetype/internal/t1types.h b/include/freetype/internal/t1types.h
index 2118e33..67c3857 100644
--- a/include/freetype/internal/t1types.h
+++ b/include/freetype/internal/t1types.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1types.h                                                              */
-/*                                                                         */
-/*    Basic Type1/Type2 type definitions and interface (specification      */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1types.h
+ *
+ *   Basic Type1/Type2 type definitions and interface (specification
+ *   only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1TYPES_H_
@@ -45,28 +45,33 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    T1_EncodingRec                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure modeling a custom encoding.                            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_chars  :: The number of character codes in the encoding.       */
-  /*                  Usually 256.                                         */
-  /*                                                                       */
-  /*    code_first :: The lowest valid character code in the encoding.     */
-  /*                                                                       */
-  /*    code_last  :: The highest valid character code in the encoding     */
-  /*                  + 1. When equal to code_first there are no valid     */
-  /*                  character codes.                                     */
-  /*                                                                       */
-  /*    char_index :: An array of corresponding glyph indices.             */
-  /*                                                                       */
-  /*    char_name  :: An array of corresponding glyph names.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   T1_EncodingRec
+   *
+   * @description:
+   *   A structure modeling a custom encoding.
+   *
+   * @fields:
+   *   num_chars ::
+   *     The number of character codes in the encoding.
+   *     Usually 256.
+   *
+   *   code_first ::
+   *     The lowest valid character code in the encoding.
+   *
+   *   code_last ::
+   *     The highest valid character code in the encoding
+   *     + 1. When equal to code_first there are no valid
+   *     character codes.
+   *
+   *   char_index ::
+   *     An array of corresponding glyph indices.
+   *
+   *   char_name ::
+   *     An array of corresponding glyph names.
+   */
   typedef struct  T1_EncodingRecRec_
   {
     FT_Int       num_chars;
diff --git a/include/freetype/internal/tttypes.h b/include/freetype/internal/tttypes.h
index 10dd336..4df6b29 100644
--- a/include/freetype/internal/tttypes.h
+++ b/include/freetype/internal/tttypes.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  tttypes.h                                                              */
-/*                                                                         */
-/*    Basic SFNT/TrueType type definitions and interface (specification    */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * tttypes.h
+ *
+ *   Basic SFNT/TrueType type definitions and interface (specification
+ *   only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTTYPES_H_
@@ -24,6 +24,7 @@
 #include <ft2build.h>
 #include FT_TRUETYPE_TABLES_H
 #include FT_INTERNAL_OBJECTS_H
+#include FT_COLOR_H
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 #include FT_MULTIPLE_MASTERS_H
@@ -46,27 +47,31 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TTC_HeaderRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    TrueType collection header.  This table contains the offsets of    */
-  /*    the font headers of each distinct TrueType face in the file.       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    tag     :: Must be `ttc ' to indicate a TrueType collection.       */
-  /*                                                                       */
-  /*    version :: The version number.                                     */
-  /*                                                                       */
-  /*    count   :: The number of faces in the collection.  The             */
-  /*               specification says this should be an unsigned long, but */
-  /*               we use a signed long since we need the value -1 for     */
-  /*               specific purposes.                                      */
-  /*                                                                       */
-  /*    offsets :: The offsets of the font headers, one per face.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TTC_HeaderRec
+   *
+   * @description:
+   *   TrueType collection header.  This table contains the offsets of
+   *   the font headers of each distinct TrueType face in the file.
+   *
+   * @fields:
+   *   tag ::
+   *     Must be `ttc ' to indicate a TrueType collection.
+   *
+   *   version ::
+   *     The version number.
+   *
+   *   count ::
+   *     The number of faces in the collection.  The
+   *     specification says this should be an unsigned long, but
+   *     we use a signed long since we need the value -1 for
+   *     specific purposes.
+   *
+   *   offsets ::
+   *     The offsets of the font headers, one per face.
+   */
   typedef struct  TTC_HeaderRec_
   {
     FT_ULong   tag;
@@ -77,25 +82,30 @@
   } TTC_HeaderRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    SFNT_HeaderRec                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    SFNT file format header.                                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    format_tag     :: The font format tag.                             */
-  /*                                                                       */
-  /*    num_tables     :: The number of tables in file.                    */
-  /*                                                                       */
-  /*    search_range   :: Must be `16 * (max power of 2 <= num_tables)'.   */
-  /*                                                                       */
-  /*    entry_selector :: Must be log2 of `search_range / 16'.             */
-  /*                                                                       */
-  /*    range_shift    :: Must be `num_tables * 16 - search_range'.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   SFNT_HeaderRec
+   *
+   * @description:
+   *   SFNT file format header.
+   *
+   * @fields:
+   *   format_tag ::
+   *     The font format tag.
+   *
+   *   num_tables ::
+   *     The number of tables in file.
+   *
+   *   search_range ::
+   *     Must be `16 * (max power of 2 <= num_tables)'.
+   *
+   *   entry_selector ::
+   *     Must be log2 of `search_range / 16'.
+   *
+   *   range_shift ::
+   *     Must be `num_tables * 16 - search_range'.
+   */
   typedef struct  SFNT_HeaderRec_
   {
     FT_ULong   format_tag;
@@ -109,24 +119,28 @@
   } SFNT_HeaderRec, *SFNT_Header;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_TableRec                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure describes a given table of a TrueType font.         */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    Tag      :: A four-bytes tag describing the table.                 */
-  /*                                                                       */
-  /*    CheckSum :: The table checksum.  This value can be ignored.        */
-  /*                                                                       */
-  /*    Offset   :: The offset of the table from the start of the TrueType */
-  /*                font in its resource.                                  */
-  /*                                                                       */
-  /*    Length   :: The table length (in bytes).                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_TableRec
+   *
+   * @description:
+   *   This structure describes a given table of a TrueType font.
+   *
+   * @fields:
+   *   Tag ::
+   *     A four-bytes tag describing the table.
+   *
+   *   CheckSum ::
+   *     The table checksum.  This value can be ignored.
+   *
+   *   Offset ::
+   *     The offset of the table from the start of the TrueType
+   *     font in its resource.
+   *
+   *   Length ::
+   *     The table length (in bytes).
+   */
   typedef struct  TT_TableRec_
   {
     FT_ULong  Tag;        /*        table type */
@@ -137,19 +151,19 @@
   } TT_TableRec, *TT_Table;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    WOFF_HeaderRec                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    WOFF file format header.                                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    See                                                                */
-  /*                                                                       */
-  /*      https://www.w3.org/TR/WOFF/#WOFFHeader                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   WOFF_HeaderRec
+   *
+   * @description:
+   *   WOFF file format header.
+   *
+   * @fields:
+   *   See
+   *
+   *     https://www.w3.org/TR/WOFF/#WOFFHeader
+   */
   typedef struct  WOFF_HeaderRec_
   {
     FT_ULong   signature;
@@ -169,30 +183,36 @@
   } WOFF_HeaderRec, *WOFF_Header;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    WOFF_TableRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure describes a given table of a WOFF font.             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    Tag        :: A four-bytes tag describing the table.               */
-  /*                                                                       */
-  /*    Offset     :: The offset of the table from the start of the WOFF   */
-  /*                  font in its resource.                                */
-  /*                                                                       */
-  /*    CompLength :: Compressed table length (in bytes).                  */
-  /*                                                                       */
-  /*    OrigLength :: Uncompressed table length (in bytes).                */
-  /*                                                                       */
-  /*    CheckSum   :: The table checksum.  This value can be ignored.      */
-  /*                                                                       */
-  /*    OrigOffset :: The uncompressed table file offset.  This value gets */
-  /*                  computed while constructing the (uncompressed) SFNT  */
-  /*                  header.  It is not contained in the WOFF file.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   WOFF_TableRec
+   *
+   * @description:
+   *   This structure describes a given table of a WOFF font.
+   *
+   * @fields:
+   *   Tag ::
+   *     A four-bytes tag describing the table.
+   *
+   *   Offset ::
+   *     The offset of the table from the start of the WOFF
+   *     font in its resource.
+   *
+   *   CompLength ::
+   *     Compressed table length (in bytes).
+   *
+   *   OrigLength ::
+   *     Uncompressed table length (in bytes).
+   *
+   *   CheckSum ::
+   *     The table checksum.  This value can be ignored.
+   *
+   *   OrigOffset ::
+   *     The uncompressed table file offset.  This value gets
+   *     computed while constructing the (uncompressed) SFNT
+   *     header.  It is not contained in the WOFF file.
+   */
   typedef struct  WOFF_TableRec_
   {
     FT_ULong  Tag;           /* table ID                  */
@@ -206,20 +226,22 @@
   } WOFF_TableRec, *WOFF_Table;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_LongMetricsRec                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure modeling the long metrics of the `hmtx' and `vmtx'     */
-  /*    TrueType tables.  The values are expressed in font units.          */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    advance :: The advance width or height for the glyph.              */
-  /*                                                                       */
-  /*    bearing :: The left-side or top-side bearing for the glyph.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_LongMetricsRec
+   *
+   * @description:
+   *   A structure modeling the long metrics of the `hmtx' and `vmtx'
+   *   TrueType tables.  The values are expressed in font units.
+   *
+   * @fields:
+   *   advance ::
+   *     The advance width or height for the glyph.
+   *
+   *   bearing ::
+   *     The left-side or top-side bearing for the glyph.
+   */
   typedef struct  TT_LongMetricsRec_
   {
     FT_UShort  advance;
@@ -228,45 +250,52 @@
   } TT_LongMetricsRec, *TT_LongMetrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    TT_ShortMetrics                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple type to model the short metrics of the `hmtx' and `vmtx'  */
-  /*    tables.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   TT_ShortMetrics
+   *
+   * @description:
+   *   A simple type to model the short metrics of the `hmtx' and `vmtx'
+   *   tables.
+   */
   typedef FT_Short  TT_ShortMetrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_NameRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure modeling TrueType name records.  Name records are used */
-  /*    to store important strings like family name, style name,           */
-  /*    copyright, etc. in _localized_ versions (i.e., language, encoding, */
-  /*    etc).                                                              */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    platformID   :: The ID of the name's encoding platform.            */
-  /*                                                                       */
-  /*    encodingID   :: The platform-specific ID for the name's encoding.  */
-  /*                                                                       */
-  /*    languageID   :: The platform-specific ID for the name's language.  */
-  /*                                                                       */
-  /*    nameID       :: The ID specifying what kind of name this is.       */
-  /*                                                                       */
-  /*    stringLength :: The length of the string in bytes.                 */
-  /*                                                                       */
-  /*    stringOffset :: The offset to the string in the `name' table.      */
-  /*                                                                       */
-  /*    string       :: A pointer to the string's bytes.  Note that these  */
-  /*                    are usually UTF-16 encoded characters.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_NameRec
+   *
+   * @description:
+   *   A structure modeling TrueType name records.  Name records are used
+   *   to store important strings like family name, style name,
+   *   copyright, etc. in _localized_ versions (i.e., language, encoding,
+   *   etc).
+   *
+   * @fields:
+   *   platformID ::
+   *     The ID of the name's encoding platform.
+   *
+   *   encodingID ::
+   *     The platform-specific ID for the name's encoding.
+   *
+   *   languageID ::
+   *     The platform-specific ID for the name's language.
+   *
+   *   nameID ::
+   *     The ID specifying what kind of name this is.
+   *
+   *   stringLength ::
+   *     The length of the string in bytes.
+   *
+   *   stringOffset ::
+   *     The offset to the string in the `name' table.
+   *
+   *   string ::
+   *     A pointer to the string's bytes.  Note that these
+   *     are usually UTF-16 encoded characters.
+   */
   typedef struct  TT_NameRec_
   {
     FT_UShort  platformID;
@@ -284,23 +313,26 @@
   } TT_NameRec, *TT_Name;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_LangTagRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure modeling language tag records in SFNT `name' tables,   */
-  /*    introduced in OpenType version 1.6.                                */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    stringLength :: The length of the string in bytes.                 */
-  /*                                                                       */
-  /*    stringOffset :: The offset to the string in the `name' table.      */
-  /*                                                                       */
-  /*    string       :: A pointer to the string's bytes.  Note that these  */
-  /*                    are UTF-16BE encoded characters.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_LangTagRec
+   *
+   * @description:
+   *   A structure modeling language tag records in SFNT `name' tables,
+   *   introduced in OpenType version 1.6.
+   *
+   * @fields:
+   *   stringLength ::
+   *     The length of the string in bytes.
+   *
+   *   stringOffset ::
+   *     The offset to the string in the `name' table.
+   *
+   *   string ::
+   *     A pointer to the string's bytes.  Note that these
+   *     are UTF-16BE encoded characters.
+   */
   typedef struct TT_LangTagRec_
   {
     FT_UShort  stringLength;
@@ -314,30 +346,37 @@
   } TT_LangTagRec, *TT_LangTag;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_NameTableRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure modeling the TrueType name table.                      */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    format            :: The format of the name table.                 */
-  /*                                                                       */
-  /*    numNameRecords    :: The number of names in table.                 */
-  /*                                                                       */
-  /*    storageOffset     :: The offset of the name table in the `name'    */
-  /*                         TrueType table.                               */
-  /*                                                                       */
-  /*    names             :: An array of name records.                     */
-  /*                                                                       */
-  /*    numLangTagRecords :: The number of language tags in table.         */
-  /*                                                                       */
-  /*    langTags          :: An array of language tag records.             */
-  /*                                                                       */
-  /*    stream            :: The file's input stream.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_NameTableRec
+   *
+   * @description:
+   *   A structure modeling the TrueType name table.
+   *
+   * @fields:
+   *   format ::
+   *     The format of the name table.
+   *
+   *   numNameRecords ::
+   *     The number of names in table.
+   *
+   *   storageOffset ::
+   *     The offset of the name table in the `name'
+   *     TrueType table.
+   *
+   *   names ::
+   *     An array of name records.
+   *
+   *   numLangTagRecords ::
+   *     The number of language tags in table.
+   *
+   *   langTags ::
+   *     An array of language tag records.
+   *
+   *   stream ::
+   *     The file's input stream.
+   */
   typedef struct  TT_NameTableRec_
   {
     FT_UShort       format;
@@ -364,21 +403,23 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_GaspRangeRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A tiny structure used to model a gasp range according to the       */
-  /*    TrueType specification.                                            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    maxPPEM  :: The maximum ppem value to which `gaspFlag' applies.    */
-  /*                                                                       */
-  /*    gaspFlag :: A flag describing the grid-fitting and anti-aliasing   */
-  /*                modes to be used.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_GaspRangeRec
+   *
+   * @description:
+   *   A tiny structure used to model a gasp range according to the
+   *   TrueType specification.
+   *
+   * @fields:
+   *   maxPPEM ::
+   *     The maximum ppem value to which `gaspFlag' applies.
+   *
+   *   gaspFlag ::
+   *     A flag describing the grid-fitting and anti-aliasing
+   *     modes to be used.
+   */
   typedef struct  TT_GaspRangeRec_
   {
     FT_UShort  maxPPEM;
@@ -391,22 +432,25 @@
 #define TT_GASP_DOGRAY   0x02
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_GaspRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure modeling the TrueType `gasp' table used to specify     */
-  /*    grid-fitting and anti-aliasing behaviour.                          */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    version    :: The version number.                                  */
-  /*                                                                       */
-  /*    numRanges  :: The number of gasp ranges in table.                  */
-  /*                                                                       */
-  /*    gaspRanges :: An array of gasp ranges.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_GaspRec
+   *
+   * @description:
+   *   A structure modeling the TrueType `gasp' table used to specify
+   *   grid-fitting and anti-aliasing behaviour.
+   *
+   * @fields:
+   *   version ::
+   *     The version number.
+   *
+   *   numRanges ::
+   *     The number of gasp ranges in table.
+   *
+   *   gaspRanges ::
+   *     An array of gasp ranges.
+   */
   typedef struct  TT_Gasp_
   {
     FT_UShort     version;
@@ -429,33 +473,41 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_SBit_MetricsRec                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to hold the big metrics of a given glyph bitmap   */
-  /*    in a TrueType or OpenType font.  These are usually found in the    */
-  /*    `EBDT' (Microsoft) or `bloc' (Apple) table.                        */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    height       :: The glyph height in pixels.                        */
-  /*                                                                       */
-  /*    width        :: The glyph width in pixels.                         */
-  /*                                                                       */
-  /*    horiBearingX :: The horizontal left bearing.                       */
-  /*                                                                       */
-  /*    horiBearingY :: The horizontal top bearing.                        */
-  /*                                                                       */
-  /*    horiAdvance  :: The horizontal advance.                            */
-  /*                                                                       */
-  /*    vertBearingX :: The vertical left bearing.                         */
-  /*                                                                       */
-  /*    vertBearingY :: The vertical top bearing.                          */
-  /*                                                                       */
-  /*    vertAdvance  :: The vertical advance.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_SBit_MetricsRec
+   *
+   * @description:
+   *   A structure used to hold the big metrics of a given glyph bitmap
+   *   in a TrueType or OpenType font.  These are usually found in the
+   *   `EBDT' (Microsoft) or `bloc' (Apple) table.
+   *
+   * @fields:
+   *   height ::
+   *     The glyph height in pixels.
+   *
+   *   width ::
+   *     The glyph width in pixels.
+   *
+   *   horiBearingX ::
+   *     The horizontal left bearing.
+   *
+   *   horiBearingY ::
+   *     The horizontal top bearing.
+   *
+   *   horiAdvance ::
+   *     The horizontal advance.
+   *
+   *   vertBearingX ::
+   *     The vertical left bearing.
+   *
+   *   vertBearingY ::
+   *     The vertical top bearing.
+   *
+   *   vertAdvance ::
+   *     The vertical advance.
+   */
   typedef struct  TT_SBit_MetricsRec_
   {
     FT_UShort  height;
@@ -472,27 +524,32 @@
   } TT_SBit_MetricsRec, *TT_SBit_Metrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_SBit_SmallMetricsRec                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to hold the small metrics of a given glyph bitmap */
-  /*    in a TrueType or OpenType font.  These are usually found in the    */
-  /*    `EBDT' (Microsoft) or the `bdat' (Apple) table.                    */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    height   :: The glyph height in pixels.                            */
-  /*                                                                       */
-  /*    width    :: The glyph width in pixels.                             */
-  /*                                                                       */
-  /*    bearingX :: The left-side bearing.                                 */
-  /*                                                                       */
-  /*    bearingY :: The top-side bearing.                                  */
-  /*                                                                       */
-  /*    advance  :: The advance width or height.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_SBit_SmallMetricsRec
+   *
+   * @description:
+   *   A structure used to hold the small metrics of a given glyph bitmap
+   *   in a TrueType or OpenType font.  These are usually found in the
+   *   `EBDT' (Microsoft) or the `bdat' (Apple) table.
+   *
+   * @fields:
+   *   height ::
+   *     The glyph height in pixels.
+   *
+   *   width ::
+   *     The glyph width in pixels.
+   *
+   *   bearingX ::
+   *     The left-side bearing.
+   *
+   *   bearingY ::
+   *     The top-side bearing.
+   *
+   *   advance ::
+   *     The advance width or height.
+   */
   typedef struct  TT_SBit_Small_Metrics_
   {
     FT_Byte  height;
@@ -505,57 +562,68 @@
   } TT_SBit_SmallMetricsRec, *TT_SBit_SmallMetrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_SBit_LineMetricsRec                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to describe the text line metrics of a given      */
-  /*    bitmap strike, for either a horizontal or vertical layout.         */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    ascender                :: The ascender in pixels.                 */
-  /*                                                                       */
-  /*    descender               :: The descender in pixels.                */
-  /*                                                                       */
-  /*    max_width               :: The maximum glyph width in pixels.      */
-  /*                                                                       */
-  /*    caret_slope_enumerator  :: Rise of the caret slope, typically set  */
-  /*                               to 1 for non-italic fonts.              */
-  /*                                                                       */
-  /*    caret_slope_denominator :: Rise of the caret slope, typically set  */
-  /*                               to 0 for non-italic fonts.              */
-  /*                                                                       */
-  /*    caret_offset            :: Offset in pixels to move the caret for  */
-  /*                               proper positioning.                     */
-  /*                                                                       */
-  /*    min_origin_SB           :: Minimum of horiBearingX (resp.          */
-  /*                               vertBearingY).                          */
-  /*    min_advance_SB          :: Minimum of                              */
-  /*                                                                       */
-  /*                                 horizontal advance -                  */
-  /*                                   ( horiBearingX + width )            */
-  /*                                                                       */
-  /*                               resp.                                   */
-  /*                                                                       */
-  /*                                 vertical advance -                    */
-  /*                                   ( vertBearingY + height )           */
-  /*                                                                       */
-  /*    max_before_BL           :: Maximum of horiBearingY (resp.          */
-  /*                               vertBearingY).                          */
-  /*                                                                       */
-  /*    min_after_BL            :: Minimum of                              */
-  /*                                                                       */
-  /*                                 horiBearingY - height                 */
-  /*                                                                       */
-  /*                               resp.                                   */
-  /*                                                                       */
-  /*                                 vertBearingX - width                  */
-  /*                                                                       */
-  /*    pads                    :: Unused (to make the size of the record  */
-  /*                               a multiple of 32 bits.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_SBit_LineMetricsRec
+   *
+   * @description:
+   *   A structure used to describe the text line metrics of a given
+   *   bitmap strike, for either a horizontal or vertical layout.
+   *
+   * @fields:
+   *   ascender ::
+   *     The ascender in pixels.
+   *
+   *   descender ::
+   *     The descender in pixels.
+   *
+   *   max_width ::
+   *     The maximum glyph width in pixels.
+   *
+   *   caret_slope_enumerator ::
+   *     Rise of the caret slope, typically set
+   *     to 1 for non-italic fonts.
+   *
+   *   caret_slope_denominator ::
+   *     Rise of the caret slope, typically set
+   *     to 0 for non-italic fonts.
+   *
+   *   caret_offset ::
+   *     Offset in pixels to move the caret for
+   *     proper positioning.
+   *
+   *   min_origin_SB ::
+   *     Minimum of horiBearingX (resp.
+   *     vertBearingY).
+   *   min_advance_SB ::
+   *     Minimum of
+   *
+   *     horizontal advance -
+   *     ( horiBearingX + width )
+   *
+   *     resp.
+   *
+   *     vertical advance -
+   *     ( vertBearingY + height )
+   *
+   *   max_before_BL ::
+   *     Maximum of horiBearingY (resp.
+   *     vertBearingY).
+   *
+   *   min_after_BL ::
+   *     Minimum of
+   *
+   *     horiBearingY - height
+   *
+   *     resp.
+   *
+   *     vertBearingX - width
+   *
+   *   pads ::
+   *     Unused (to make the size of the record
+   *     a multiple of 32 bits.
+   */
   typedef struct  TT_SBit_LineMetricsRec_
   {
     FT_Char  ascender;
@@ -573,43 +641,54 @@
   } TT_SBit_LineMetricsRec, *TT_SBit_LineMetrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_SBit_RangeRec                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A TrueType/OpenType subIndexTable as defined in the `EBLC'         */
-  /*    (Microsoft) or `bloc' (Apple) tables.                              */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    first_glyph   :: The first glyph index in the range.               */
-  /*                                                                       */
-  /*    last_glyph    :: The last glyph index in the range.                */
-  /*                                                                       */
-  /*    index_format  :: The format of index table.  Valid values are 1    */
-  /*                     to 5.                                             */
-  /*                                                                       */
-  /*    image_format  :: The format of `EBDT' image data.                  */
-  /*                                                                       */
-  /*    image_offset  :: The offset to image data in `EBDT'.               */
-  /*                                                                       */
-  /*    image_size    :: For index formats 2 and 5.  This is the size in   */
-  /*                     bytes of each glyph bitmap.                       */
-  /*                                                                       */
-  /*    big_metrics   :: For index formats 2 and 5.  This is the big       */
-  /*                     metrics for each glyph bitmap.                    */
-  /*                                                                       */
-  /*    num_glyphs    :: For index formats 4 and 5.  This is the number of */
-  /*                     glyphs in the code array.                         */
-  /*                                                                       */
-  /*    glyph_offsets :: For index formats 1 and 3.                        */
-  /*                                                                       */
-  /*    glyph_codes   :: For index formats 4 and 5.                        */
-  /*                                                                       */
-  /*    table_offset  :: The offset of the index table in the `EBLC'       */
-  /*                     table.  Only used during strike loading.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_SBit_RangeRec
+   *
+   * @description:
+   *   A TrueType/OpenType subIndexTable as defined in the `EBLC'
+   *   (Microsoft) or `bloc' (Apple) tables.
+   *
+   * @fields:
+   *   first_glyph ::
+   *     The first glyph index in the range.
+   *
+   *   last_glyph ::
+   *     The last glyph index in the range.
+   *
+   *   index_format ::
+   *     The format of index table.  Valid values are 1
+   *     to 5.
+   *
+   *   image_format ::
+   *     The format of `EBDT' image data.
+   *
+   *   image_offset ::
+   *     The offset to image data in `EBDT'.
+   *
+   *   image_size ::
+   *     For index formats 2 and 5.  This is the size in
+   *     bytes of each glyph bitmap.
+   *
+   *   big_metrics ::
+   *     For index formats 2 and 5.  This is the big
+   *     metrics for each glyph bitmap.
+   *
+   *   num_glyphs ::
+   *     For index formats 4 and 5.  This is the number of
+   *     glyphs in the code array.
+   *
+   *   glyph_offsets ::
+   *     For index formats 1 and 3.
+   *
+   *   glyph_codes ::
+   *     For index formats 4 and 5.
+   *
+   *   table_offset ::
+   *     The offset of the index table in the `EBLC'
+   *     table.  Only used during strike loading.
+   */
   typedef struct  TT_SBit_RangeRec_
   {
     FT_UShort           first_glyph;
@@ -631,47 +710,58 @@
   } TT_SBit_RangeRec, *TT_SBit_Range;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_SBit_StrikeRec                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used describe a given bitmap strike in the `EBLC'      */
-  /*    (Microsoft) or `bloc' (Apple) tables.                              */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*   num_index_ranges :: The number of index ranges.                     */
-  /*                                                                       */
-  /*   index_ranges     :: An array of glyph index ranges.                 */
-  /*                                                                       */
-  /*   color_ref        :: Unused.  `color_ref' is put in for future       */
-  /*                       enhancements, but these fields are already      */
-  /*                       in use by other platforms (e.g. Newton).        */
-  /*                       For details, please see                         */
-  /*                                                                       */
-  /*                         https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html */
-  /*                                                                       */
-  /*   hori             :: The line metrics for horizontal layouts.        */
-  /*                                                                       */
-  /*   vert             :: The line metrics for vertical layouts.          */
-  /*                                                                       */
-  /*   start_glyph      :: The lowest glyph index for this strike.         */
-  /*                                                                       */
-  /*   end_glyph        :: The highest glyph index for this strike.        */
-  /*                                                                       */
-  /*   x_ppem           :: The number of horizontal pixels per EM.         */
-  /*                                                                       */
-  /*   y_ppem           :: The number of vertical pixels per EM.           */
-  /*                                                                       */
-  /*   bit_depth        :: The bit depth.  Valid values are 1, 2, 4,       */
-  /*                       and 8.                                          */
-  /*                                                                       */
-  /*   flags            :: Is this a vertical or horizontal strike?  For   */
-  /*                       details, please see                             */
-  /*                                                                       */
-  /*                         https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_SBit_StrikeRec
+   *
+   * @description:
+   *   A structure used describe a given bitmap strike in the `EBLC'
+   *   (Microsoft) or `bloc' (Apple) tables.
+   *
+   * @fields:
+   *  num_index_ranges ::
+   *    The number of index ranges.
+   *
+   *  index_ranges ::
+   *    An array of glyph index ranges.
+   *
+   *  color_ref ::
+   *    Unused.  `color_ref' is put in for future
+   *    enhancements, but these fields are already
+   *    in use by other platforms (e.g. Newton).
+   *    For details, please see
+   *
+   *    https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html
+   *
+   *  hori ::
+   *    The line metrics for horizontal layouts.
+   *
+   *  vert ::
+   *    The line metrics for vertical layouts.
+   *
+   *  start_glyph ::
+   *    The lowest glyph index for this strike.
+   *
+   *  end_glyph ::
+   *    The highest glyph index for this strike.
+   *
+   *  x_ppem ::
+   *    The number of horizontal pixels per EM.
+   *
+   *  y_ppem ::
+   *    The number of vertical pixels per EM.
+   *
+   *  bit_depth ::
+   *    The bit depth.  Valid values are 1, 2, 4,
+   *    and 8.
+   *
+   *  flags ::
+   *    Is this a vertical or horizontal strike?  For
+   *    details, please see
+   *
+   *    https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html
+   */
   typedef struct  TT_SBit_StrikeRec_
   {
     FT_Int                  num_ranges;
@@ -695,21 +785,24 @@
   } TT_SBit_StrikeRec, *TT_SBit_Strike;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_SBit_ComponentRec                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple structure to describe a compound sbit element.            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    glyph_code :: The element's glyph index.                           */
-  /*                                                                       */
-  /*    x_offset   :: The element's left bearing.                          */
-  /*                                                                       */
-  /*    y_offset   :: The element's top bearing.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_SBit_ComponentRec
+   *
+   * @description:
+   *   A simple structure to describe a compound sbit element.
+   *
+   * @fields:
+   *   glyph_code ::
+   *     The element's glyph index.
+   *
+   *   x_offset ::
+   *     The element's left bearing.
+   *
+   *   y_offset ::
+   *     The element's top bearing.
+   */
   typedef struct  TT_SBit_ComponentRec_
   {
     FT_UShort  glyph_code;
@@ -719,28 +812,34 @@
   } TT_SBit_ComponentRec, *TT_SBit_Component;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_SBit_ScaleRec                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used describe a given bitmap scaling table, as defined */
-  /*    in the `EBSC' table.                                               */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    hori              :: The horizontal line metrics.                  */
-  /*                                                                       */
-  /*    vert              :: The vertical line metrics.                    */
-  /*                                                                       */
-  /*    x_ppem            :: The number of horizontal pixels per EM.       */
-  /*                                                                       */
-  /*    y_ppem            :: The number of vertical pixels per EM.         */
-  /*                                                                       */
-  /*    x_ppem_substitute :: Substitution x_ppem value.                    */
-  /*                                                                       */
-  /*    y_ppem_substitute :: Substitution y_ppem value.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_SBit_ScaleRec
+   *
+   * @description:
+   *   A structure used describe a given bitmap scaling table, as defined
+   *   in the `EBSC' table.
+   *
+   * @fields:
+   *   hori ::
+   *     The horizontal line metrics.
+   *
+   *   vert ::
+   *     The vertical line metrics.
+   *
+   *   x_ppem ::
+   *     The number of horizontal pixels per EM.
+   *
+   *   y_ppem ::
+   *     The number of vertical pixels per EM.
+   *
+   *   x_ppem_substitute ::
+   *     Substitution x_ppem value.
+   *
+   *   y_ppem_substitute ::
+   *     Substitution y_ppem value.
+   */
   typedef struct  TT_SBit_ScaleRec_
   {
     TT_SBit_LineMetricsRec  hori;
@@ -768,24 +867,28 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_Post_20Rec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Postscript names sub-table, format 2.0.  Stores the PS name of     */
-  /*    each glyph in the font face.                                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_glyphs    :: The number of named glyphs in the table.          */
-  /*                                                                       */
-  /*    num_names     :: The number of PS names stored in the table.       */
-  /*                                                                       */
-  /*    glyph_indices :: The indices of the glyphs in the names arrays.    */
-  /*                                                                       */
-  /*    glyph_names   :: The PS names not in Mac Encoding.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_Post_20Rec
+   *
+   * @description:
+   *   Postscript names sub-table, format 2.0.  Stores the PS name of
+   *   each glyph in the font face.
+   *
+   * @fields:
+   *   num_glyphs ::
+   *     The number of named glyphs in the table.
+   *
+   *   num_names ::
+   *     The number of PS names stored in the table.
+   *
+   *   glyph_indices ::
+   *     The indices of the glyphs in the names arrays.
+   *
+   *   glyph_names ::
+   *     The PS names not in Mac Encoding.
+   */
   typedef struct  TT_Post_20Rec_
   {
     FT_UShort   num_glyphs;
@@ -796,21 +899,23 @@
   } TT_Post_20Rec, *TT_Post_20;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_Post_25Rec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Postscript names sub-table, format 2.5.  Stores the PS name of     */
-  /*    each glyph in the font face.                                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_glyphs :: The number of glyphs in the table.                   */
-  /*                                                                       */
-  /*    offsets    :: An array of signed offsets in a normal Mac           */
-  /*                  Postscript name encoding.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_Post_25Rec
+   *
+   * @description:
+   *   Postscript names sub-table, format 2.5.  Stores the PS name of
+   *   each glyph in the font face.
+   *
+   * @fields:
+   *   num_glyphs ::
+   *     The number of glyphs in the table.
+   *
+   *   offsets ::
+   *     An array of signed offsets in a normal Mac
+   *     Postscript name encoding.
+   */
   typedef struct  TT_Post_25_
   {
     FT_UShort  num_glyphs;
@@ -819,21 +924,24 @@
   } TT_Post_25Rec, *TT_Post_25;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_Post_NamesRec                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Postscript names table, either format 2.0 or 2.5.                  */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    loaded    :: A flag to indicate whether the PS names are loaded.   */
-  /*                                                                       */
-  /*    format_20 :: The sub-table used for format 2.0.                    */
-  /*                                                                       */
-  /*    format_25 :: The sub-table used for format 2.5.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_Post_NamesRec
+   *
+   * @description:
+   *   Postscript names table, either format 2.0 or 2.5.
+   *
+   * @fields:
+   *   loaded ::
+   *     A flag to indicate whether the PS names are loaded.
+   *
+   *   format_20 ::
+   *     The sub-table used for format 2.0.
+   *
+   *   format_25 ::
+   *     The sub-table used for format 2.5.
+   */
   typedef struct  TT_Post_NamesRec_
   {
     FT_Bool  loaded;
@@ -945,31 +1053,31 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This structure/class is defined here because it is common to the      */
-  /* following formats: TTF, OpenType-TT, and OpenType-CFF.                */
-  /*                                                                       */
-  /* Note, however, that the classes TT_Size and TT_GlyphSlot are not      */
-  /* shared between font drivers, and are thus defined in `ttobjs.h'.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This structure/class is defined here because it is common to the
+   * following formats: TTF, OpenType-TT, and OpenType-CFF.
+   *
+   * Note, however, that the classes TT_Size and TT_GlyphSlot are not
+   * shared between font drivers, and are thus defined in `ttobjs.h'.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    TT_Face                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a TrueType face/font object.  A TT_Face encapsulates   */
-  /*    the resolution and scaling independent parts of a TrueType font    */
-  /*    resource.                                                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The TT_Face structure is also used as a `parent class' for the     */
-  /*    OpenType-CFF class (T2_Face).                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   TT_Face
+   *
+   * @description:
+   *   A handle to a TrueType face/font object.  A TT_Face encapsulates
+   *   the resolution and scaling independent parts of a TrueType font
+   *   resource.
+   *
+   * @note:
+   *   The TT_Face structure is also used as a `parent class' for the
+   *   OpenType-CFF class (T2_Face).
+   */
   typedef struct TT_FaceRec_*  TT_Face;
 
 
@@ -981,31 +1089,35 @@
   typedef struct TT_LoaderRec_*  TT_Loader;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Loader_GotoTableFunc                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Seeks a stream to the start of a given TrueType table.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    tag    :: A 4-byte tag used to name the table.                     */
-  /*                                                                       */
-  /*    stream :: The input stream.                                        */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    length :: The length of the table in bytes.  Set to 0 if not       */
-  /*              needed.                                                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The stream cursor must be at the font file's origin.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Loader_GotoTableFunc
+   *
+   * @description:
+   *   Seeks a stream to the start of a given TrueType table.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   tag ::
+   *     A 4-byte tag used to name the table.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @output:
+   *   length ::
+   *     The length of the table in bytes.  Set to 0 if not
+   *     needed.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   The stream cursor must be at the font file's origin.
+   */
   typedef FT_Error
   (*TT_Loader_GotoTableFunc)( TT_Face    face,
                               FT_ULong   tag,
@@ -1013,34 +1125,37 @@
                               FT_ULong*  length );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Loader_StartGlyphFunc                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Seeks a stream to the start of a given glyph element, and opens a  */
-  /*    frame for it.                                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    loader      :: The current TrueType glyph loader object.           */
-  /*                                                                       */
-  /*    glyph index :: The index of the glyph to access.                   */
-  /*                                                                       */
-  /*    offset      :: The offset of the glyph according to the            */
-  /*                   `locations' table.                                  */
-  /*                                                                       */
-  /*    byte_count  :: The size of the frame in bytes.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function is normally equivalent to FT_STREAM_SEEK(offset)     */
-  /*    followed by FT_FRAME_ENTER(byte_count) with the loader's stream,   */
-  /*    but alternative formats (e.g. compressed ones) might use something */
-  /*    different.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Loader_StartGlyphFunc
+   *
+   * @description:
+   *   Seeks a stream to the start of a given glyph element, and opens a
+   *   frame for it.
+   *
+   * @input:
+   *   loader ::
+   *     The current TrueType glyph loader object.
+   *
+   *     glyph index :: The index of the glyph to access.
+   *
+   *   offset ::
+   *     The offset of the glyph according to the
+   *     `locations' table.
+   *
+   *   byte_count ::
+   *     The size of the frame in bytes.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   This function is normally equivalent to FT_STREAM_SEEK(offset)
+   *   followed by FT_FRAME_ENTER(byte_count) with the loader's stream,
+   *   but alternative formats (e.g. compressed ones) might use something
+   *   different.
+   */
   typedef FT_Error
   (*TT_Loader_StartGlyphFunc)( TT_Loader  loader,
                                FT_UInt    glyph_index,
@@ -1048,36 +1163,38 @@
                                FT_UInt    byte_count );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Loader_ReadGlyphFunc                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reads one glyph element (its header, a simple glyph, or a          */
-  /*    composite) from the loader's current stream frame.                 */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    loader :: The current TrueType glyph loader object.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Loader_ReadGlyphFunc
+   *
+   * @description:
+   *   Reads one glyph element (its header, a simple glyph, or a
+   *   composite) from the loader's current stream frame.
+   *
+   * @input:
+   *   loader ::
+   *     The current TrueType glyph loader object.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   */
   typedef FT_Error
   (*TT_Loader_ReadGlyphFunc)( TT_Loader  loader );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Loader_EndGlyphFunc                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Closes the current loader stream frame for the glyph.              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    loader :: The current TrueType glyph loader object.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Loader_EndGlyphFunc
+   *
+   * @description:
+   *   Closes the current loader stream frame for the glyph.
+   *
+   * @input:
+   *   loader ::
+   *     The current TrueType glyph loader object.
+   */
   typedef void
   (*TT_Loader_EndGlyphFunc)( TT_Loader  loader );
 
@@ -1124,270 +1241,366 @@
 #define TT_FACE_FLAG_VAR_MVAR  ( 1 << 8 )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                         TrueType Face Type                            */
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_Face                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The TrueType face class.  These objects model the resolution and   */
-  /*    point-size independent data found in a TrueType font file.         */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root                 :: The base FT_Face structure, managed by the */
-  /*                            base layer.                                */
-  /*                                                                       */
-  /*    ttc_header           :: The TrueType collection header, used when  */
-  /*                            the file is a `ttc' rather than a `ttf'.   */
-  /*                            For ordinary font files, the field         */
-  /*                            `ttc_header.count' is set to 0.            */
-  /*                                                                       */
-  /*    format_tag           :: The font format tag.                       */
-  /*                                                                       */
-  /*    num_tables           :: The number of TrueType tables in this font */
-  /*                            file.                                      */
-  /*                                                                       */
-  /*    dir_tables           :: The directory of TrueType tables for this  */
-  /*                            font file.                                 */
-  /*                                                                       */
-  /*    header               :: The font's font header (`head' table).     */
-  /*                            Read on font opening.                      */
-  /*                                                                       */
-  /*    horizontal           :: The font's horizontal header (`hhea'       */
-  /*                            table).  This field also contains the      */
-  /*                            associated horizontal metrics table        */
-  /*                            (`hmtx').                                  */
-  /*                                                                       */
-  /*    max_profile          :: The font's maximum profile table.  Read on */
-  /*                            font opening.  Note that some maximum      */
-  /*                            values cannot be taken directly from this  */
-  /*                            table.  We thus define additional fields   */
-  /*                            below to hold the computed maxima.         */
-  /*                                                                       */
-  /*    vertical_info        :: A boolean which is set when the font file  */
-  /*                            contains vertical metrics.  If not, the    */
-  /*                            value of the `vertical' field is           */
-  /*                            undefined.                                 */
-  /*                                                                       */
-  /*    vertical             :: The font's vertical header (`vhea' table). */
-  /*                            This field also contains the associated    */
-  /*                            vertical metrics table (`vmtx'), if found. */
-  /*                            IMPORTANT: The contents of this field is   */
-  /*                            undefined if the `vertical_info' field is  */
-  /*                            unset.                                     */
-  /*                                                                       */
-  /*    num_names            :: The number of name records within this     */
-  /*                            TrueType font.                             */
-  /*                                                                       */
-  /*    name_table           :: The table of name records (`name').        */
-  /*                                                                       */
-  /*    os2                  :: The font's OS/2 table (`OS/2').            */
-  /*                                                                       */
-  /*    postscript           :: The font's PostScript table (`post'        */
-  /*                            table).  The PostScript glyph names are    */
-  /*                            not loaded by the driver on face opening.  */
-  /*                            See the `ttpost' module for more details.  */
-  /*                                                                       */
-  /*    cmap_table           :: Address of the face's `cmap' SFNT table    */
-  /*                            in memory (it's an extracted frame).       */
-  /*                                                                       */
-  /*    cmap_size            :: The size in bytes of the `cmap_table'      */
-  /*                            described above.                           */
-  /*                                                                       */
-  /*    goto_table           :: A function called by each TrueType table   */
-  /*                            loader to position a stream's cursor to    */
-  /*                            the start of a given table according to    */
-  /*                            its tag.  It defaults to TT_Goto_Face but  */
-  /*                            can be different for strange formats (e.g. */
-  /*                            Type 42).                                  */
-  /*                                                                       */
-  /*    access_glyph_frame   :: A function used to access the frame of a   */
-  /*                            given glyph within the face's font file.   */
-  /*                                                                       */
-  /*    forget_glyph_frame   :: A function used to forget the frame of a   */
-  /*                            given glyph when all data has been loaded. */
-  /*                                                                       */
-  /*    read_glyph_header    :: A function used to read a glyph header.    */
-  /*                            It must be called between an `access' and  */
-  /*                            `forget'.                                  */
-  /*                                                                       */
-  /*    read_simple_glyph    :: A function used to read a simple glyph.    */
-  /*                            It must be called after the header was     */
-  /*                            read, and before the `forget'.             */
-  /*                                                                       */
-  /*    read_composite_glyph :: A function used to read a composite glyph. */
-  /*                            It must be called after the header was     */
-  /*                            read, and before the `forget'.             */
-  /*                                                                       */
-  /*    sfnt                 :: A pointer to the SFNT service.             */
-  /*                                                                       */
-  /*    psnames              :: A pointer to the PostScript names service. */
-  /*                                                                       */
-  /*    mm                   :: A pointer to the Multiple Masters service. */
-  /*                                                                       */
-  /*    var                  :: A pointer to the Metrics Variations        */
-  /*                            service.                                   */
-  /*                                                                       */
-  /*    hdmx                 :: The face's horizontal device metrics       */
-  /*                            (`hdmx' table).  This table is optional in */
-  /*                            TrueType/OpenType fonts.                   */
-  /*                                                                       */
-  /*    gasp                 :: The grid-fitting and scaling properties    */
-  /*                            table (`gasp').  This table is optional in */
-  /*                            TrueType/OpenType fonts.                   */
-  /*                                                                       */
-  /*    pclt                 :: The `pclt' SFNT table.                     */
-  /*                                                                       */
-  /*    num_sbit_scales      :: The number of sbit scales for this font.   */
-  /*                                                                       */
-  /*    sbit_scales          :: Array of sbit scales embedded in this      */
-  /*                            font.  This table is optional in a         */
-  /*                            TrueType/OpenType font.                    */
-  /*                                                                       */
-  /*    postscript_names     :: A table used to store the Postscript names */
-  /*                            of  the glyphs for this font.  See the     */
-  /*                            file  `ttconfig.h' for comments on the     */
-  /*                            TT_CONFIG_OPTION_POSTSCRIPT_NAMES option.  */
-  /*                                                                       */
-  /*    font_program_size    :: Size in bytecodes of the face's font       */
-  /*                            program.  0 if none defined.  Ignored for  */
-  /*                            Type 2 fonts.                              */
-  /*                                                                       */
-  /*    font_program         :: The face's font program (bytecode stream)  */
-  /*                            executed at load time, also used during    */
-  /*                            glyph rendering.  Comes from the `fpgm'    */
-  /*                            table.  Ignored for Type 2 font fonts.     */
-  /*                                                                       */
-  /*    cvt_program_size     :: The size in bytecodes of the face's cvt    */
-  /*                            program.  Ignored for Type 2 fonts.        */
-  /*                                                                       */
-  /*    cvt_program          :: The face's cvt program (bytecode stream)   */
-  /*                            executed each time an instance/size is     */
-  /*                            changed/reset.  Comes from the `prep'      */
-  /*                            table.  Ignored for Type 2 fonts.          */
-  /*                                                                       */
-  /*    cvt_size             :: Size of the control value table (in        */
-  /*                            entries).   Ignored for Type 2 fonts.      */
-  /*                                                                       */
-  /*    cvt                  :: The face's original control value table.   */
-  /*                            Coordinates are expressed in unscaled font */
-  /*                            units.  Comes from the `cvt ' table.       */
-  /*                            Ignored for Type 2 fonts.                  */
-  /*                                                                       */
-  /*    interpreter          :: A pointer to the TrueType bytecode         */
-  /*                            interpreters field is also used to hook    */
-  /*                            the debugger in `ttdebug'.                 */
-  /*                                                                       */
-  /*    extra                :: Reserved for third-party font drivers.     */
-  /*                                                                       */
-  /*    postscript_name      :: The PS name of the font.  Used by the      */
-  /*                            postscript name service.                   */
-  /*                                                                       */
-  /*    glyf_len             :: The length of the `glyf' table.  Needed    */
-  /*                            for malformed `loca' tables.               */
-  /*                                                                       */
-  /*    glyf_offset          :: The file offset of the `glyf' table.       */
-  /*                                                                       */
-  /*    is_cff2              :: Set if the font format is CFF2.            */
-  /*                                                                       */
-  /*    doblend              :: A boolean which is set if the font should  */
-  /*                            be blended (this is for GX var).           */
-  /*                                                                       */
-  /*    blend                :: Contains the data needed to control GX     */
-  /*                            variation tables (rather like Multiple     */
-  /*                            Master data).                              */
-  /*                                                                       */
-  /*    variation_support    :: Flags that indicate which OpenType         */
-  /*                            functionality related to font variation    */
-  /*                            support is present, valid, and usable.     */
-  /*                            For example, TT_FACE_FLAG_VAR_FVAR is only */
-  /*                            set if we have at least one design axis.   */
-  /*                                                                       */
-  /*    var_postscript_prefix ::                                           */
-  /*                            The PostScript name prefix needed for      */
-  /*                            constructing a variation font instance's   */
-  /*                            PS name .                                  */
-  /*                                                                       */
-  /*    var_postscript_prefix_len ::                                       */
-  /*                            The length of the `var_postscript_prefix'  */
-  /*                            string.                                    */
-  /*                                                                       */
-  /*    horz_metrics_size    :: The size of the `hmtx' table.              */
-  /*                                                                       */
-  /*    vert_metrics_size    :: The size of the `vmtx' table.              */
-  /*                                                                       */
-  /*    num_locations        :: The number of glyph locations in this      */
-  /*                            TrueType file.  This should be             */
-  /*                            identical to the number of glyphs.         */
-  /*                            Ignored for Type 2 fonts.                  */
-  /*                                                                       */
-  /*    glyph_locations      :: An array of longs.  These are offsets to   */
-  /*                            glyph data within the `glyf' table.        */
-  /*                            Ignored for Type 2 font faces.             */
-  /*                                                                       */
-  /*    hdmx_table           :: A pointer to the `hdmx' table.             */
-  /*                                                                       */
-  /*    hdmx_table_size      :: The size of the `hdmx' table.              */
-  /*                                                                       */
-  /*    hdmx_record_count    :: The number of hdmx records.                */
-  /*                                                                       */
-  /*    hdmx_record_size     :: The size of a single hdmx record.          */
-  /*                                                                       */
-  /*    hdmx_record_sizes    :: An array holding the ppem sizes available  */
-  /*                            in the `hdmx' table.                       */
-  /*                                                                       */
-  /*    sbit_table           :: A pointer to the font's embedded bitmap    */
-  /*                            location table.                            */
-  /*                                                                       */
-  /*    sbit_table_size      :: The size of `sbit_table'.                  */
-  /*                                                                       */
-  /*    sbit_table_type      :: The sbit table type (CBLC, sbix, etc.).    */
-  /*                                                                       */
-  /*    sbit_num_strikes     :: The number of sbit strikes exposed by      */
-  /*                            FreeType's API, omitting invalid strikes.  */
-  /*                                                                       */
-  /*    sbit_strike_map      :: A mapping between the strike indices       */
-  /*                            exposed by the API and the indices used in */
-  /*                            the font's sbit table.                     */
-  /*                                                                       */
-  /*    kern_table           :: A pointer to the `kern' table.             */
-  /*                                                                       */
-  /*    kern_table_size      :: The size of the `kern' table.              */
-  /*                                                                       */
-  /*    num_kern_tables      :: The number of supported kern subtables     */
-  /*                            (up to 32; FreeType recognizes only        */
-  /*                            horizontal ones with format 0).            */
-  /*                                                                       */
-  /*    kern_avail_bits      :: The availability status of kern subtables; */
-  /*                            if bit n is set, table n is available.     */
-  /*                                                                       */
-  /*    kern_order_bits      :: The sortedness status of kern subtables;   */
-  /*                            if bit n is set, table n is sorted.        */
-  /*                                                                       */
-  /*    bdf                  :: Data related to an SFNT font's `bdf'       */
-  /*                            table; see `tttypes.h'.                    */
-  /*                                                                       */
-  /*    horz_metrics_offset  :: The file offset of the `hmtx' table.       */
-  /*                                                                       */
-  /*    vert_metrics_offset  :: The file offset of the `vmtx' table.       */
-  /*                                                                       */
-  /*    sph_found_func_flags :: Flags identifying special bytecode         */
-  /*                            functions (used by the v38 implementation  */
-  /*                            of the bytecode interpreter).              */
-  /*                                                                       */
-  /*    sph_compatibility_mode ::                                          */
-  /*                            This flag is set if we are in ClearType    */
-  /*                            backward compatibility mode (used by the   */
-  /*                            v38 implementation of the bytecode         */
-  /*                            interpreter).                              */
-  /*                                                                       */
-  /*    ebdt_start           :: The file offset of the sbit data table     */
-  /*                            (CBDT, bdat, etc.).                        */
-  /*                                                                       */
-  /*    ebdt_size            :: The size of the sbit data table.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   *                        TrueType Face Type
+   *
+   * @struct:
+   *   TT_Face
+   *
+   * @description:
+   *   The TrueType face class.  These objects model the resolution and
+   *   point-size independent data found in a TrueType font file.
+   *
+   * @fields:
+   *   root ::
+   *     The base FT_Face structure, managed by the
+   *     base layer.
+   *
+   *   ttc_header ::
+   *     The TrueType collection header, used when
+   *     the file is a `ttc' rather than a `ttf'.
+   *     For ordinary font files, the field
+   *     `ttc_header.count' is set to 0.
+   *
+   *   format_tag ::
+   *     The font format tag.
+   *
+   *   num_tables ::
+   *     The number of TrueType tables in this font
+   *     file.
+   *
+   *   dir_tables ::
+   *     The directory of TrueType tables for this
+   *     font file.
+   *
+   *   header ::
+   *     The font's font header (`head' table).
+   *     Read on font opening.
+   *
+   *   horizontal ::
+   *     The font's horizontal header (`hhea'
+   *     table).  This field also contains the
+   *     associated horizontal metrics table
+   *     (`hmtx').
+   *
+   *   max_profile ::
+   *     The font's maximum profile table.  Read on
+   *     font opening.  Note that some maximum
+   *     values cannot be taken directly from this
+   *     table.  We thus define additional fields
+   *     below to hold the computed maxima.
+   *
+   *   vertical_info ::
+   *     A boolean which is set when the font file
+   *     contains vertical metrics.  If not, the
+   *     value of the `vertical' field is
+   *     undefined.
+   *
+   *   vertical ::
+   *     The font's vertical header (`vhea' table).
+   *     This field also contains the associated
+   *     vertical metrics table (`vmtx'), if found.
+   *     IMPORTANT: The contents of this field is
+   *     undefined if the `vertical_info' field is
+   *     unset.
+   *
+   *   num_names ::
+   *     The number of name records within this
+   *     TrueType font.
+   *
+   *   name_table ::
+   *     The table of name records (`name').
+   *
+   *   os2 ::
+   *     The font's OS/2 table (`OS/2').
+   *
+   *   postscript ::
+   *     The font's PostScript table (`post'
+   *     table).  The PostScript glyph names are
+   *     not loaded by the driver on face opening.
+   *     See the `ttpost' module for more details.
+   *
+   *   cmap_table ::
+   *     Address of the face's `cmap' SFNT table
+   *     in memory (it's an extracted frame).
+   *
+   *   cmap_size ::
+   *     The size in bytes of the `cmap_table'
+   *     described above.
+   *
+   *   goto_table ::
+   *     A function called by each TrueType table
+   *     loader to position a stream's cursor to
+   *     the start of a given table according to
+   *     its tag.  It defaults to TT_Goto_Face but
+   *     can be different for strange formats (e.g.
+   *     Type 42).
+   *
+   *   access_glyph_frame ::
+   *     A function used to access the frame of a
+   *     given glyph within the face's font file.
+   *
+   *   forget_glyph_frame ::
+   *     A function used to forget the frame of a
+   *     given glyph when all data has been loaded.
+   *
+   *   read_glyph_header ::
+   *     A function used to read a glyph header.
+   *     It must be called between an `access' and
+   *     `forget'.
+   *
+   *   read_simple_glyph ::
+   *     A function used to read a simple glyph.
+   *     It must be called after the header was
+   *     read, and before the `forget'.
+   *
+   *   read_composite_glyph ::
+   *     A function used to read a composite glyph.
+   *     It must be called after the header was
+   *     read, and before the `forget'.
+   *
+   *   sfnt ::
+   *     A pointer to the SFNT service.
+   *
+   *   psnames ::
+   *     A pointer to the PostScript names service.
+   *
+   *   mm ::
+   *     A pointer to the Multiple Masters service.
+   *
+   *   var ::
+   *     A pointer to the Metrics Variations
+   *     service.
+   *
+   *   hdmx ::
+   *     The face's horizontal device metrics
+   *     (`hdmx' table).  This table is optional in
+   *     TrueType/OpenType fonts.
+   *
+   *   gasp ::
+   *     The grid-fitting and scaling properties
+   *     table (`gasp').  This table is optional in
+   *     TrueType/OpenType fonts.
+   *
+   *   pclt ::
+   *     The `pclt' SFNT table.
+   *
+   *   num_sbit_scales ::
+   *     The number of sbit scales for this font.
+   *
+   *   sbit_scales ::
+   *     Array of sbit scales embedded in this
+   *     font.  This table is optional in a
+   *     TrueType/OpenType font.
+   *
+   *   postscript_names ::
+   *     A table used to store the Postscript names
+   *     of  the glyphs for this font.  See the
+   *     file  `ttconfig.h' for comments on the
+   *     TT_CONFIG_OPTION_POSTSCRIPT_NAMES option.
+   *
+   *   palette_data ::
+   *     Some fields from the `CPAL' table that are directly indexed.
+   *
+   *   palette_index ::
+   *     The current palette index, as set by @FT_Palette_Select.
+   *
+   *   palette ::
+   *     An array containing the current palette's colors.
+   *
+   *   have_foreground_color ::
+   *     There was a call to @FT_Palette_Set_Foreground_Color.
+   *
+   *   foreground_color ::
+   *     The current foreground color corresponding to `CPAL' color index
+   *     0xFFFF.  Only valid if `have_foreground_color' is set.
+   *
+   *   font_program_size ::
+   *     Size in bytecodes of the face's font
+   *     program.  0 if none defined.  Ignored for
+   *     Type 2 fonts.
+   *
+   *   font_program ::
+   *     The face's font program (bytecode stream)
+   *     executed at load time, also used during
+   *     glyph rendering.  Comes from the `fpgm'
+   *     table.  Ignored for Type 2 font fonts.
+   *
+   *   cvt_program_size ::
+   *     The size in bytecodes of the face's cvt
+   *     program.  Ignored for Type 2 fonts.
+   *
+   *   cvt_program ::
+   *     The face's cvt program (bytecode stream)
+   *     executed each time an instance/size is
+   *     changed/reset.  Comes from the `prep'
+   *     table.  Ignored for Type 2 fonts.
+   *
+   *   cvt_size ::
+   *     Size of the control value table (in
+   *     entries).   Ignored for Type 2 fonts.
+   *
+   *   cvt ::
+   *     The face's original control value table.
+   *     Coordinates are expressed in unscaled font
+   *     units.  Comes from the `cvt ' table.
+   *     Ignored for Type 2 fonts.
+   *
+   *   interpreter ::
+   *     A pointer to the TrueType bytecode
+   *     interpreters field is also used to hook
+   *     the debugger in `ttdebug'.
+   *
+   *   extra ::
+   *     Reserved for third-party font drivers.
+   *
+   *   postscript_name ::
+   *     The PS name of the font.  Used by the
+   *     postscript name service.
+   *
+   *   glyf_len ::
+   *     The length of the `glyf' table.  Needed
+   *     for malformed `loca' tables.
+   *
+   *   glyf_offset ::
+   *     The file offset of the `glyf' table.
+   *
+   *   is_cff2 ::
+   *     Set if the font format is CFF2.
+   *
+   *   doblend ::
+   *     A boolean which is set if the font should
+   *     be blended (this is for GX var).
+   *
+   *   blend ::
+   *     Contains the data needed to control GX
+   *     variation tables (rather like Multiple
+   *     Master data).
+   *
+   *   variation_support ::
+   *     Flags that indicate which OpenType
+   *     functionality related to font variation
+   *     support is present, valid, and usable.
+   *     For example, TT_FACE_FLAG_VAR_FVAR is only
+   *     set if we have at least one design axis.
+   *
+   *   var_postscript_prefix ::
+   *     The PostScript name prefix needed for
+   *     constructing a variation font instance's
+   *     PS name .
+   *
+   *   var_postscript_prefix_len ::
+   *     The length of the `var_postscript_prefix'
+   *     string.
+   *
+   *   horz_metrics_size ::
+   *     The size of the `hmtx' table.
+   *
+   *   vert_metrics_size ::
+   *     The size of the `vmtx' table.
+   *
+   *   num_locations ::
+   *     The number of glyph locations in this
+   *     TrueType file.  This should be
+   *     identical to the number of glyphs.
+   *     Ignored for Type 2 fonts.
+   *
+   *   glyph_locations ::
+   *     An array of longs.  These are offsets to
+   *     glyph data within the `glyf' table.
+   *     Ignored for Type 2 font faces.
+   *
+   *   hdmx_table ::
+   *     A pointer to the `hdmx' table.
+   *
+   *   hdmx_table_size ::
+   *     The size of the `hdmx' table.
+   *
+   *   hdmx_record_count ::
+   *     The number of hdmx records.
+   *
+   *   hdmx_record_size ::
+   *     The size of a single hdmx record.
+   *
+   *   hdmx_record_sizes ::
+   *     An array holding the ppem sizes available
+   *     in the `hdmx' table.
+   *
+   *   sbit_table ::
+   *     A pointer to the font's embedded bitmap
+   *     location table.
+   *
+   *   sbit_table_size ::
+   *     The size of `sbit_table'.
+   *
+   *   sbit_table_type ::
+   *     The sbit table type (CBLC, sbix, etc.).
+   *
+   *   sbit_num_strikes ::
+   *     The number of sbit strikes exposed by
+   *     FreeType's API, omitting invalid strikes.
+   *
+   *   sbit_strike_map ::
+   *     A mapping between the strike indices
+   *     exposed by the API and the indices used in
+   *     the font's sbit table.
+   *
+   *   cpal ::
+   *     A pointer to data related to the `CPAL' table.  NULL if the table
+   *     is not available.
+   *
+   *   colr ::
+   *     A pointer to data related to the `COLR' table.  NULL if the table
+   *     is not available.
+   *
+   *   kern_table ::
+   *     A pointer to the `kern' table.
+   *
+   *   kern_table_size ::
+   *     The size of the `kern' table.
+   *
+   *   num_kern_tables ::
+   *     The number of supported kern subtables
+   *     (up to 32; FreeType recognizes only
+   *     horizontal ones with format 0).
+   *
+   *   kern_avail_bits ::
+   *     The availability status of kern subtables;
+   *     if bit n is set, table n is available.
+   *
+   *   kern_order_bits ::
+   *     The sortedness status of kern subtables;
+   *     if bit n is set, table n is sorted.
+   *
+   *   bdf ::
+   *     Data related to an SFNT font's `bdf'
+   *     table; see `tttypes.h'.
+   *
+   *   horz_metrics_offset ::
+   *     The file offset of the `hmtx' table.
+   *
+   *   vert_metrics_offset ::
+   *     The file offset of the `vmtx' table.
+   *
+   *   sph_found_func_flags ::
+   *     Flags identifying special bytecode
+   *     functions (used by the v38 implementation
+   *     of the bytecode interpreter).
+   *
+   *   sph_compatibility_mode ::
+   *     This flag is set if we are in ClearType
+   *     backward compatibility mode (used by the
+   *     v38 implementation of the bytecode
+   *     interpreter).
+   *
+   *   ebdt_start ::
+   *     The file offset of the sbit data table
+   *     (CBDT, bdat, etc.).
+   *
+   *   ebdt_size ::
+   *     The size of the sbit data table.
+   */
   typedef struct  TT_FaceRec_
   {
     FT_FaceRec            root;
@@ -1445,11 +1658,11 @@
     void*                 psaux;
 
 
-    /***********************************************************************/
-    /*                                                                     */
-    /* Optional TrueType/OpenType tables                                   */
-    /*                                                                     */
-    /***********************************************************************/
+    /************************************************************************
+     *
+     * Optional TrueType/OpenType tables
+     *
+     */
 
     /* grid-fitting and scaling table */
     TT_GaspRec            gasp;                 /* the `gasp' table */
@@ -1464,12 +1677,19 @@
     /* postscript names table */
     TT_Post_NamesRec      postscript_names;
 
+    /* glyph colors */
+    FT_Palette_Data       palette_data;         /* since 2.10 */
+    FT_UShort             palette_index;
+    FT_Color*             palette;
+    FT_Bool               have_foreground_color;
+    FT_Color              foreground_color;
 
-    /***********************************************************************/
-    /*                                                                     */
-    /* TrueType-specific fields (ignored by the CFF driver)                */
-    /*                                                                     */
-    /***********************************************************************/
+
+    /************************************************************************
+     *
+     * TrueType-specific fields (ignored by the CFF driver)
+     *
+     */
 
     /* the font program, if any */
     FT_ULong              font_program_size;
@@ -1488,12 +1708,12 @@
     TT_Interpreter        interpreter;
 
 
-    /***********************************************************************/
-    /*                                                                     */
-    /* Other tables or fields. This is used by derivative formats like     */
-    /* OpenType.                                                           */
-    /*                                                                     */
-    /***********************************************************************/
+    /************************************************************************
+     *
+     * Other tables or fields. This is used by derivative formats like
+     * OpenType.
+     *
+     */
 
     FT_Generic            extra;
 
@@ -1562,40 +1782,54 @@
     FT_ULong              ebdt_size;
 #endif
 
+    /* since 2.10 */
+    void*                 cpal;
+    void*                 colr;
+
   } TT_FaceRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  <Struct>                                                             */
-  /*     TT_GlyphZoneRec                                                   */
-  /*                                                                       */
-  /*  <Description>                                                        */
-  /*     A glyph zone is used to load, scale and hint glyph outline        */
-  /*     coordinates.                                                      */
-  /*                                                                       */
-  /*  <Fields>                                                             */
-  /*     memory       :: A handle to the memory manager.                   */
-  /*                                                                       */
-  /*     max_points   :: The maximum size in points of the zone.           */
-  /*                                                                       */
-  /*     max_contours :: Max size in links contours of the zone.           */
-  /*                                                                       */
-  /*     n_points     :: The current number of points in the zone.         */
-  /*                                                                       */
-  /*     n_contours   :: The current number of contours in the zone.       */
-  /*                                                                       */
-  /*     org          :: The original glyph coordinates (font              */
-  /*                     units/scaled).                                    */
-  /*                                                                       */
-  /*     cur          :: The current glyph coordinates (scaled/hinted).    */
-  /*                                                                       */
-  /*     tags         :: The point control tags.                           */
-  /*                                                                       */
-  /*     contours     :: The contours end points.                          */
-  /*                                                                       */
-  /*     first_point  :: Offset of the current subglyph's first point.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *    TT_GlyphZoneRec
+   *
+   * @description:
+   *   A glyph zone is used to load, scale and hint glyph outline
+   *   coordinates.
+   *
+   * @fields:
+   *   memory ::
+   *     A handle to the memory manager.
+   *
+   *   max_points ::
+   *     The maximum size in points of the zone.
+   *
+   *   max_contours ::
+   *     Max size in links contours of the zone.
+   *
+   *   n_points ::
+   *     The current number of points in the zone.
+   *
+   *   n_contours ::
+   *     The current number of contours in the zone.
+   *
+   *   org ::
+   *     The original glyph coordinates (font
+   *     units/scaled).
+   *
+   *   cur ::
+   *     The current glyph coordinates (scaled/hinted).
+   *
+   *   tags ::
+   *     The point control tags.
+   *
+   *   contours ::
+   *     The contours end points.
+   *
+   *   first_point ::
+   *     Offset of the current subglyph's first point.
+   */
   typedef struct  TT_GlyphZoneRec_
   {
     FT_Memory   memory;
@@ -1620,14 +1854,14 @@
   typedef struct TT_ExecContextRec_*  TT_ExecContext;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    TT_Size                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a TrueType size object.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   TT_Size
+   *
+   * @description:
+   *   A handle to a TrueType size object.
+   */
   typedef struct TT_SizeRec_*  TT_Size;
 
 
diff --git a/include/freetype/t1tables.h b/include/freetype/t1tables.h
index 3503c26..784f1b9 100644
--- a/include/freetype/t1tables.h
+++ b/include/freetype/t1tables.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1tables.h                                                             */
-/*                                                                         */
-/*    Basic Type 1/Type 2 tables definitions and interface (specification  */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1tables.h
+ *
+ *   Basic Type 1/Type 2 tables definitions and interface (specification
+ *   only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1TABLES_H_
@@ -34,58 +34,58 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    type1_tables                                                       */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Type 1 Tables                                                      */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Type~1 (PostScript) specific font tables.                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the definition of Type 1-specific tables,    */
-  /*    including structures related to other PostScript font formats.     */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    PS_FontInfoRec                                                     */
-  /*    PS_FontInfo                                                        */
-  /*    PS_PrivateRec                                                      */
-  /*    PS_Private                                                         */
-  /*                                                                       */
-  /*    CID_FaceDictRec                                                    */
-  /*    CID_FaceDict                                                       */
-  /*    CID_FaceInfoRec                                                    */
-  /*    CID_FaceInfo                                                       */
-  /*                                                                       */
-  /*    FT_Has_PS_Glyph_Names                                              */
-  /*    FT_Get_PS_Font_Info                                                */
-  /*    FT_Get_PS_Font_Private                                             */
-  /*    FT_Get_PS_Font_Value                                               */
-  /*                                                                       */
-  /*    T1_Blend_Flags                                                     */
-  /*    T1_EncodingType                                                    */
-  /*    PS_Dict_Keys                                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   type1_tables
+   *
+   * @title:
+   *   Type 1 Tables
+   *
+   * @abstract:
+   *   Type~1-specific font tables.
+   *
+   * @description:
+   *   This section contains the definition of Type~1-specific tables,
+   *   including structures related to other PostScript font formats.
+   *
+   * @order:
+   *   PS_FontInfoRec
+   *   PS_FontInfo
+   *   PS_PrivateRec
+   *   PS_Private
+   *
+   *   CID_FaceDictRec
+   *   CID_FaceDict
+   *   CID_FaceInfoRec
+   *   CID_FaceInfo
+   *
+   *   FT_Has_PS_Glyph_Names
+   *   FT_Get_PS_Font_Info
+   *   FT_Get_PS_Font_Private
+   *   FT_Get_PS_Font_Value
+   *
+   *   T1_Blend_Flags
+   *   T1_EncodingType
+   *   PS_Dict_Keys
+   *
+   */
 
 
   /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */
   /* structures in order to support Multiple Master fonts.               */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_FontInfoRec                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to model a Type~1 or Type~2 FontInfo dictionary.  */
-  /*    Note that for Multiple Master fonts, each instance has its own     */
-  /*    FontInfo dictionary.                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_FontInfoRec
+   *
+   * @description:
+   *   A structure used to model a Type~1 or Type~2 FontInfo dictionary.
+   *   Note that for Multiple Master fonts, each instance has its own
+   *   FontInfo dictionary.
+   */
   typedef struct  PS_FontInfoRec_
   {
     FT_String*  version;
@@ -101,40 +101,40 @@
   } PS_FontInfoRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_FontInfo                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a @PS_FontInfoRec structure.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_FontInfo
+   *
+   * @description:
+   *   A handle to a @PS_FontInfoRec structure.
+   */
   typedef struct PS_FontInfoRec_*  PS_FontInfo;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    T1_FontInfo                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This type is equivalent to @PS_FontInfoRec.  It is deprecated but  */
-  /*    kept to maintain source compatibility between various versions of  */
-  /*    FreeType.                                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   T1_FontInfo
+   *
+   * @description:
+   *   This type is equivalent to @PS_FontInfoRec.  It is deprecated but
+   *   kept to maintain source compatibility between various versions of
+   *   FreeType.
+   */
   typedef PS_FontInfoRec  T1_FontInfo;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_PrivateRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to model a Type~1 or Type~2 private dictionary.   */
-  /*    Note that for Multiple Master fonts, each instance has its own     */
-  /*    Private dictionary.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_PrivateRec
+   *
+   * @description:
+   *   A structure used to model a Type~1 or Type~2 private dictionary.
+   *   Note that for Multiple Master fonts, each instance has its own
+   *   Private dictionary.
+   */
   typedef struct  PS_PrivateRec_
   {
     FT_Int     unique_id;
@@ -176,56 +176,56 @@
   } PS_PrivateRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_Private                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a @PS_PrivateRec structure.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_Private
+   *
+   * @description:
+   *   A handle to a @PS_PrivateRec structure.
+   */
   typedef struct PS_PrivateRec_*  PS_Private;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    T1_Private                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   This type is equivalent to @PS_PrivateRec.  It is deprecated but    */
-  /*   kept to maintain source compatibility between various versions of   */
-  /*   FreeType.                                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   T1_Private
+   *
+   * @description:
+   *  This type is equivalent to @PS_PrivateRec.  It is deprecated but
+   *  kept to maintain source compatibility between various versions of
+   *  FreeType.
+   */
   typedef PS_PrivateRec  T1_Private;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    T1_Blend_Flags                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A set of flags used to indicate which fields are present in a      */
-  /*    given blend dictionary (font info or private).  Used to support    */
-  /*    Multiple Masters fonts.                                            */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    T1_BLEND_UNDERLINE_POSITION ::                                     */
-  /*    T1_BLEND_UNDERLINE_THICKNESS ::                                    */
-  /*    T1_BLEND_ITALIC_ANGLE ::                                           */
-  /*    T1_BLEND_BLUE_VALUES ::                                            */
-  /*    T1_BLEND_OTHER_BLUES ::                                            */
-  /*    T1_BLEND_STANDARD_WIDTH ::                                         */
-  /*    T1_BLEND_STANDARD_HEIGHT ::                                        */
-  /*    T1_BLEND_STEM_SNAP_WIDTHS ::                                       */
-  /*    T1_BLEND_STEM_SNAP_HEIGHTS ::                                      */
-  /*    T1_BLEND_BLUE_SCALE ::                                             */
-  /*    T1_BLEND_BLUE_SHIFT ::                                             */
-  /*    T1_BLEND_FAMILY_BLUES ::                                           */
-  /*    T1_BLEND_FAMILY_OTHER_BLUES ::                                     */
-  /*    T1_BLEND_FORCE_BOLD ::                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   T1_Blend_Flags
+   *
+   * @description:
+   *   A set of flags used to indicate which fields are present in a
+   *   given blend dictionary (font info or private).  Used to support
+   *   Multiple Masters fonts.
+   *
+   * @values:
+   *   T1_BLEND_UNDERLINE_POSITION ::
+   *   T1_BLEND_UNDERLINE_THICKNESS ::
+   *   T1_BLEND_ITALIC_ANGLE ::
+   *   T1_BLEND_BLUE_VALUES ::
+   *   T1_BLEND_OTHER_BLUES ::
+   *   T1_BLEND_STANDARD_WIDTH ::
+   *   T1_BLEND_STANDARD_HEIGHT ::
+   *   T1_BLEND_STEM_SNAP_WIDTHS ::
+   *   T1_BLEND_STEM_SNAP_HEIGHTS ::
+   *   T1_BLEND_BLUE_SCALE ::
+   *   T1_BLEND_BLUE_SHIFT ::
+   *   T1_BLEND_FAMILY_BLUES ::
+   *   T1_BLEND_FAMILY_OTHER_BLUES ::
+   *   T1_BLEND_FORCE_BOLD ::
+   */
   typedef enum  T1_Blend_Flags_
   {
     /* required fields in a FontInfo blend dictionary */
@@ -330,14 +330,23 @@
   typedef PS_BlendRec  T1_Blend;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FaceDictRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to represent data in a CID top-level dictionary.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FaceDictRec
+   *
+   * @description:
+   *   A structure used to represent data in a CID top-level dictionary.  In
+   *   most cases, they are part of the font's `/FDArray' array.  Within a
+   *   CID font file, such (internal) subfont dictionaries are enclosed by
+   *   `%ADOBeginFontDict' and `%ADOEndFontDict' comments.
+   *
+   *   Note that `CID_FaceDictRec' misses a field for the `/FontName'
+   *   keyword, specifying the subfont's name (the top-level font name is
+   *   given by the `/CIDFontName' keyword).  This is an oversight, but it
+   *   doesn't limit the `cid' font module's functionality because FreeType
+   *   neither needs this entry nor gives access to CID subfonts.
+   */
   typedef struct  CID_FaceDictRec_
   {
     PS_PrivateRec  private_dict;
@@ -345,8 +354,8 @@
     FT_UInt        len_buildchar;
     FT_Fixed       forcebold_threshold;
     FT_Pos         stroke_width;
-    FT_Fixed       expansion_factor;
-
+    FT_Fixed       expansion_factor;   /* this is a duplicate of           */
+                                       /* `private_dict->expansion_factor' */
     FT_Byte        paint_type;
     FT_Byte        font_type;
     FT_Matrix      font_matrix;
@@ -359,38 +368,38 @@
   } CID_FaceDictRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FaceDict                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a @CID_FaceDictRec structure.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FaceDict
+   *
+   * @description:
+   *   A handle to a @CID_FaceDictRec structure.
+   */
   typedef struct CID_FaceDictRec_*  CID_FaceDict;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FontDict                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This type is equivalent to @CID_FaceDictRec.  It is deprecated but */
-  /*    kept to maintain source compatibility between various versions of  */
-  /*    FreeType.                                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FontDict
+   *
+   * @description:
+   *   This type is equivalent to @CID_FaceDictRec.  It is deprecated but
+   *   kept to maintain source compatibility between various versions of
+   *   FreeType.
+   */
   typedef CID_FaceDictRec  CID_FontDict;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FaceInfoRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to represent CID Face information.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FaceInfoRec
+   *
+   * @description:
+   *   A structure used to represent CID Face information.
+   */
   typedef struct  CID_FaceInfoRec_
   {
     FT_String*      cid_font_name;
@@ -421,27 +430,27 @@
   } CID_FaceInfoRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FaceInfo                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a @CID_FaceInfoRec structure.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FaceInfo
+   *
+   * @description:
+   *   A handle to a @CID_FaceInfoRec structure.
+   */
   typedef struct CID_FaceInfoRec_*  CID_FaceInfo;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_Info                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   This type is equivalent to @CID_FaceInfoRec.  It is deprecated but  */
-  /*   kept to maintain source compatibility between various versions of   */
-  /*   FreeType.                                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_Info
+   *
+   * @description:
+   *  This type is equivalent to @CID_FaceInfoRec.  It is deprecated but
+   *  kept to maintain source compatibility between various versions of
+   *  FreeType.
+   */
   typedef CID_FaceInfoRec  CID_Info;
 
 
@@ -461,7 +470,7 @@
    *
    * @input:
    *    face ::
-   *       face handle
+   *      face handle
    *
    * @return:
    *    Boolean.  True if glyph names are reliable.
@@ -482,11 +491,11 @@
    *
    * @input:
    *    face ::
-   *       PostScript face handle.
+   *      PostScript face handle.
    *
    * @output:
    *    afont_info ::
-   *       Output font info structure pointer.
+   *      Output font info structure pointer.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -516,11 +525,11 @@
    *
    * @input:
    *    face ::
-   *       PostScript face handle.
+   *      PostScript face handle.
    *
    * @output:
    *    afont_private ::
-   *       Output private dictionary structure pointer.
+   *      Output private dictionary structure pointer.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -538,25 +547,25 @@
                           PS_Private  afont_private );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    T1_EncodingType                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration describing the `Encoding' entry in a Type 1         */
-  /*    dictionary.                                                        */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    T1_ENCODING_TYPE_NONE ::                                           */
-  /*    T1_ENCODING_TYPE_ARRAY ::                                          */
-  /*    T1_ENCODING_TYPE_STANDARD ::                                       */
-  /*    T1_ENCODING_TYPE_ISOLATIN1 ::                                      */
-  /*    T1_ENCODING_TYPE_EXPERT ::                                         */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.8                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   T1_EncodingType
+   *
+   * @description:
+   *   An enumeration describing the `Encoding' entry in a Type 1
+   *   dictionary.
+   *
+   * @values:
+   *   T1_ENCODING_TYPE_NONE ::
+   *   T1_ENCODING_TYPE_ARRAY ::
+   *   T1_ENCODING_TYPE_STANDARD ::
+   *   T1_ENCODING_TYPE_ISOLATIN1 ::
+   *   T1_ENCODING_TYPE_EXPERT ::
+   *
+   * @since:
+   *   2.4.8
+   */
   typedef enum  T1_EncodingType_
   {
     T1_ENCODING_TYPE_NONE = 0,
@@ -568,66 +577,66 @@
   } T1_EncodingType;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    PS_Dict_Keys                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration used in calls to @FT_Get_PS_Font_Value to identify  */
-  /*    the Type~1 dictionary entry to retrieve.                           */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    PS_DICT_FONT_TYPE ::                                               */
-  /*    PS_DICT_FONT_MATRIX ::                                             */
-  /*    PS_DICT_FONT_BBOX ::                                               */
-  /*    PS_DICT_PAINT_TYPE ::                                              */
-  /*    PS_DICT_FONT_NAME ::                                               */
-  /*    PS_DICT_UNIQUE_ID ::                                               */
-  /*    PS_DICT_NUM_CHAR_STRINGS ::                                        */
-  /*    PS_DICT_CHAR_STRING_KEY ::                                         */
-  /*    PS_DICT_CHAR_STRING ::                                             */
-  /*    PS_DICT_ENCODING_TYPE ::                                           */
-  /*    PS_DICT_ENCODING_ENTRY ::                                          */
-  /*    PS_DICT_NUM_SUBRS ::                                               */
-  /*    PS_DICT_SUBR ::                                                    */
-  /*    PS_DICT_STD_HW ::                                                  */
-  /*    PS_DICT_STD_VW ::                                                  */
-  /*    PS_DICT_NUM_BLUE_VALUES ::                                         */
-  /*    PS_DICT_BLUE_VALUE ::                                              */
-  /*    PS_DICT_BLUE_FUZZ ::                                               */
-  /*    PS_DICT_NUM_OTHER_BLUES ::                                         */
-  /*    PS_DICT_OTHER_BLUE ::                                              */
-  /*    PS_DICT_NUM_FAMILY_BLUES ::                                        */
-  /*    PS_DICT_FAMILY_BLUE ::                                             */
-  /*    PS_DICT_NUM_FAMILY_OTHER_BLUES ::                                  */
-  /*    PS_DICT_FAMILY_OTHER_BLUE ::                                       */
-  /*    PS_DICT_BLUE_SCALE ::                                              */
-  /*    PS_DICT_BLUE_SHIFT ::                                              */
-  /*    PS_DICT_NUM_STEM_SNAP_H ::                                         */
-  /*    PS_DICT_STEM_SNAP_H ::                                             */
-  /*    PS_DICT_NUM_STEM_SNAP_V ::                                         */
-  /*    PS_DICT_STEM_SNAP_V ::                                             */
-  /*    PS_DICT_FORCE_BOLD ::                                              */
-  /*    PS_DICT_RND_STEM_UP ::                                             */
-  /*    PS_DICT_MIN_FEATURE ::                                             */
-  /*    PS_DICT_LEN_IV ::                                                  */
-  /*    PS_DICT_PASSWORD ::                                                */
-  /*    PS_DICT_LANGUAGE_GROUP ::                                          */
-  /*    PS_DICT_VERSION ::                                                 */
-  /*    PS_DICT_NOTICE ::                                                  */
-  /*    PS_DICT_FULL_NAME ::                                               */
-  /*    PS_DICT_FAMILY_NAME ::                                             */
-  /*    PS_DICT_WEIGHT ::                                                  */
-  /*    PS_DICT_IS_FIXED_PITCH ::                                          */
-  /*    PS_DICT_UNDERLINE_POSITION ::                                      */
-  /*    PS_DICT_UNDERLINE_THICKNESS ::                                     */
-  /*    PS_DICT_FS_TYPE ::                                                 */
-  /*    PS_DICT_ITALIC_ANGLE ::                                            */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.8                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   PS_Dict_Keys
+   *
+   * @description:
+   *   An enumeration used in calls to @FT_Get_PS_Font_Value to identify
+   *   the Type~1 dictionary entry to retrieve.
+   *
+   * @values:
+   *   PS_DICT_FONT_TYPE ::
+   *   PS_DICT_FONT_MATRIX ::
+   *   PS_DICT_FONT_BBOX ::
+   *   PS_DICT_PAINT_TYPE ::
+   *   PS_DICT_FONT_NAME ::
+   *   PS_DICT_UNIQUE_ID ::
+   *   PS_DICT_NUM_CHAR_STRINGS ::
+   *   PS_DICT_CHAR_STRING_KEY ::
+   *   PS_DICT_CHAR_STRING ::
+   *   PS_DICT_ENCODING_TYPE ::
+   *   PS_DICT_ENCODING_ENTRY ::
+   *   PS_DICT_NUM_SUBRS ::
+   *   PS_DICT_SUBR ::
+   *   PS_DICT_STD_HW ::
+   *   PS_DICT_STD_VW ::
+   *   PS_DICT_NUM_BLUE_VALUES ::
+   *   PS_DICT_BLUE_VALUE ::
+   *   PS_DICT_BLUE_FUZZ ::
+   *   PS_DICT_NUM_OTHER_BLUES ::
+   *   PS_DICT_OTHER_BLUE ::
+   *   PS_DICT_NUM_FAMILY_BLUES ::
+   *   PS_DICT_FAMILY_BLUE ::
+   *   PS_DICT_NUM_FAMILY_OTHER_BLUES ::
+   *   PS_DICT_FAMILY_OTHER_BLUE ::
+   *   PS_DICT_BLUE_SCALE ::
+   *   PS_DICT_BLUE_SHIFT ::
+   *   PS_DICT_NUM_STEM_SNAP_H ::
+   *   PS_DICT_STEM_SNAP_H ::
+   *   PS_DICT_NUM_STEM_SNAP_V ::
+   *   PS_DICT_STEM_SNAP_V ::
+   *   PS_DICT_FORCE_BOLD ::
+   *   PS_DICT_RND_STEM_UP ::
+   *   PS_DICT_MIN_FEATURE ::
+   *   PS_DICT_LEN_IV ::
+   *   PS_DICT_PASSWORD ::
+   *   PS_DICT_LANGUAGE_GROUP ::
+   *   PS_DICT_VERSION ::
+   *   PS_DICT_NOTICE ::
+   *   PS_DICT_FULL_NAME ::
+   *   PS_DICT_FAMILY_NAME ::
+   *   PS_DICT_WEIGHT ::
+   *   PS_DICT_IS_FIXED_PITCH ::
+   *   PS_DICT_UNDERLINE_POSITION ::
+   *   PS_DICT_UNDERLINE_THICKNESS ::
+   *   PS_DICT_FS_TYPE ::
+   *   PS_DICT_ITALIC_ANGLE ::
+   *
+   * @since:
+   *   2.4.8
+   */
   typedef enum  PS_Dict_Keys_
   {
     /* conventionally in the font dictionary */
@@ -697,23 +706,23 @@
    *
    * @input:
    *    face ::
-   *       PostScript face handle.
+   *      PostScript face handle.
    *
    *    key ::
-   *       An enumeration value representing the dictionary key to retrieve.
+   *      An enumeration value representing the dictionary key to retrieve.
    *
    *    idx ::
-   *       For array values, this specifies the index to be returned.
+   *      For array values, this specifies the index to be returned.
    *
    *    value ::
-   *       A pointer to memory into which to write the value.
+   *      A pointer to memory into which to write the value.
    *
    *    valen_len ::
-   *       The size, in bytes, of the memory supplied for the value.
+   *      The size, in bytes, of the memory supplied for the value.
    *
    * @output:
    *    value ::
-   *       The value matching the above key, if it exists.
+   *      The value matching the above key, if it exists.
    *
    * @return:
    *    The amount of memory (in bytes) required to hold the requested
diff --git a/include/freetype/ttnameid.h b/include/freetype/ttnameid.h
index 8605183..f71516c 100644
--- a/include/freetype/ttnameid.h
+++ b/include/freetype/ttnameid.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttnameid.h                                                             */
-/*                                                                         */
-/*    TrueType name ID definitions (specification only).                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttnameid.h
+ *
+ *   TrueType name ID definitions (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTNAMEID_H_
@@ -26,19 +26,19 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    truetype_tables                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @section:
+   *   truetype_tables
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Possible values for the `platform' identifier code in the name        */
-  /* records of an SFNT `name' table.                                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Possible values for the `platform' identifier code in the name
+   * records of an SFNT `name' table.
+   *
+   */
 
 
   /***********************************************************************
@@ -437,7 +437,7 @@
    *
    *   The canonical source for Microsoft's IDs is
    *
-   *     https://www.microsoft.com/globaldev/reference/lcid-all.mspx ,
+   *     https://docs.microsoft.com/en-us/windows/desktop/Intl/language-identifier-constants-and-strings ,
    *
    *   however, we only provide macros for language identifiers present in
    *   the OpenType specification: Microsoft has abandoned the concept of
diff --git a/include/freetype/tttables.h b/include/freetype/tttables.h
index ce6a617..8ecc8e2 100644
--- a/include/freetype/tttables.h
+++ b/include/freetype/tttables.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  tttables.h                                                             */
-/*                                                                         */
-/*    Basic SFNT/TrueType tables definitions and interface                 */
-/*    (specification only).                                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * tttables.h
+ *
+ *   Basic SFNT/TrueType tables definitions and interface
+ *   (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTTABLES_H_
@@ -33,53 +33,53 @@
 
 FT_BEGIN_HEADER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    truetype_tables                                                    */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    TrueType Tables                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    TrueType specific table types and functions.                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains definitions of some basic tables specific to */
-  /*    TrueType and OpenType as well as some routines used to access and  */
-  /*    process them.                                                      */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    TT_Header                                                          */
-  /*    TT_HoriHeader                                                      */
-  /*    TT_VertHeader                                                      */
-  /*    TT_OS2                                                             */
-  /*    TT_Postscript                                                      */
-  /*    TT_PCLT                                                            */
-  /*    TT_MaxProfile                                                      */
-  /*                                                                       */
-  /*    FT_Sfnt_Tag                                                        */
-  /*    FT_Get_Sfnt_Table                                                  */
-  /*    FT_Load_Sfnt_Table                                                 */
-  /*    FT_Sfnt_Table_Info                                                 */
-  /*                                                                       */
-  /*    FT_Get_CMap_Language_ID                                            */
-  /*    FT_Get_CMap_Format                                                 */
-  /*                                                                       */
-  /*    FT_PARAM_TAG_UNPATENTED_HINTING                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   truetype_tables
+   *
+   * @title:
+   *   TrueType Tables
+   *
+   * @abstract:
+   *   TrueType-specific table types and functions.
+   *
+   * @description:
+   *   This section contains definitions of some basic tables specific to
+   *   TrueType and OpenType as well as some routines used to access and
+   *   process them.
+   *
+   * @order:
+   *   TT_Header
+   *   TT_HoriHeader
+   *   TT_VertHeader
+   *   TT_OS2
+   *   TT_Postscript
+   *   TT_PCLT
+   *   TT_MaxProfile
+   *
+   *   FT_Sfnt_Tag
+   *   FT_Get_Sfnt_Table
+   *   FT_Load_Sfnt_Table
+   *   FT_Sfnt_Table_Info
+   *
+   *   FT_Get_CMap_Language_ID
+   *   FT_Get_CMap_Format
+   *
+   *   FT_PARAM_TAG_UNPATENTED_HINTING
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_Header                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType font header table.  All fields     */
-  /*    follow the OpenType specification.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_Header
+   *
+   * @description:
+   *   A structure to model a TrueType font header table.  All fields
+   *   follow the OpenType specification.
+   */
   typedef struct  TT_Header_
   {
     FT_Fixed   Table_Version;
@@ -109,93 +109,109 @@
   } TT_Header;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_HoriHeader                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType horizontal header, the `hhea'      */
-  /*    table, as well as the corresponding horizontal metrics table,      */
-  /*    `hmtx'.                                                            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    Version                :: The table version.                       */
-  /*                                                                       */
-  /*    Ascender               :: The font's ascender, i.e., the distance  */
-  /*                              from the baseline to the top-most of all */
-  /*                              glyph points found in the font.          */
-  /*                                                                       */
-  /*                              This value is invalid in many fonts, as  */
-  /*                              it is usually set by the font designer,  */
-  /*                              and often reflects only a portion of the */
-  /*                              glyphs found in the font (maybe ASCII).  */
-  /*                                                                       */
-  /*                              You should use the `sTypoAscender' field */
-  /*                              of the `OS/2' table instead if you want  */
-  /*                              the correct one.                         */
-  /*                                                                       */
-  /*    Descender              :: The font's descender, i.e., the distance */
-  /*                              from the baseline to the bottom-most of  */
-  /*                              all glyph points found in the font.  It  */
-  /*                              is negative.                             */
-  /*                                                                       */
-  /*                              This value is invalid in many fonts, as  */
-  /*                              it is usually set by the font designer,  */
-  /*                              and often reflects only a portion of the */
-  /*                              glyphs found in the font (maybe ASCII).  */
-  /*                                                                       */
-  /*                              You should use the `sTypoDescender'      */
-  /*                              field of the `OS/2' table instead if you */
-  /*                              want the correct one.                    */
-  /*                                                                       */
-  /*    Line_Gap               :: The font's line gap, i.e., the distance  */
-  /*                              to add to the ascender and descender to  */
-  /*                              get the BTB, i.e., the                   */
-  /*                              baseline-to-baseline distance for the    */
-  /*                              font.                                    */
-  /*                                                                       */
-  /*    advance_Width_Max      :: This field is the maximum of all advance */
-  /*                              widths found in the font.  It can be     */
-  /*                              used to compute the maximum width of an  */
-  /*                              arbitrary string of text.                */
-  /*                                                                       */
-  /*    min_Left_Side_Bearing  :: The minimum left side bearing of all     */
-  /*                              glyphs within the font.                  */
-  /*                                                                       */
-  /*    min_Right_Side_Bearing :: The minimum right side bearing of all    */
-  /*                              glyphs within the font.                  */
-  /*                                                                       */
-  /*    xMax_Extent            :: The maximum horizontal extent (i.e., the */
-  /*                              `width' of a glyph's bounding box) for   */
-  /*                              all glyphs in the font.                  */
-  /*                                                                       */
-  /*    caret_Slope_Rise       :: The rise coefficient of the cursor's     */
-  /*                              slope of the cursor (slope=rise/run).    */
-  /*                                                                       */
-  /*    caret_Slope_Run        :: The run coefficient of the cursor's      */
-  /*                              slope.                                   */
-  /*                                                                       */
-  /*    caret_Offset           :: The cursor's offset for slanted fonts.   */
-  /*                                                                       */
-  /*    Reserved               :: 8~reserved bytes.                        */
-  /*                                                                       */
-  /*    metric_Data_Format     :: Always~0.                                */
-  /*                                                                       */
-  /*    number_Of_HMetrics     :: Number of HMetrics entries in the `hmtx' */
-  /*                              table -- this value can be smaller than  */
-  /*                              the total number of glyphs in the font.  */
-  /*                                                                       */
-  /*    long_metrics           :: A pointer into the `hmtx' table.         */
-  /*                                                                       */
-  /*    short_metrics          :: A pointer into the `hmtx' table.         */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `caret_Slope_Rise', */
-  /*    `caret_Slope_Run', and `caret_Offset'.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_HoriHeader
+   *
+   * @description:
+   *   A structure to model a TrueType horizontal header, the `hhea'
+   *   table, as well as the corresponding horizontal metrics table,
+   *   `hmtx'.
+   *
+   * @fields:
+   *   Version ::
+   *     The table version.
+   *
+   *   Ascender ::
+   *     The font's ascender, i.e., the distance
+   *     from the baseline to the top-most of all
+   *     glyph points found in the font.
+   *
+   *     This value is invalid in many fonts, as
+   *     it is usually set by the font designer,
+   *     and often reflects only a portion of the
+   *     glyphs found in the font (maybe ASCII).
+   *
+   *     You should use the `sTypoAscender' field
+   *     of the `OS/2' table instead if you want
+   *     the correct one.
+   *
+   *   Descender ::
+   *     The font's descender, i.e., the distance
+   *     from the baseline to the bottom-most of
+   *     all glyph points found in the font.  It
+   *     is negative.
+   *
+   *     This value is invalid in many fonts, as
+   *     it is usually set by the font designer,
+   *     and often reflects only a portion of the
+   *     glyphs found in the font (maybe ASCII).
+   *
+   *     You should use the `sTypoDescender'
+   *     field of the `OS/2' table instead if you
+   *     want the correct one.
+   *
+   *   Line_Gap ::
+   *     The font's line gap, i.e., the distance
+   *     to add to the ascender and descender to
+   *     get the BTB, i.e., the
+   *     baseline-to-baseline distance for the
+   *     font.
+   *
+   *   advance_Width_Max ::
+   *     This field is the maximum of all advance
+   *     widths found in the font.  It can be
+   *     used to compute the maximum width of an
+   *     arbitrary string of text.
+   *
+   *   min_Left_Side_Bearing ::
+   *     The minimum left side bearing of all
+   *     glyphs within the font.
+   *
+   *   min_Right_Side_Bearing ::
+   *     The minimum right side bearing of all
+   *     glyphs within the font.
+   *
+   *   xMax_Extent ::
+   *     The maximum horizontal extent (i.e., the
+   *     `width' of a glyph's bounding box) for
+   *     all glyphs in the font.
+   *
+   *   caret_Slope_Rise ::
+   *     The rise coefficient of the cursor's
+   *     slope of the cursor (slope=rise/run).
+   *
+   *   caret_Slope_Run ::
+   *     The run coefficient of the cursor's
+   *     slope.
+   *
+   *   caret_Offset ::
+   *     The cursor's offset for slanted fonts.
+   *
+   *   Reserved ::
+   *     8~reserved bytes.
+   *
+   *   metric_Data_Format ::
+   *     Always~0.
+   *
+   *   number_Of_HMetrics ::
+   *     Number of HMetrics entries in the `hmtx'
+   *     table -- this value can be smaller than
+   *     the total number of glyphs in the font.
+   *
+   *   long_metrics ::
+   *     A pointer into the `hmtx' table.
+   *
+   *   short_metrics ::
+   *     A pointer into the `hmtx' table.
+   *
+   * @note:
+   *   For an OpenType variation font, the values of the following fields
+   *   can change after a call to @FT_Set_Var_Design_Coordinates (and
+   *   friends) if the font contains an `MVAR' table: `caret_Slope_Rise',
+   *   `caret_Slope_Run', and `caret_Offset'.
+   */
   typedef struct  TT_HoriHeader_
   {
     FT_Fixed   Version;
@@ -227,97 +243,113 @@
   } TT_HoriHeader;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_VertHeader                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to model a TrueType vertical header, the `vhea'   */
-  /*    table, as well as the corresponding vertical metrics table,        */
-  /*    `vmtx'.                                                            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    Version                 :: The table version.                      */
-  /*                                                                       */
-  /*    Ascender                :: The font's ascender, i.e., the distance */
-  /*                               from the baseline to the top-most of    */
-  /*                               all glyph points found in the font.     */
-  /*                                                                       */
-  /*                               This value is invalid in many fonts, as */
-  /*                               it is usually set by the font designer, */
-  /*                               and often reflects only a portion of    */
-  /*                               the glyphs found in the font (maybe     */
-  /*                               ASCII).                                 */
-  /*                                                                       */
-  /*                               You should use the `sTypoAscender'      */
-  /*                               field of the `OS/2' table instead if    */
-  /*                               you want the correct one.               */
-  /*                                                                       */
-  /*    Descender               :: The font's descender, i.e., the         */
-  /*                               distance from the baseline to the       */
-  /*                               bottom-most of all glyph points found   */
-  /*                               in the font.  It is negative.           */
-  /*                                                                       */
-  /*                               This value is invalid in many fonts, as */
-  /*                               it is usually set by the font designer, */
-  /*                               and often reflects only a portion of    */
-  /*                               the glyphs found in the font (maybe     */
-  /*                               ASCII).                                 */
-  /*                                                                       */
-  /*                               You should use the `sTypoDescender'     */
-  /*                               field of the `OS/2' table instead if    */
-  /*                               you want the correct one.               */
-  /*                                                                       */
-  /*    Line_Gap                :: The font's line gap, i.e., the distance */
-  /*                               to add to the ascender and descender to */
-  /*                               get the BTB, i.e., the                  */
-  /*                               baseline-to-baseline distance for the   */
-  /*                               font.                                   */
-  /*                                                                       */
-  /*    advance_Height_Max      :: This field is the maximum of all        */
-  /*                               advance heights found in the font.  It  */
-  /*                               can be used to compute the maximum      */
-  /*                               height of an arbitrary string of text.  */
-  /*                                                                       */
-  /*    min_Top_Side_Bearing    :: The minimum top side bearing of all     */
-  /*                               glyphs within the font.                 */
-  /*                                                                       */
-  /*    min_Bottom_Side_Bearing :: The minimum bottom side bearing of all  */
-  /*                               glyphs within the font.                 */
-  /*                                                                       */
-  /*    yMax_Extent             :: The maximum vertical extent (i.e., the  */
-  /*                               `height' of a glyph's bounding box) for */
-  /*                               all glyphs in the font.                 */
-  /*                                                                       */
-  /*    caret_Slope_Rise        :: The rise coefficient of the cursor's    */
-  /*                               slope of the cursor (slope=rise/run).   */
-  /*                                                                       */
-  /*    caret_Slope_Run         :: The run coefficient of the cursor's     */
-  /*                               slope.                                  */
-  /*                                                                       */
-  /*    caret_Offset            :: The cursor's offset for slanted fonts.  */
-  /*                                                                       */
-  /*    Reserved                :: 8~reserved bytes.                       */
-  /*                                                                       */
-  /*    metric_Data_Format      :: Always~0.                               */
-  /*                                                                       */
-  /*    number_Of_VMetrics      :: Number of VMetrics entries in the       */
-  /*                               `vmtx' table -- this value can be       */
-  /*                               smaller than the total number of glyphs */
-  /*                               in the font.                            */
-  /*                                                                       */
-  /*    long_metrics            :: A pointer into the `vmtx' table.        */
-  /*                                                                       */
-  /*    short_metrics           :: A pointer into the `vmtx' table.        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `Ascender',         */
-  /*    `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run',    */
-  /*    and `caret_Offset'.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_VertHeader
+   *
+   * @description:
+   *   A structure used to model a TrueType vertical header, the `vhea'
+   *   table, as well as the corresponding vertical metrics table,
+   *   `vmtx'.
+   *
+   * @fields:
+   *   Version ::
+   *     The table version.
+   *
+   *   Ascender ::
+   *     The font's ascender, i.e., the distance
+   *     from the baseline to the top-most of
+   *     all glyph points found in the font.
+   *
+   *     This value is invalid in many fonts, as
+   *     it is usually set by the font designer,
+   *     and often reflects only a portion of
+   *     the glyphs found in the font (maybe
+   *     ASCII).
+   *
+   *     You should use the `sTypoAscender'
+   *     field of the `OS/2' table instead if
+   *     you want the correct one.
+   *
+   *   Descender ::
+   *     The font's descender, i.e., the
+   *     distance from the baseline to the
+   *     bottom-most of all glyph points found
+   *     in the font.  It is negative.
+   *
+   *     This value is invalid in many fonts, as
+   *     it is usually set by the font designer,
+   *     and often reflects only a portion of
+   *     the glyphs found in the font (maybe
+   *     ASCII).
+   *
+   *     You should use the `sTypoDescender'
+   *     field of the `OS/2' table instead if
+   *     you want the correct one.
+   *
+   *   Line_Gap ::
+   *     The font's line gap, i.e., the distance
+   *     to add to the ascender and descender to
+   *     get the BTB, i.e., the
+   *     baseline-to-baseline distance for the
+   *     font.
+   *
+   *   advance_Height_Max ::
+   *     This field is the maximum of all
+   *     advance heights found in the font.  It
+   *     can be used to compute the maximum
+   *     height of an arbitrary string of text.
+   *
+   *   min_Top_Side_Bearing ::
+   *     The minimum top side bearing of all
+   *     glyphs within the font.
+   *
+   *   min_Bottom_Side_Bearing ::
+   *     The minimum bottom side bearing of all
+   *     glyphs within the font.
+   *
+   *   yMax_Extent ::
+   *     The maximum vertical extent (i.e., the
+   *     `height' of a glyph's bounding box) for
+   *     all glyphs in the font.
+   *
+   *   caret_Slope_Rise ::
+   *     The rise coefficient of the cursor's
+   *     slope of the cursor (slope=rise/run).
+   *
+   *   caret_Slope_Run ::
+   *     The run coefficient of the cursor's
+   *     slope.
+   *
+   *   caret_Offset ::
+   *     The cursor's offset for slanted fonts.
+   *
+   *   Reserved ::
+   *     8~reserved bytes.
+   *
+   *   metric_Data_Format ::
+   *     Always~0.
+   *
+   *   number_Of_VMetrics ::
+   *     Number of VMetrics entries in the
+   *     `vmtx' table -- this value can be
+   *     smaller than the total number of glyphs
+   *     in the font.
+   *
+   *   long_metrics ::
+   *     A pointer into the `vmtx' table.
+   *
+   *   short_metrics ::
+   *     A pointer into the `vmtx' table.
+   *
+   * @note:
+   *   For an OpenType variation font, the values of the following fields
+   *   can change after a call to @FT_Set_Var_Design_Coordinates (and
+   *   friends) if the font contains an `MVAR' table: `Ascender',
+   *   `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run',
+   *   and `caret_Offset'.
+   */
   typedef struct  TT_VertHeader_
   {
     FT_Fixed   Version;
@@ -349,33 +381,33 @@
   } TT_VertHeader;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_OS2                                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType `OS/2' table.  All fields comply   */
-  /*    to the OpenType specification.                                     */
-  /*                                                                       */
-  /*    Note that we now support old Mac fonts that do not include an      */
-  /*    `OS/2' table.  In this case, the `version' field is always set to  */
-  /*    0xFFFF.                                                            */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `sCapHeight',       */
-  /*    `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight',     */
-  /*    `usWinAscent', `usWinDescent', `yStrikeoutPosition',               */
-  /*    `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize',          */
-  /*    `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset',     */
-  /*    `ySuperscriptXSize', `ySuperscriptYOffset', and                    */
-  /*    `ySuperscriptYSize'.                                               */
-  /*                                                                       */
-  /*    Possible values for bits in the `ulUnicodeRangeX' fields are given */
-  /*    by the @TT_UCR_XXX macros.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_OS2
+   *
+   * @description:
+   *   A structure to model a TrueType `OS/2' table.  All fields comply
+   *   to the OpenType specification.
+   *
+   *   Note that we now support old Mac fonts that do not include an
+   *   `OS/2' table.  In this case, the `version' field is always set to
+   *   0xFFFF.
+   *
+   * @note:
+   *   For an OpenType variation font, the values of the following fields
+   *   can change after a call to @FT_Set_Var_Design_Coordinates (and
+   *   friends) if the font contains an `MVAR' table: `sCapHeight',
+   *   `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight',
+   *   `usWinAscent', `usWinDescent', `yStrikeoutPosition',
+   *   `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize',
+   *   `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset',
+   *   `ySuperscriptXSize', `ySuperscriptYOffset', and
+   *   `ySuperscriptYSize'.
+   *
+   *   Possible values for bits in the `ulUnicodeRangeX' fields are given
+   *   by the @TT_UCR_XXX macros.
+   */
 
   typedef struct  TT_OS2_
   {
@@ -435,23 +467,23 @@
   } TT_OS2;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_Postscript                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType `post' table.  All fields comply   */
-  /*    to the OpenType specification.  This structure does not reference  */
-  /*    a font's PostScript glyph names; use @FT_Get_Glyph_Name to         */
-  /*    retrieve them.                                                     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `underlinePosition' */
-  /*    and `underlineThickness'.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_Postscript
+   *
+   * @description:
+   *   A structure to model a TrueType `post' table.  All fields comply
+   *   to the OpenType specification.  This structure does not reference
+   *   a font's PostScript glyph names; use @FT_Get_Glyph_Name to
+   *   retrieve them.
+   *
+   * @note:
+   *   For an OpenType variation font, the values of the following fields
+   *   can change after a call to @FT_Set_Var_Design_Coordinates (and
+   *   friends) if the font contains an `MVAR' table: `underlinePosition'
+   *   and `underlineThickness'.
+   */
   typedef struct  TT_Postscript_
   {
     FT_Fixed  FormatType;
@@ -470,15 +502,15 @@
   } TT_Postscript;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_PCLT                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType `PCLT' table.  All fields comply   */
-  /*    to the OpenType specification.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_PCLT
+   *
+   * @description:
+   *   A structure to model a TrueType `PCLT' table.  All fields comply
+   *   to the OpenType specification.
+   */
   typedef struct  TT_PCLT_
   {
     FT_Fixed   Version;
@@ -500,70 +532,85 @@
   } TT_PCLT;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_MaxProfile                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The maximum profile (`maxp') table contains many max values, which */
-  /*    can be used to pre-allocate arrays for speeding up glyph loading   */
-  /*    and hinting.                                                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    version               :: The version number.                       */
-  /*                                                                       */
-  /*    numGlyphs             :: The number of glyphs in this TrueType     */
-  /*                             font.                                     */
-  /*                                                                       */
-  /*    maxPoints             :: The maximum number of points in a         */
-  /*                             non-composite TrueType glyph.  See also   */
-  /*                             `maxCompositePoints'.                     */
-  /*                                                                       */
-  /*    maxContours           :: The maximum number of contours in a       */
-  /*                             non-composite TrueType glyph.  See also   */
-  /*                             `maxCompositeContours'.                   */
-  /*                                                                       */
-  /*    maxCompositePoints    :: The maximum number of points in a         */
-  /*                             composite TrueType glyph.  See also       */
-  /*                             `maxPoints'.                              */
-  /*                                                                       */
-  /*    maxCompositeContours  :: The maximum number of contours in a       */
-  /*                             composite TrueType glyph.  See also       */
-  /*                             `maxContours'.                            */
-  /*                                                                       */
-  /*    maxZones              :: The maximum number of zones used for      */
-  /*                             glyph hinting.                            */
-  /*                                                                       */
-  /*    maxTwilightPoints     :: The maximum number of points in the       */
-  /*                             twilight zone used for glyph hinting.     */
-  /*                                                                       */
-  /*    maxStorage            :: The maximum number of elements in the     */
-  /*                             storage area used for glyph hinting.      */
-  /*                                                                       */
-  /*    maxFunctionDefs       :: The maximum number of function            */
-  /*                             definitions in the TrueType bytecode for  */
-  /*                             this font.                                */
-  /*                                                                       */
-  /*    maxInstructionDefs    :: The maximum number of instruction         */
-  /*                             definitions in the TrueType bytecode for  */
-  /*                             this font.                                */
-  /*                                                                       */
-  /*    maxStackElements      :: The maximum number of stack elements used */
-  /*                             during bytecode interpretation.           */
-  /*                                                                       */
-  /*    maxSizeOfInstructions :: The maximum number of TrueType opcodes    */
-  /*                             used for glyph hinting.                   */
-  /*                                                                       */
-  /*    maxComponentElements  :: The maximum number of simple (i.e., non-  */
-  /*                             composite) glyphs in a composite glyph.   */
-  /*                                                                       */
-  /*    maxComponentDepth     :: The maximum nesting depth of composite    */
-  /*                             glyphs.                                   */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This structure is only used during font loading.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_MaxProfile
+   *
+   * @description:
+   *   The maximum profile (`maxp') table contains many max values, which
+   *   can be used to pre-allocate arrays for speeding up glyph loading
+   *   and hinting.
+   *
+   * @fields:
+   *   version ::
+   *     The version number.
+   *
+   *   numGlyphs ::
+   *     The number of glyphs in this TrueType
+   *     font.
+   *
+   *   maxPoints ::
+   *     The maximum number of points in a
+   *     non-composite TrueType glyph.  See also
+   *     `maxCompositePoints'.
+   *
+   *   maxContours ::
+   *     The maximum number of contours in a
+   *     non-composite TrueType glyph.  See also
+   *     `maxCompositeContours'.
+   *
+   *   maxCompositePoints ::
+   *     The maximum number of points in a
+   *     composite TrueType glyph.  See also
+   *     `maxPoints'.
+   *
+   *   maxCompositeContours ::
+   *     The maximum number of contours in a
+   *     composite TrueType glyph.  See also
+   *     `maxContours'.
+   *
+   *   maxZones ::
+   *     The maximum number of zones used for
+   *     glyph hinting.
+   *
+   *   maxTwilightPoints ::
+   *     The maximum number of points in the
+   *     twilight zone used for glyph hinting.
+   *
+   *   maxStorage ::
+   *     The maximum number of elements in the
+   *     storage area used for glyph hinting.
+   *
+   *   maxFunctionDefs ::
+   *     The maximum number of function
+   *     definitions in the TrueType bytecode for
+   *     this font.
+   *
+   *   maxInstructionDefs ::
+   *     The maximum number of instruction
+   *     definitions in the TrueType bytecode for
+   *     this font.
+   *
+   *   maxStackElements ::
+   *     The maximum number of stack elements used
+   *     during bytecode interpretation.
+   *
+   *   maxSizeOfInstructions ::
+   *     The maximum number of TrueType opcodes
+   *     used for glyph hinting.
+   *
+   *   maxComponentElements ::
+   *     The maximum number of simple (i.e.,
+   *     non-composite) glyphs in a composite glyph.
+   *
+   *   maxComponentDepth ::
+   *     The maximum nesting depth of composite
+   *     glyphs.
+   *
+   * @note:
+   *   This structure is only used during font loading.
+   */
   typedef struct  TT_MaxProfile_
   {
     FT_Fixed   version;
@@ -585,31 +632,38 @@
   } TT_MaxProfile;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Sfnt_Tag                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration to specify indices of SFNT tables loaded and parsed */
-  /*    by FreeType during initialization of an SFNT font.  Used in the    */
-  /*    @FT_Get_Sfnt_Table API function.                                   */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_SFNT_HEAD :: To access the font's @TT_Header structure.         */
-  /*                                                                       */
-  /*    FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure.     */
-  /*                                                                       */
-  /*    FT_SFNT_OS2  :: To access the font's @TT_OS2 structure.            */
-  /*                                                                       */
-  /*    FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure.     */
-  /*                                                                       */
-  /*    FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure.     */
-  /*                                                                       */
-  /*    FT_SFNT_POST :: To access the font's @TT_Postscript structure.     */
-  /*                                                                       */
-  /*    FT_SFNT_PCLT :: To access the font's @TT_PCLT structure.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Sfnt_Tag
+   *
+   * @description:
+   *   An enumeration to specify indices of SFNT tables loaded and parsed
+   *   by FreeType during initialization of an SFNT font.  Used in the
+   *   @FT_Get_Sfnt_Table API function.
+   *
+   * @values:
+   *   FT_SFNT_HEAD ::
+   *     To access the font's @TT_Header structure.
+   *
+   *   FT_SFNT_MAXP ::
+   *     To access the font's @TT_MaxProfile structure.
+   *
+   *   FT_SFNT_OS2 ::
+   *     To access the font's @TT_OS2 structure.
+   *
+   *   FT_SFNT_HHEA ::
+   *     To access the font's @TT_HoriHeader structure.
+   *
+   *   FT_SFNT_VHEA ::
+   *     To access the font's @TT_VertHeader structure.
+   *
+   *   FT_SFNT_POST ::
+   *     To access the font's @TT_Postscript structure.
+   *
+   *   FT_SFNT_PCLT ::
+   *     To access the font's @TT_PCLT structure.
+   */
   typedef enum  FT_Sfnt_Tag_
   {
     FT_SFNT_HEAD,
@@ -635,44 +689,47 @@
 #define ft_sfnt_pclt  FT_SFNT_PCLT
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Sfnt_Table                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a pointer to a given SFNT table stored within a face.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the source.                                    */
-  /*                                                                       */
-  /*    tag  :: The index of the SFNT table.                               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A type-less pointer to the table.  This will be NULL in case of    */
-  /*    error, or if the corresponding table was not found *OR* loaded     */
-  /*    from the file.                                                     */
-  /*                                                                       */
-  /*    Use a typecast according to `tag' to access the structure          */
-  /*    elements.                                                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The table is owned by the face object and disappears with it.      */
-  /*                                                                       */
-  /*    This function is only useful to access SFNT tables that are loaded */
-  /*    by the sfnt, truetype, and opentype drivers.  See @FT_Sfnt_Tag for */
-  /*    a list.                                                            */
-  /*                                                                       */
-  /*    Here an example how to access the `vhea' table:                    */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      TT_VertHeader*  vert_header;                                     */
-  /*                                                                       */
-  /*                                                                       */
-  /*      vert_header =                                                    */
-  /*        (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA );       */
-  /*    }                                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Sfnt_Table
+   *
+   * @description:
+   *   Return a pointer to a given SFNT table stored within a face.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source.
+   *
+   *   tag ::
+   *     The index of the SFNT table.
+   *
+   * @return:
+   *   A type-less pointer to the table.  This will be NULL in case of
+   *   error, or if the corresponding table was not found *OR* loaded
+   *   from the file.
+   *
+   *   Use a typecast according to `tag' to access the structure
+   *   elements.
+   *
+   * @note:
+   *   The table is owned by the face object and disappears with it.
+   *
+   *   This function is only useful to access SFNT tables that are loaded
+   *   by the sfnt, truetype, and opentype drivers.  See @FT_Sfnt_Tag for
+   *   a list.
+   *
+   * @example:
+   *   Here an example how to access the `vhea' table.
+   *
+   *   {
+   *     TT_VertHeader*  vert_header;
+   *
+   *
+   *     vert_header =
+   *       (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA );
+   *   }
+   */
   FT_EXPORT( void* )
   FT_Get_Sfnt_Table( FT_Face      face,
                      FT_Sfnt_Tag  tag );
@@ -722,19 +779,19 @@
    *   If you need to determine the table's length you should first call this
    *   function with `*length' set to~0, as in the following example:
    *
-   *     {
-   *       FT_ULong  length = 0;
+   *   {
+   *     FT_ULong  length = 0;
    *
    *
-   *       error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
-   *       if ( error ) { ... table does not exist ... }
+   *     error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
+   *     if ( error ) { ... table does not exist ... }
    *
-   *       buffer = malloc( length );
-   *       if ( buffer == NULL ) { ... not enough memory ... }
+   *     buffer = malloc( length );
+   *     if ( buffer == NULL ) { ... not enough memory ... }
    *
-   *       error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
-   *       if ( error ) { ... could not load table ... }
-   *     }
+   *     error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
+   *     if ( error ) { ... could not load table ... }
+   *   }
    *
    *   Note that structures like @TT_Header or @TT_OS2 can't be used with
    *   this function; they are limited to @FT_Get_Sfnt_Table.  Reason is that
@@ -792,46 +849,46 @@
                       FT_ULong  *length );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_CMap_Language_ID                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return cmap language ID as specified in the OpenType standard.     */
-  /*    Definitions of language ID values are in file @FT_TRUETYPE_IDS_H.  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    charmap ::                                                         */
-  /*      The target charmap.                                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The language ID of `charmap'.  If `charmap' doesn't belong to an   */
-  /*    SFNT face, just return~0 as the default value.                     */
-  /*                                                                       */
-  /*    For a format~14 cmap (to access Unicode IVS), the return value is  */
-  /*    0xFFFFFFFF.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_CMap_Language_ID
+   *
+   * @description:
+   *   Return cmap language ID as specified in the OpenType standard.
+   *   Definitions of language ID values are in file @FT_TRUETYPE_IDS_H.
+   *
+   * @input:
+   *   charmap ::
+   *     The target charmap.
+   *
+   * @return:
+   *   The language ID of `charmap'.  If `charmap' doesn't belong to an
+   *   SFNT face, just return~0 as the default value.
+   *
+   *   For a format~14 cmap (to access Unicode IVS), the return value is
+   *   0xFFFFFFFF.
+   */
   FT_EXPORT( FT_ULong )
   FT_Get_CMap_Language_ID( FT_CharMap  charmap );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_CMap_Format                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the format of an SFNT `cmap' table.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    charmap ::                                                         */
-  /*      The target charmap.                                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The format of `charmap'.  If `charmap' doesn't belong to an SFNT   */
-  /*    face, return -1.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_CMap_Format
+   *
+   * @description:
+   *   Return the format of an SFNT `cmap' table.
+   *
+   * @input:
+   *   charmap ::
+   *     The target charmap.
+   *
+   * @return:
+   *   The format of `charmap'.  If `charmap' doesn't belong to an SFNT
+   *   face, return -1.
+   */
   FT_EXPORT( FT_Long )
   FT_Get_CMap_Format( FT_CharMap  charmap );
 
diff --git a/include/freetype/tttags.h b/include/freetype/tttags.h
index e5cee68..5e5d783 100644
--- a/include/freetype/tttags.h
+++ b/include/freetype/tttags.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  tttags.h                                                               */
-/*                                                                         */
-/*    Tags for TrueType and OpenType tables (specification only).          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * tttags.h
+ *
+ *   Tags for TrueType and OpenType tables (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTAGS_H_
@@ -46,6 +46,8 @@
 #define TTAG_CFF2  FT_MAKE_TAG( 'C', 'F', 'F', '2' )
 #define TTAG_CID   FT_MAKE_TAG( 'C', 'I', 'D', ' ' )
 #define TTAG_cmap  FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
+#define TTAG_COLR  FT_MAKE_TAG( 'C', 'O', 'L', 'R' )
+#define TTAG_CPAL  FT_MAKE_TAG( 'C', 'P', 'A', 'L' )
 #define TTAG_cvar  FT_MAKE_TAG( 'c', 'v', 'a', 'r' )
 #define TTAG_cvt   FT_MAKE_TAG( 'c', 'v', 't', ' ' )
 #define TTAG_DSIG  FT_MAKE_TAG( 'D', 'S', 'I', 'G' )
diff --git a/include/ft2build.h b/include/ft2build.h
index e7ce99b..97dbd3c 100644
--- a/include/ft2build.h
+++ b/include/ft2build.h
@@ -1,34 +1,36 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ft2build.h                                                             */
-/*                                                                         */
-/*    FreeType 2 build and setup macros.                                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ft2build.h
+ *
+ *   FreeType 2 build and setup macros.
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This is the `entry point' for FreeType header file inclusions.  It is */
-  /* the only header file which should be included directly; all other     */
-  /* FreeType header files should be accessed with macro names (after      */
-  /* including `ft2build.h').                                              */
-  /*                                                                       */
-  /* A typical example is                                                  */
-  /*                                                                       */
-  /*   #include <ft2build.h>                                               */
-  /*   #include FT_FREETYPE_H                                              */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This is the `entry point' for FreeType header file inclusions.  It is
+   * the only header file which should be included directly; all other
+   * FreeType header files should be accessed with macro names (after
+   * including `ft2build.h').
+   *
+   * A typical example is
+   *
+   * {
+   *   #include <ft2build.h>
+   *   #include FT_FREETYPE_H
+   * }
+   *
+   */
 
 
 #ifndef FT2BUILD_H_
diff --git a/modules.cfg b/modules.cfg
index 6ce0f3e..c46e619 100644
--- a/modules.cfg
+++ b/modules.cfg
@@ -37,7 +37,6 @@
 # PostScript Type 1 font driver.
 #
 # This driver needs the `psaux', `pshinter', and `psnames' modules.
-# No FT_CONFIG_OPTION_PIC support.
 FONT_MODULES += type1
 
 # CFF/OpenType font driver.
@@ -48,30 +47,24 @@
 # Type 1 CID-keyed font driver.
 #
 # This driver needs the `psaux', `pshinter', and `psnames' modules.
-# No FT_CONFIG_OPTION_PIC support.
 FONT_MODULES += cid
 
 # PFR/TrueDoc font driver.  See optional extension ftpfr.c below also.
-# No FT_CONFIG_OPTION_PIC support.
 FONT_MODULES += pfr
 
 # PostScript Type 42 font driver.
 #
 # This driver needs the `truetype' and `psaux' modules.
-# No FT_CONFIG_OPTION_PIC support.
 FONT_MODULES += type42
 
 # Windows FONT/FNT font driver.  See optional extension ftwinfnt.c below
 # also.
-# No FT_CONFIG_OPTION_PIC support.
 FONT_MODULES += winfonts
 
-# PCF font driver.
-# No FT_CONFIG_OPTION_PIC support.
+# PCF font driver.  If debugging and tracing is enabled, needs `ftbitmap.c'.
 FONT_MODULES += pcf
 
 # BDF font driver.  See optional extension ftbdf.c below also.
-# No FT_CONFIG_OPTION_PIC support.
 FONT_MODULES += bdf
 
 # SFNT files support.  If used without `truetype' or `cff', it supports
@@ -113,42 +106,35 @@
 
 # FreeType's cache sub-system (quite stable but still in beta -- this means
 # that its public API is subject to change if necessary).  See
-# include/freetype/ftcache.h.  Needs ftglyph.c.
-# No FT_CONFIG_OPTION_PIC support.
+# include/freetype/ftcache.h.  Needs `ftglyph.c'.
 AUX_MODULES += cache
 
-# TrueType GX/AAT table validation.  Needs ftgxval.c below.
+# TrueType GX/AAT table validation.  Needs `ftgxval.c' below.
 #
-# No FT_CONFIG_OPTION_PIC support.
 # AUX_MODULES += gxvalid
 
 # Support for streams compressed with gzip (files with suffix .gz).
 #
 # See include/freetype/ftgzip.h for the API.
-# No FT_CONFIG_OPTION_PIC support.
 AUX_MODULES += gzip
 
 # Support for streams compressed with LZW (files with suffix .Z).
 #
 # See include/freetype/ftlzw.h for the API.
-# No FT_CONFIG_OPTION_PIC support.
 AUX_MODULES += lzw
 
 # Support for streams compressed with bzip2 (files with suffix .bz2).
 #
 # See include/freetype/ftbzip2.h for the API.
-# No FT_CONFIG_OPTION_PIC support.
 AUX_MODULES += bzip2
 
-# OpenType table validation.  Needs ftotval.c below.
+# OpenType table validation.  Needs `ftotval.c' below.
 #
-# No FT_CONFIG_OPTION_PIC support.
 # AUX_MODULES += otvalid
 
 # Auxiliary PostScript driver component to share common code.
 #
 # This module depends on `psnames'.
-# No FT_CONFIG_OPTION_PIC support.
 AUX_MODULES += psaux
 
 # Support for PostScript glyph names.
@@ -183,12 +169,7 @@
 # See include/freetype/ftcid.h for the API.
 BASE_EXTENSIONS += ftcid.c
 
-# Support functions for font formats.
-#
-# See include/freetype/ftfntfmt.h for the API.
-BASE_EXTENSIONS += ftfntfmt.c
-
-# Access FSType information.  Needs fttype1.c.
+# Access FSType information.  Needs `fttype1.c'.
 #
 # See include/freetype/freetype.h for the API.
 BASE_EXTENSIONS += ftfstype.c
@@ -198,7 +179,7 @@
 # See include/freetype/ftgasp.h for the API.
 BASE_EXTENSIONS += ftgasp.c
 
-# Convenience functions to handle glyphs.  Needs ftbitmap.c.
+# Convenience functions to handle glyphs.  Needs `ftbitmap.c'.
 #
 # See include/freetype/ftglyph.h for the API.
 BASE_EXTENSIONS += ftglyph.c
@@ -208,11 +189,6 @@
 # See include/freetype/ftgxval.h for the API.
 BASE_EXTENSIONS += ftgxval.c
 
-# Support for LCD color filtering of subpixel bitmaps.
-#
-# See include/freetype/ftlcdfil.h for the API.
-BASE_EXTENSIONS += ftlcdfil.c
-
 # Multiple Master font interface.
 #
 # See include/freetype/ftmm.h for the API.
@@ -233,12 +209,13 @@
 # See include/freetype/ftpfr.h for the API.
 BASE_EXTENSIONS += ftpfr.c
 
-# Path stroker.  Needs ftglyph.c.
+# Path stroker.  Needs `ftglyph.c'.
 #
 # See include/freetype/ftstroke.h for the API.
 BASE_EXTENSIONS += ftstroke.c
 
-# Support for synthetic emboldening and slanting of fonts.  Needs ftbitmap.c.
+# Support for synthetic emboldening and slanting of fonts.  Needs
+# `ftbitmap.c'.
 #
 # See include/freetype/ftsynth.h for the API.
 BASE_EXTENSIONS += ftsynth.c
diff --git a/src/autofit/afangles.c b/src/autofit/afangles.c
index c65a3ae..f7b1c2c 100644
--- a/src/autofit/afangles.c
+++ b/src/autofit/afangles.c
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afangles.c                                                             */
-/*                                                                         */
-/*    Routines used to compute vector angles with limited accuracy         */
-/*    and very high speed.  It also contains sorting routines (body).      */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afangles.c
+ *
+ *   Routines used to compute vector angles with limited accuracy
+ *   and very high speed.  It also contains sorting routines (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "aftypes.h"
 
 
   /*
-   *  We are not using `af_angle_atan' anymore, but we keep the source
-   *  code below just in case...
+   * We are not using `af_angle_atan' anymore, but we keep the source
+   * code below just in case...
    */
 
 
@@ -30,16 +30,16 @@
 
 
   /*
-   *  The trick here is to realize that we don't need a very accurate angle
-   *  approximation.  We are going to use the result of `af_angle_atan' to
-   *  only compare the sign of angle differences, or check whether its
-   *  magnitude is very small.
+   * The trick here is to realize that we don't need a very accurate angle
+   * approximation.  We are going to use the result of `af_angle_atan' to
+   * only compare the sign of angle differences, or check whether its
+   * magnitude is very small.
    *
-   *  The approximation
+   * The approximation
    *
-   *    dy * PI / (|dx|+|dy|)
+   *   dy * PI / (|dx|+|dy|)
    *
-   *  should be enough, and much faster to compute.
+   * should be enough, and much faster to compute.
    */
   FT_LOCAL_DEF( AF_Angle )
   af_angle_atan( FT_Fixed  dx,
diff --git a/src/autofit/afangles.h b/src/autofit/afangles.h
index f33f9e1..18d7dae 100644
--- a/src/autofit/afangles.h
+++ b/src/autofit/afangles.h
@@ -1,7 +1,7 @@
 /*
- *  afangles.h
+ * afangles.h
  *
- *  This is a dummy file, used to please the build system.  It is never
- *  included by the auto-fitter sources.
+ * This is a dummy file, used to please the build system.  It is never
+ * included by the auto-fitter sources.
  *
  */
diff --git a/src/autofit/afblue.c b/src/autofit/afblue.c
index 61ab795..9b0ac13 100644
--- a/src/autofit/afblue.c
+++ b/src/autofit/afblue.c
@@ -1,22 +1,22 @@
 /* This file has been generated by the Perl script `afblue.pl', */
 /* using data from file `afblue.dat'.                           */
 
-/***************************************************************************/
-/*                                                                         */
-/*  afblue.c                                                               */
-/*                                                                         */
-/*    Auto-fitter data for blue strings (body).                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afblue.c
+ *
+ *   Auto-fitter data for blue strings (body).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "aftypes.h"
@@ -166,6 +166,10 @@
     '\0',
     '\xE2', '\xB4', '\x84', ' ', '\xE2', '\xB4', '\x85', ' ', '\xE2', '\xB4', '\x94', ' ', '\xE2', '\xB4', '\x95', ' ', '\xE2', '\xB4', '\x81', ' ', '\xE2', '\xB4', '\x82', ' ', '\xE2', '\xB4', '\x98', ' ', '\xE2', '\xB4', '\x9D',  /* ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ */
     '\0',
+    '\xE1', '\xB2', '\x9C', ' ', '\xE1', '\xB2', '\x9F', ' ', '\xE1', '\xB2', '\xB3', ' ', '\xE1', '\xB2', '\xB8', ' ', '\xE1', '\xB2', '\x92', ' ', '\xE1', '\xB2', '\x94', ' ', '\xE1', '\xB2', '\x9D', ' ', '\xE1', '\xB2', '\xB4',  /* Ნ Ჟ Ჳ Ჸ Გ Ე Ო Ჴ */
+    '\0',
+    '\xE1', '\xB2', '\x98', ' ', '\xE1', '\xB2', '\xB2', ' ', '\xE1', '\xB2', '\x9D', ' ', '\xE1', '\xB2', '\xA9', ' ', '\xE1', '\xB2', '\x9B', ' ', '\xE1', '\xB2', '\xA8', ' ', '\xE1', '\xB2', '\xAF', ' ', '\xE1', '\xB2', '\xBD',  /* Ი Ჲ Ო Ჩ Მ Შ Ჯ Ჽ */
+    '\0',
     '\xE2', '\xB0', '\x85', ' ', '\xE2', '\xB0', '\x94', ' ', '\xE2', '\xB0', '\xAA', ' ', '\xE2', '\xB0', '\x84', ' ', '\xE2', '\xB0', '\x82', ' ', '\xE2', '\xB0', '\x8A', ' ', '\xE2', '\xB0', '\xAB', ' ', '\xE2', '\xB0', '\x8B',  /* Ⰵ Ⱄ Ⱚ Ⰴ Ⰲ Ⰺ Ⱛ Ⰻ */
     '\0',
     '\xE2', '\xB0', '\x85', ' ', '\xE2', '\xB0', '\x84', ' ', '\xE2', '\xB0', '\x82', ' ', '\xE2', '\xB0', '\xAA', ' ', '\xE2', '\xB0', '\x9E', ' ', '\xE2', '\xB0', '\xA1', ' ', '\xE2', '\xB0', '\x8A', ' ', '\xE2', '\xB0', '\x94',  /* Ⰵ Ⰴ Ⰲ Ⱚ Ⱎ Ⱑ Ⰺ Ⱄ */
@@ -539,6 +543,8 @@
     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM,    0                                 },
     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        },
     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0                                 },
+    { AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        },
+    { AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM,     0                                 },
     { AF_BLUE_STRING_MAX,                          0                                 },
     { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        },
     { AF_BLUE_STRING_GEORGIAN_ASOMTAVRULI_BOTTOM, 0                                 },
diff --git a/src/autofit/afblue.cin b/src/autofit/afblue.cin
index 4913e2e..b7437e3 100644
--- a/src/autofit/afblue.cin
+++ b/src/autofit/afblue.cin
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afblue.c                                                               */
-/*                                                                         */
-/*    Auto-fitter data for blue strings (body).                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afblue.c
+ *
+ *   Auto-fitter data for blue strings (body).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "aftypes.h"
diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat
index d3cc428..1b8d5d7 100644
--- a/src/autofit/afblue.dat
+++ b/src/autofit/afblue.dat
@@ -1,15 +1,15 @@
-//  afblue.dat
+// afblue.dat
 //
-//    Auto-fitter data for blue strings.
+//   Auto-fitter data for blue strings.
 //
-//  Copyright 2013-2018 by
-//  David Turner, Robert Wilhelm, and Werner Lemberg.
+// Copyright 2013-2018 by
+// David Turner, Robert Wilhelm, and Werner Lemberg.
 //
-//  This file is part of the FreeType project, and may only be used,
-//  modified, and distributed under the terms of the FreeType project
-//  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-//  this file you indicate that you have read the license and
-//  understand and accept it fully.
+// This file is part of the FreeType project, and may only be used,
+// modified, and distributed under the terms of the FreeType project
+// license, LICENSE.TXT.  By continuing to use, modify, or distribute
+// this file you indicate that you have read the license and
+// understand and accept it fully.
 
 
 // This file contains data specific to blue zones.  It gets processed by
@@ -242,6 +242,11 @@
   AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER
     "ⴄ ⴅ ⴔ ⴕ ⴁ ⴂ ⴘ ⴝ"
 
+  AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP
+    "Ნ Ჟ Ჳ Ჸ Გ Ე Ო Ჴ"
+  AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM
+    "Ი Ჲ Ო Ჩ Მ Შ Ჯ Ჽ"
+
   AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP
     "Ⰵ Ⱄ Ⱚ Ⰴ Ⰲ Ⰺ Ⱛ Ⰻ"
   AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM
@@ -795,13 +800,14 @@
     { AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0                          }
     { AF_BLUE_STRING_MAX,             0                          }
 
-  // blue zones for Mtavruli are missing (not yet defined in Unicode)
   AF_BLUE_STRINGSET_GEOR
     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                                    AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM,    0                                 }
     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        }
     { AF_BLUE_STRING_GEORGIAN_MKHEDRULI_DESCENDER, 0                                 }
+    { AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP,        AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM,     0                                 }
     { AF_BLUE_STRING_MAX,                          0                                 }
 
   AF_BLUE_STRINGSET_GEOK
diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h
index 56b591a..1fbadbe 100644
--- a/src/autofit/afblue.h
+++ b/src/autofit/afblue.h
@@ -1,22 +1,22 @@
 /* This file has been generated by the Perl script `afblue.pl', */
 /* using data from file `afblue.dat'.                           */
 
-/***************************************************************************/
-/*                                                                         */
-/*  afblue.h                                                               */
-/*                                                                         */
-/*    Auto-fitter data for blue strings (specification).                   */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afblue.h
+ *
+ *   Auto-fitter data for blue strings (specification).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFBLUE_H_
@@ -147,119 +147,121 @@
     AF_BLUE_STRING_GEORGIAN_NUSKHURI_BOTTOM = 1813,
     AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER = 1845,
     AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER = 1877,
-    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1909,
-    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 1941,
-    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 1973,
-    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 2005,
-    AF_BLUE_STRING_GOTHIC_TOP = 2037,
-    AF_BLUE_STRING_GOTHIC_BOTTOM = 2077,
-    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 2097,
-    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 2118,
-    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 2136,
-    AF_BLUE_STRING_GREEK_SMALL = 2154,
-    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 2178,
-    AF_BLUE_STRING_GUJARATI_TOP = 2202,
-    AF_BLUE_STRING_GUJARATI_BOTTOM = 2234,
-    AF_BLUE_STRING_GUJARATI_ASCENDER = 2266,
-    AF_BLUE_STRING_GUJARATI_DESCENDER = 2316,
-    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 2349,
-    AF_BLUE_STRING_GURMUKHI_BASE = 2369,
-    AF_BLUE_STRING_GURMUKHI_HEAD = 2401,
-    AF_BLUE_STRING_GURMUKHI_TOP = 2433,
-    AF_BLUE_STRING_GURMUKHI_BOTTOM = 2465,
-    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2497,
-    AF_BLUE_STRING_HEBREW_TOP = 2517,
-    AF_BLUE_STRING_HEBREW_BOTTOM = 2541,
-    AF_BLUE_STRING_HEBREW_DESCENDER = 2559,
-    AF_BLUE_STRING_KANNADA_TOP = 2574,
-    AF_BLUE_STRING_KANNADA_BOTTOM = 2618,
-    AF_BLUE_STRING_KAYAH_LI_TOP = 2650,
-    AF_BLUE_STRING_KAYAH_LI_BOTTOM = 2674,
-    AF_BLUE_STRING_KAYAH_LI_ASCENDER = 2694,
-    AF_BLUE_STRING_KAYAH_LI_DESCENDER = 2702,
-    AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER = 2714,
-    AF_BLUE_STRING_KHMER_TOP = 2735,
-    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2759,
-    AF_BLUE_STRING_KHMER_BOTTOM = 2799,
-    AF_BLUE_STRING_KHMER_DESCENDER = 2831,
-    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2865,
-    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 2952,
-    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 2960,
-    AF_BLUE_STRING_LAO_TOP = 2968,
-    AF_BLUE_STRING_LAO_BOTTOM = 3000,
-    AF_BLUE_STRING_LAO_ASCENDER = 3032,
-    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 3048,
-    AF_BLUE_STRING_LAO_DESCENDER = 3060,
-    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 3084,
-    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 3100,
-    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 3116,
-    AF_BLUE_STRING_LATIN_SMALL_TOP = 3130,
-    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 3146,
-    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 3162,
-    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 3172,
-    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 3192,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 3212,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL = 3232,
-    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 3268,
-    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 3288,
-    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 3319,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 3348,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL = 3374,
-    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 3399,
-    AF_BLUE_STRING_LISU_TOP = 3410,
-    AF_BLUE_STRING_LISU_BOTTOM = 3442,
-    AF_BLUE_STRING_MALAYALAM_TOP = 3474,
-    AF_BLUE_STRING_MALAYALAM_BOTTOM = 3518,
-    AF_BLUE_STRING_MYANMAR_TOP = 3550,
-    AF_BLUE_STRING_MYANMAR_BOTTOM = 3582,
-    AF_BLUE_STRING_MYANMAR_ASCENDER = 3614,
-    AF_BLUE_STRING_MYANMAR_DESCENDER = 3642,
-    AF_BLUE_STRING_NKO_TOP = 3674,
-    AF_BLUE_STRING_NKO_BOTTOM = 3698,
-    AF_BLUE_STRING_NKO_SMALL_TOP = 3713,
-    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3722,
-    AF_BLUE_STRING_OL_CHIKI = 3734,
-    AF_BLUE_STRING_OLD_TURKIC_TOP = 3758,
-    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3773,
-    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3793,
-    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3833,
-    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3863,
-    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3878,
-    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3918,
-    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 3958,
-    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 3983,
-    AF_BLUE_STRING_OSMANYA_TOP = 3998,
-    AF_BLUE_STRING_OSMANYA_BOTTOM = 4038,
-    AF_BLUE_STRING_SAURASHTRA_TOP = 4078,
-    AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4110,
-    AF_BLUE_STRING_SHAVIAN_TOP = 4130,
-    AF_BLUE_STRING_SHAVIAN_BOTTOM = 4140,
-    AF_BLUE_STRING_SHAVIAN_DESCENDER = 4165,
-    AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4175,
-    AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4210,
-    AF_BLUE_STRING_SINHALA_TOP = 4225,
-    AF_BLUE_STRING_SINHALA_BOTTOM = 4257,
-    AF_BLUE_STRING_SINHALA_DESCENDER = 4289,
-    AF_BLUE_STRING_SUNDANESE_TOP = 4333,
-    AF_BLUE_STRING_SUNDANESE_BOTTOM = 4357,
-    AF_BLUE_STRING_SUNDANESE_DESCENDER = 4389,
-    AF_BLUE_STRING_TAI_VIET_TOP = 4397,
-    AF_BLUE_STRING_TAI_VIET_BOTTOM = 4417,
-    AF_BLUE_STRING_TAMIL_TOP = 4429,
-    AF_BLUE_STRING_TAMIL_BOTTOM = 4461,
-    AF_BLUE_STRING_TELUGU_TOP = 4493,
-    AF_BLUE_STRING_TELUGU_BOTTOM = 4521,
-    AF_BLUE_STRING_THAI_TOP = 4549,
-    AF_BLUE_STRING_THAI_BOTTOM = 4573,
-    AF_BLUE_STRING_THAI_ASCENDER = 4601,
-    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4613,
-    AF_BLUE_STRING_THAI_DESCENDER = 4625,
-    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4641,
-    AF_BLUE_STRING_THAI_DIGIT_TOP = 4649,
-    AF_BLUE_STRING_TIFINAGH = 4661,
-    AF_BLUE_STRING_VAI_TOP = 4693,
-    AF_BLUE_STRING_VAI_BOTTOM = 4725,
-    af_blue_1_1 = 4756,
+    AF_BLUE_STRING_GEORGIAN_MTAVRULI_TOP = 1909,
+    AF_BLUE_STRING_GEORGIAN_MTAVRULI_BOTTOM = 1941,
+    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP = 1973,
+    AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM = 2005,
+    AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP = 2037,
+    AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM = 2069,
+    AF_BLUE_STRING_GOTHIC_TOP = 2101,
+    AF_BLUE_STRING_GOTHIC_BOTTOM = 2141,
+    AF_BLUE_STRING_GREEK_CAPITAL_TOP = 2161,
+    AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM = 2182,
+    AF_BLUE_STRING_GREEK_SMALL_BETA_TOP = 2200,
+    AF_BLUE_STRING_GREEK_SMALL = 2218,
+    AF_BLUE_STRING_GREEK_SMALL_DESCENDER = 2242,
+    AF_BLUE_STRING_GUJARATI_TOP = 2266,
+    AF_BLUE_STRING_GUJARATI_BOTTOM = 2298,
+    AF_BLUE_STRING_GUJARATI_ASCENDER = 2330,
+    AF_BLUE_STRING_GUJARATI_DESCENDER = 2380,
+    AF_BLUE_STRING_GUJARATI_DIGIT_TOP = 2413,
+    AF_BLUE_STRING_GURMUKHI_BASE = 2433,
+    AF_BLUE_STRING_GURMUKHI_HEAD = 2465,
+    AF_BLUE_STRING_GURMUKHI_TOP = 2497,
+    AF_BLUE_STRING_GURMUKHI_BOTTOM = 2529,
+    AF_BLUE_STRING_GURMUKHI_DIGIT_TOP = 2561,
+    AF_BLUE_STRING_HEBREW_TOP = 2581,
+    AF_BLUE_STRING_HEBREW_BOTTOM = 2605,
+    AF_BLUE_STRING_HEBREW_DESCENDER = 2623,
+    AF_BLUE_STRING_KANNADA_TOP = 2638,
+    AF_BLUE_STRING_KANNADA_BOTTOM = 2682,
+    AF_BLUE_STRING_KAYAH_LI_TOP = 2714,
+    AF_BLUE_STRING_KAYAH_LI_BOTTOM = 2738,
+    AF_BLUE_STRING_KAYAH_LI_ASCENDER = 2758,
+    AF_BLUE_STRING_KAYAH_LI_DESCENDER = 2766,
+    AF_BLUE_STRING_KAYAH_LI_LARGE_DESCENDER = 2778,
+    AF_BLUE_STRING_KHMER_TOP = 2799,
+    AF_BLUE_STRING_KHMER_SUBSCRIPT_TOP = 2823,
+    AF_BLUE_STRING_KHMER_BOTTOM = 2863,
+    AF_BLUE_STRING_KHMER_DESCENDER = 2895,
+    AF_BLUE_STRING_KHMER_LARGE_DESCENDER = 2929,
+    AF_BLUE_STRING_KHMER_SYMBOLS_WAXING_TOP = 3016,
+    AF_BLUE_STRING_KHMER_SYMBOLS_WANING_BOTTOM = 3024,
+    AF_BLUE_STRING_LAO_TOP = 3032,
+    AF_BLUE_STRING_LAO_BOTTOM = 3064,
+    AF_BLUE_STRING_LAO_ASCENDER = 3096,
+    AF_BLUE_STRING_LAO_LARGE_ASCENDER = 3112,
+    AF_BLUE_STRING_LAO_DESCENDER = 3124,
+    AF_BLUE_STRING_LATIN_CAPITAL_TOP = 3148,
+    AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM = 3164,
+    AF_BLUE_STRING_LATIN_SMALL_F_TOP = 3180,
+    AF_BLUE_STRING_LATIN_SMALL_TOP = 3194,
+    AF_BLUE_STRING_LATIN_SMALL_BOTTOM = 3210,
+    AF_BLUE_STRING_LATIN_SMALL_DESCENDER = 3226,
+    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP = 3236,
+    AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM = 3256,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP = 3276,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL = 3296,
+    AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER = 3332,
+    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP = 3352,
+    AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM = 3383,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP = 3412,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL = 3438,
+    AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER = 3463,
+    AF_BLUE_STRING_LISU_TOP = 3474,
+    AF_BLUE_STRING_LISU_BOTTOM = 3506,
+    AF_BLUE_STRING_MALAYALAM_TOP = 3538,
+    AF_BLUE_STRING_MALAYALAM_BOTTOM = 3582,
+    AF_BLUE_STRING_MYANMAR_TOP = 3614,
+    AF_BLUE_STRING_MYANMAR_BOTTOM = 3646,
+    AF_BLUE_STRING_MYANMAR_ASCENDER = 3678,
+    AF_BLUE_STRING_MYANMAR_DESCENDER = 3706,
+    AF_BLUE_STRING_NKO_TOP = 3738,
+    AF_BLUE_STRING_NKO_BOTTOM = 3762,
+    AF_BLUE_STRING_NKO_SMALL_TOP = 3777,
+    AF_BLUE_STRING_NKO_SMALL_BOTTOM = 3786,
+    AF_BLUE_STRING_OL_CHIKI = 3798,
+    AF_BLUE_STRING_OLD_TURKIC_TOP = 3822,
+    AF_BLUE_STRING_OLD_TURKIC_BOTTOM = 3837,
+    AF_BLUE_STRING_OSAGE_CAPITAL_TOP = 3857,
+    AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM = 3897,
+    AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER = 3927,
+    AF_BLUE_STRING_OSAGE_SMALL_TOP = 3942,
+    AF_BLUE_STRING_OSAGE_SMALL_BOTTOM = 3982,
+    AF_BLUE_STRING_OSAGE_SMALL_ASCENDER = 4022,
+    AF_BLUE_STRING_OSAGE_SMALL_DESCENDER = 4047,
+    AF_BLUE_STRING_OSMANYA_TOP = 4062,
+    AF_BLUE_STRING_OSMANYA_BOTTOM = 4102,
+    AF_BLUE_STRING_SAURASHTRA_TOP = 4142,
+    AF_BLUE_STRING_SAURASHTRA_BOTTOM = 4174,
+    AF_BLUE_STRING_SHAVIAN_TOP = 4194,
+    AF_BLUE_STRING_SHAVIAN_BOTTOM = 4204,
+    AF_BLUE_STRING_SHAVIAN_DESCENDER = 4229,
+    AF_BLUE_STRING_SHAVIAN_SMALL_TOP = 4239,
+    AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM = 4274,
+    AF_BLUE_STRING_SINHALA_TOP = 4289,
+    AF_BLUE_STRING_SINHALA_BOTTOM = 4321,
+    AF_BLUE_STRING_SINHALA_DESCENDER = 4353,
+    AF_BLUE_STRING_SUNDANESE_TOP = 4397,
+    AF_BLUE_STRING_SUNDANESE_BOTTOM = 4421,
+    AF_BLUE_STRING_SUNDANESE_DESCENDER = 4453,
+    AF_BLUE_STRING_TAI_VIET_TOP = 4461,
+    AF_BLUE_STRING_TAI_VIET_BOTTOM = 4481,
+    AF_BLUE_STRING_TAMIL_TOP = 4493,
+    AF_BLUE_STRING_TAMIL_BOTTOM = 4525,
+    AF_BLUE_STRING_TELUGU_TOP = 4557,
+    AF_BLUE_STRING_TELUGU_BOTTOM = 4585,
+    AF_BLUE_STRING_THAI_TOP = 4613,
+    AF_BLUE_STRING_THAI_BOTTOM = 4637,
+    AF_BLUE_STRING_THAI_ASCENDER = 4665,
+    AF_BLUE_STRING_THAI_LARGE_ASCENDER = 4677,
+    AF_BLUE_STRING_THAI_DESCENDER = 4689,
+    AF_BLUE_STRING_THAI_LARGE_DESCENDER = 4705,
+    AF_BLUE_STRING_THAI_DIGIT_TOP = 4713,
+    AF_BLUE_STRING_TIFINAGH = 4725,
+    AF_BLUE_STRING_VAI_TOP = 4757,
+    AF_BLUE_STRING_VAI_BOTTOM = 4789,
+    af_blue_1_1 = 4820,
 #ifdef AF_CONFIG_OPTION_CJK
     AF_BLUE_STRING_CJK_TOP = af_blue_1_1 + 1,
     AF_BLUE_STRING_CJK_BOTTOM = af_blue_1_1 + 203,
@@ -336,41 +338,41 @@
     AF_BLUE_STRINGSET_DSRT = 75,
     AF_BLUE_STRINGSET_ETHI = 80,
     AF_BLUE_STRINGSET_GEOR = 83,
-    AF_BLUE_STRINGSET_GEOK = 88,
-    AF_BLUE_STRINGSET_GLAG = 95,
-    AF_BLUE_STRINGSET_GOTH = 100,
-    AF_BLUE_STRINGSET_GREK = 103,
-    AF_BLUE_STRINGSET_GUJR = 110,
-    AF_BLUE_STRINGSET_GURU = 116,
-    AF_BLUE_STRINGSET_HEBR = 122,
-    AF_BLUE_STRINGSET_KALI = 126,
-    AF_BLUE_STRINGSET_KHMR = 132,
-    AF_BLUE_STRINGSET_KHMS = 138,
-    AF_BLUE_STRINGSET_KNDA = 141,
-    AF_BLUE_STRINGSET_LAO = 144,
-    AF_BLUE_STRINGSET_LATN = 150,
-    AF_BLUE_STRINGSET_LATB = 157,
-    AF_BLUE_STRINGSET_LATP = 164,
-    AF_BLUE_STRINGSET_LISU = 171,
-    AF_BLUE_STRINGSET_MLYM = 174,
-    AF_BLUE_STRINGSET_MYMR = 177,
-    AF_BLUE_STRINGSET_NKOO = 182,
-    AF_BLUE_STRINGSET_NONE = 187,
-    AF_BLUE_STRINGSET_OLCK = 188,
-    AF_BLUE_STRINGSET_ORKH = 191,
-    AF_BLUE_STRINGSET_OSGE = 194,
-    AF_BLUE_STRINGSET_OSMA = 202,
-    AF_BLUE_STRINGSET_SAUR = 205,
-    AF_BLUE_STRINGSET_SHAW = 208,
-    AF_BLUE_STRINGSET_SINH = 214,
-    AF_BLUE_STRINGSET_SUND = 218,
-    AF_BLUE_STRINGSET_TAML = 222,
-    AF_BLUE_STRINGSET_TAVT = 225,
-    AF_BLUE_STRINGSET_TELU = 228,
-    AF_BLUE_STRINGSET_TFNG = 231,
-    AF_BLUE_STRINGSET_THAI = 234,
-    AF_BLUE_STRINGSET_VAII = 242,
-    af_blue_2_1 = 245,
+    AF_BLUE_STRINGSET_GEOK = 90,
+    AF_BLUE_STRINGSET_GLAG = 97,
+    AF_BLUE_STRINGSET_GOTH = 102,
+    AF_BLUE_STRINGSET_GREK = 105,
+    AF_BLUE_STRINGSET_GUJR = 112,
+    AF_BLUE_STRINGSET_GURU = 118,
+    AF_BLUE_STRINGSET_HEBR = 124,
+    AF_BLUE_STRINGSET_KALI = 128,
+    AF_BLUE_STRINGSET_KHMR = 134,
+    AF_BLUE_STRINGSET_KHMS = 140,
+    AF_BLUE_STRINGSET_KNDA = 143,
+    AF_BLUE_STRINGSET_LAO = 146,
+    AF_BLUE_STRINGSET_LATN = 152,
+    AF_BLUE_STRINGSET_LATB = 159,
+    AF_BLUE_STRINGSET_LATP = 166,
+    AF_BLUE_STRINGSET_LISU = 173,
+    AF_BLUE_STRINGSET_MLYM = 176,
+    AF_BLUE_STRINGSET_MYMR = 179,
+    AF_BLUE_STRINGSET_NKOO = 184,
+    AF_BLUE_STRINGSET_NONE = 189,
+    AF_BLUE_STRINGSET_OLCK = 190,
+    AF_BLUE_STRINGSET_ORKH = 193,
+    AF_BLUE_STRINGSET_OSGE = 196,
+    AF_BLUE_STRINGSET_OSMA = 204,
+    AF_BLUE_STRINGSET_SAUR = 207,
+    AF_BLUE_STRINGSET_SHAW = 210,
+    AF_BLUE_STRINGSET_SINH = 216,
+    AF_BLUE_STRINGSET_SUND = 220,
+    AF_BLUE_STRINGSET_TAML = 224,
+    AF_BLUE_STRINGSET_TAVT = 227,
+    AF_BLUE_STRINGSET_TELU = 230,
+    AF_BLUE_STRINGSET_TFNG = 233,
+    AF_BLUE_STRINGSET_THAI = 236,
+    AF_BLUE_STRINGSET_VAII = 244,
+    af_blue_2_1 = 247,
 #ifdef AF_CONFIG_OPTION_CJK
     AF_BLUE_STRINGSET_HANI = af_blue_2_1 + 0,
     af_blue_2_1_1 = af_blue_2_1 + 2,
diff --git a/src/autofit/afblue.hin b/src/autofit/afblue.hin
index 682147c..3f1d311 100644
--- a/src/autofit/afblue.hin
+++ b/src/autofit/afblue.hin
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afblue.h                                                               */
-/*                                                                         */
-/*    Auto-fitter data for blue strings (specification).                   */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afblue.h
+ *
+ *   Auto-fitter data for blue strings (specification).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFBLUE_H_
diff --git a/src/autofit/afcjk.c b/src/autofit/afcjk.c
index 21b6bff..dc38153 100644
--- a/src/autofit/afcjk.c
+++ b/src/autofit/afcjk.c
@@ -1,24 +1,24 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afcjk.c                                                                */
-/*                                                                         */
-/*    Auto-fitter hinting routines for CJK writing system (body).          */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afcjk.c
+ *
+ *   Auto-fitter hinting routines for CJK writing system (body).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
   /*
-   *  The algorithm is based on akito's autohint patch, archived at
+   * The algorithm is based on akito's autohint patch, archived at
    *
-   *  https://web.archive.org/web/20051219160454/http://www.kde.gr.jp:80/~akito/patch/freetype2/2.1.7/
+   * https://web.archive.org/web/20051219160454/http://www.kde.gr.jp:80/~akito/patch/freetype2/2.1.7/
    *
    */
 
@@ -27,7 +27,6 @@
 #include FT_INTERNAL_DEBUG_H
 
 #include "afglobal.h"
-#include "afpic.h"
 #include "aflatin.h"
 #include "afcjk.h"
 
@@ -44,12 +43,12 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_afcjk
 
@@ -92,23 +91,29 @@
       AF_CJKMetricsRec  dummy[1];
       AF_Scaler         scaler = &dummy->root.scaler;
 
-#ifdef FT_CONFIG_OPTION_PIC
-      AF_FaceGlobals  globals = metrics->root.globals;
+      AF_StyleClass   style_class  = metrics->root.style_class;
+      AF_ScriptClass  script_class = af_script_classes[style_class->script];
+
+      /* If HarfBuzz is not available, we need a pointer to a single */
+      /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+      void*     shaper_buf;
+#else
+      FT_ULong  shaper_buf_;
+      void*     shaper_buf = &shaper_buf_;
 #endif
 
-      AF_StyleClass   style_class  = metrics->root.style_class;
-      AF_ScriptClass  script_class = AF_SCRIPT_CLASSES_GET
-                                       [style_class->script];
-
-      void*        shaper_buf;
       const char*  p;
 
 #ifdef FT_DEBUG_LEVEL_TRACE
       FT_ULong  ch = 0;
 #endif
 
-      p          = script_class->standard_charstring;
+      p = script_class->standard_charstring;
+
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
       shaper_buf = af_shaper_buf_create( face );
+#endif
 
       /* We check a list of standard characters.  The first match wins. */
 
@@ -193,10 +198,10 @@
           goto Exit;
 
         /*
-         *  We assume that the glyphs selected for the stem width
-         *  computation are `featureless' enough so that the linking
-         *  algorithm works fine without adjustments of its scoring
-         *  function.
+         * We assume that the glyphs selected for the stem width
+         * computation are `featureless' enough so that the linking
+         * algorithm works fine without adjustments of its scoring
+         * function.
          */
         af_latin_hints_link_segments( hints,
                                       0,
@@ -296,7 +301,14 @@
     AF_Blue_Stringset         bss = sc->blue_stringset;
     const AF_Blue_StringRec*  bs  = &af_blue_stringsets[bss];
 
-    void*  shaper_buf;
+    /* If HarfBuzz is not available, we need a pointer to a single */
+    /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+    void*     shaper_buf;
+#else
+    FT_ULong  shaper_buf_;
+    void*     shaper_buf = &shaper_buf_;
+#endif
 
 
     /* we walk over the blue character strings as specified in the   */
@@ -307,7 +319,9 @@
                 "==========================\n"
                 "\n" ));
 
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
     shaper_buf = af_shaper_buf_create( face );
+#endif
 
     for ( ; bs->string != AF_BLUE_STRING_MAX; bs++ )
     {
@@ -483,8 +497,8 @@
       if ( num_flats == 0 && num_fills == 0 )
       {
         /*
-         *  we couldn't find a single glyph to compute this blue zone,
-         *  we will simply ignore it then
+         * we couldn't find a single glyph to compute this blue zone,
+         * we will simply ignore it then
          */
         FT_TRACE5(( "  empty\n" ));
         continue;
@@ -565,15 +579,25 @@
     FT_Bool   started = 0, same_width = 1;
     FT_Fixed  advance = 0, old_advance = 0;
 
-    void*  shaper_buf;
+    /* If HarfBuzz is not available, we need a pointer to a single */
+    /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+    void*     shaper_buf;
+#else
+    FT_ULong  shaper_buf_;
+    void*     shaper_buf = &shaper_buf_;
+#endif
 
     /* in all supported charmaps, digits have character codes 0x30-0x39 */
     const char   digits[] = "0 1 2 3 4 5 6 7 8 9";
     const char*  p;
 
 
-    p          = digits;
+    p = digits;
+
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
     shaper_buf = af_shaper_buf_create( face );
+#endif
 
     while ( *p )
     {
@@ -890,11 +914,11 @@
     }
 
     /*
-     *  now compute the `serif' segments
+     * now compute the `serif' segments
      *
-     *  In Hanzi, some strokes are wider on one or both of the ends.
-     *  We either identify the stems on the ends as serifs or remove
-     *  the linkage, depending on the length of the stems.
+     * In Hanzi, some strokes are wider on one or both of the ends.
+     * We either identify the stems on the ends as serifs or remove
+     * the linkage, depending on the length of the stems.
      *
      */
 
@@ -1000,21 +1024,21 @@
     scale = ( dim == AF_DIMENSION_HORZ ) ? hints->x_scale
                                          : hints->y_scale;
 
-    /*********************************************************************/
-    /*                                                                   */
-    /* We begin by generating a sorted table of edges for the current    */
-    /* direction.  To do so, we simply scan each segment and try to find */
-    /* an edge in our table that corresponds to its position.            */
-    /*                                                                   */
-    /* If no edge is found, we create and insert a new edge in the       */
-    /* sorted table.  Otherwise, we simply add the segment to the edge's */
-    /* list which is then processed in the second step to compute the    */
-    /* edge's properties.                                                */
-    /*                                                                   */
-    /* Note that the edges table is sorted along the segment/edge        */
-    /* position.                                                         */
-    /*                                                                   */
-    /*********************************************************************/
+    /**********************************************************************
+     *
+     * We begin by generating a sorted table of edges for the current
+     * direction.  To do so, we simply scan each segment and try to find
+     * an edge in our table that corresponds to its position.
+     *
+     * If no edge is found, we create and insert a new edge in the
+     * sorted table.  Otherwise, we simply add the segment to the edge's
+     * list which is then processed in the second step to compute the
+     * edge's properties.
+     *
+     * Note that the edges table is sorted along the segment/edge
+     * position.
+     *
+     */
 
     edge_distance_threshold = FT_MulFix( laxis->edge_distance_threshold,
                                          scale );
@@ -1114,17 +1138,17 @@
       }
     }
 
-    /******************************************************************/
-    /*                                                                */
-    /* Good, we now compute each edge's properties according to the   */
-    /* segments found on its position.  Basically, these are          */
-    /*                                                                */
-    /*  - the edge's main direction                                   */
-    /*  - stem edge, serif edge or both (which defaults to stem then) */
-    /*  - rounded edge, straight or both (which defaults to straight) */
-    /*  - link for edge                                               */
-    /*                                                                */
-    /******************************************************************/
+    /*******************************************************************
+     *
+     * Good, we now compute each edge's properties according to the
+     * segments found on its position.  Basically, these are
+     *
+     * - the edge's main direction
+     * - stem edge, serif edge or both (which defaults to stem then)
+     * - rounded edge, straight or both (which defaults to straight)
+     * - link for edge
+     *
+     */
 
     /* first of all, set the `edge' field in each segment -- this is */
     /* required in order to compute edge links                       */
@@ -1364,8 +1388,8 @@
     af_glyph_hints_rescale( hints, (AF_StyleMetrics)metrics );
 
     /*
-     *  correct x_scale and y_scale when needed, since they may have
-     *  been modified af_cjk_scale_dim above
+     * correct x_scale and y_scale when needed, since they may have
+     * been modified af_cjk_scale_dim above
      */
     hints->x_scale = metrics->axis[AF_DIMENSION_HORZ].scale;
     hints->x_delta = metrics->axis[AF_DIMENSION_HORZ].delta;
@@ -1384,21 +1408,21 @@
     other_flags  = 0;
 
     /*
-     *  We snap the width of vertical stems for the monochrome and
-     *  horizontal LCD rendering targets only.
+     * We snap the width of vertical stems for the monochrome and
+     * horizontal LCD rendering targets only.
      */
     if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD )
       other_flags |= AF_LATIN_HINTS_HORZ_SNAP;
 
     /*
-     *  We snap the width of horizontal stems for the monochrome and
-     *  vertical LCD rendering targets only.
+     * We snap the width of horizontal stems for the monochrome and
+     * vertical LCD rendering targets only.
      */
     if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V )
       other_flags |= AF_LATIN_HINTS_VERT_SNAP;
 
     /*
-     *  We adjust stems to full pixels unless in `light' or `lcd' mode.
+     * We adjust stems to full pixels unless in `light' or `lcd' mode.
      */
     if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
       other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
@@ -2094,8 +2118,8 @@
       goto Exit;
 
     /*
-     *  now hint the remaining edges (serifs and single) in order
-     *  to complete our processing
+     * now hint the remaining edges (serifs and single) in order
+     * to complete our processing
      */
     for ( edge = edges; edge < edge_limit; edge++ )
     {
diff --git a/src/autofit/afcjk.h b/src/autofit/afcjk.h
index d229c0c..707271b 100644
--- a/src/autofit/afcjk.h
+++ b/src/autofit/afcjk.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afcjk.h                                                                */
-/*                                                                         */
-/*    Auto-fitter hinting routines for CJK writing system (specification). */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afcjk.h
+ *
+ *   Auto-fitter hinting routines for CJK writing system (specification).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFCJK_H_
@@ -41,9 +41,9 @@
 
 
   /*
-   *  CJK glyphs tend to fill the square.  So we have both vertical and
-   *  horizontal blue zones.  But some glyphs have flat bounding strokes that
-   *  leave some space between neighbour glyphs.
+   * CJK glyphs tend to fill the square.  So we have both vertical and
+   * horizontal blue zones.  But some glyphs have flat bounding strokes that
+   * leave some space between neighbour glyphs.
    */
 
 #define AF_CJK_IS_TOP_BLUE( b ) \
diff --git a/src/autofit/afcover.h b/src/autofit/afcover.h
index 6eeb8fc..47f3e47 100644
--- a/src/autofit/afcover.h
+++ b/src/autofit/afcover.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afcover.h                                                              */
-/*                                                                         */
-/*    Auto-fitter coverages (specification only).                          */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afcover.h
+ *
+ *   Auto-fitter coverages (specification only).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /* This header file can be included multiple times. */
diff --git a/src/autofit/afdummy.c b/src/autofit/afdummy.c
index f30c517..abd9509 100644
--- a/src/autofit/afdummy.c
+++ b/src/autofit/afdummy.c
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afdummy.c                                                              */
-/*                                                                         */
-/*    Auto-fitter dummy routines to be used if no hinting should be        */
-/*    performed (body).                                                    */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afdummy.c
+ *
+ *   Auto-fitter dummy routines to be used if no hinting should be
+ *   performed (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "afdummy.h"
diff --git a/src/autofit/afdummy.h b/src/autofit/afdummy.h
index b382acd..e01c49c 100644
--- a/src/autofit/afdummy.h
+++ b/src/autofit/afdummy.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afdummy.h                                                              */
-/*                                                                         */
-/*    Auto-fitter dummy routines to be used if no hinting should be        */
-/*    performed (specification).                                           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afdummy.h
+ *
+ *   Auto-fitter dummy routines to be used if no hinting should be
+ *   performed (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFDUMMY_H_
diff --git a/src/autofit/aferrors.h b/src/autofit/aferrors.h
index e5de543..56e00cc 100644
--- a/src/autofit/aferrors.h
+++ b/src/autofit/aferrors.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  aferrors.h                                                             */
-/*                                                                         */
-/*    Autofitter error codes (specification only).                         */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aferrors.h
+ *
+ *   Autofitter error codes (specification only).
+ *
+ * Copyright 2005-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the Autofitter error enumeration          */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the Autofitter error enumeration
+   * constants.
+   *
+   */
 
 #ifndef AFERRORS_H_
 #define AFERRORS_H_
diff --git a/src/autofit/afglobal.c b/src/autofit/afglobal.c
index 3d09c53..9e7764b 100644
--- a/src/autofit/afglobal.c
+++ b/src/autofit/afglobal.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afglobal.c                                                             */
-/*                                                                         */
-/*    Auto-fitter routines to compute global hinting values (body).        */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afglobal.c
+ *
+ *   Auto-fitter routines to compute global hinting values (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "afglobal.h"
@@ -22,12 +22,12 @@
 #include FT_INTERNAL_DEBUG_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_afglobal
 
@@ -38,7 +38,6 @@
 #include "afwrtsys.h"
 
 #include "aferrors.h"
-#include "afpic.h"
 
 
 #undef  SCRIPT
@@ -67,8 +66,6 @@
 #include "afstyles.h"
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #undef  WRITING_SYSTEM
 #define WRITING_SYSTEM( ws, WS )               \
           &af_ ## ws ## _writing_system_class,
@@ -110,8 +107,6 @@
     NULL  /* do not remove */
   };
 
-#endif /* !FT_CONFIG_OPTION_PIC */
-
 
 #ifdef FT_DEBUG_LEVEL_TRACE
 
@@ -159,12 +154,12 @@
     }
 
     /* scan each style in a Unicode charmap */
-    for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
+    for ( ss = 0; af_style_classes[ss]; ss++ )
     {
       AF_StyleClass       style_class =
-                            AF_STYLE_CLASSES_GET[ss];
+                            af_style_classes[ss];
       AF_ScriptClass      script_class =
-                            AF_SCRIPT_CLASSES_GET[style_class->script];
+                            af_script_classes[style_class->script];
       AF_Script_UniRange  range;
 
 
@@ -172,8 +167,8 @@
         continue;
 
       /*
-       *  Scan all Unicode points in the range and set the corresponding
-       *  glyph style index.
+       * Scan all Unicode points in the range and set the corresponding
+       * glyph style index.
        */
       if ( style_class->coverage == AF_COVERAGE_DEFAULT )
       {
@@ -246,9 +241,9 @@
     }
 
     /* handle the remaining default OpenType features ... */
-    for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
+    for ( ss = 0; af_style_classes[ss]; ss++ )
     {
-      AF_StyleClass  style_class = AF_STYLE_CLASSES_GET[ss];
+      AF_StyleClass  style_class = af_style_classes[ss];
 
 
       if ( style_class->coverage == AF_COVERAGE_DEFAULT )
@@ -256,7 +251,7 @@
     }
 
     /* ... and finally the default OpenType features of the default script */
-    af_shaper_get_coverage( globals, AF_STYLE_CLASSES_GET[dflt], gstyles, 1 );
+    af_shaper_get_coverage( globals, af_style_classes[dflt], gstyles, 1 );
 
     /* mark ASCII digits */
     for ( i = 0x30; i <= 0x39; i++ )
@@ -270,8 +265,8 @@
 
   Exit:
     /*
-     *  By default, all uncovered glyphs are set to the fallback style.
-     *  XXX: Shouldn't we disable hinting or do something similar?
+     * By default, all uncovered glyphs are set to the fallback style.
+     * XXX: Shouldn't we disable hinting or do something similar?
      */
     if ( globals->module->fallback_style != AF_STYLE_UNASSIGNED )
     {
@@ -295,9 +290,9 @@
                 "==============\n"
                 "\n" ));
 
-    for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
+    for ( ss = 0; af_style_classes[ss]; ss++ )
     {
-      AF_StyleClass  style_class = AF_STYLE_CLASSES_GET[ss];
+      AF_StyleClass  style_class = af_style_classes[ss];
       FT_UInt        count       = 0;
       FT_Long        idx;
 
@@ -397,9 +392,9 @@
         if ( globals->metrics[nn] )
         {
           AF_StyleClass          style_class =
-            AF_STYLE_CLASSES_GET[nn];
+            af_style_classes[nn];
           AF_WritingSystemClass  writing_system_class =
-            AF_WRITING_SYSTEM_CLASSES_GET[style_class->writing_system];
+            af_writing_system_classes[style_class->writing_system];
 
 
           if ( writing_system_class->style_metrics_done )
@@ -448,8 +443,8 @@
       style = (AF_Style)( globals->glyph_styles[gindex] &
                           AF_STYLE_UNASSIGNED           );
 
-    style_class          = AF_STYLE_CLASSES_GET[style];
-    writing_system_class = AF_WRITING_SYSTEM_CLASSES_GET
+    style_class          = af_style_classes[style];
+    writing_system_class = af_writing_system_classes
                              [style_class->writing_system];
 
     metrics = globals->metrics[style];
diff --git a/src/autofit/afglobal.h b/src/autofit/afglobal.h
index 489ed46..e26ea2f 100644
--- a/src/autofit/afglobal.h
+++ b/src/autofit/afglobal.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afglobal.h                                                             */
-/*                                                                         */
-/*    Auto-fitter routines to compute global hinting values                */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afglobal.h
+ *
+ *   Auto-fitter routines to compute global hinting values
+ *   (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFGLOBAL_H_
@@ -60,8 +60,8 @@
 
 
   /*
-   *  Default values and flags for both autofitter globals (found in
-   *  AF_ModuleRec) and face globals (in AF_FaceGlobalsRec).
+   * Default values and flags for both autofitter globals (found in
+   * AF_ModuleRec) and face globals (in AF_FaceGlobalsRec).
    */
 
   /* index of fallback style in `af_style_classes' */
@@ -98,8 +98,8 @@
 
 
   /*
-   *  Note that glyph_styles[] maps each glyph to an index into the
-   *  `af_style_classes' array.
+   * Note that glyph_styles[] maps each glyph to an index into the
+   * `af_style_classes' array.
    *
    */
   typedef struct  AF_FaceGlobalsRec_
@@ -140,8 +140,8 @@
 
 
   /*
-   *  model the global hints data for a given face, decomposed into
-   *  style-specific items
+   * model the global hints data for a given face, decomposed into
+   * style-specific items
    */
 
   FT_LOCAL( FT_Error )
diff --git a/src/autofit/afhints.c b/src/autofit/afhints.c
index 0666dbc..65f0e85 100644
--- a/src/autofit/afhints.c
+++ b/src/autofit/afhints.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afhints.c                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines (body).                                 */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afhints.c
+ *
+ *   Auto-fitter hinting routines (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "afhints.h"
@@ -22,12 +22,12 @@
 #include FT_INTERNAL_DEBUG_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_afhints
 
@@ -558,8 +558,8 @@
 
 
       /*
-       *  note: AF_DIMENSION_HORZ corresponds to _vertical_ edges
-       *        since they have a constant X coordinate.
+       * note: AF_DIMENSION_HORZ corresponds to _vertical_ edges
+       *       since they have a constant X coordinate.
        */
       if ( dimension == AF_DIMENSION_HORZ )
         AF_DUMP(( "Table of %s edges (1px=%.2fu, 10u=%.2fpx):\n",
@@ -681,8 +681,8 @@
     memory = hints->memory;
 
     /*
-     *  note that we don't need to free the segment and edge
-     *  buffers since they are really within the hints->points array
+     * note that we don't need to free the segment and edge
+     * buffers since they are really within the hints->points array
      */
     for ( dim = 0; dim < AF_DIMENSION_MAX; dim++ )
     {
@@ -776,9 +776,9 @@
     }
 
     /*
-     *  then reallocate the points arrays if necessary --
-     *  note that we reserve two additional point positions, used to
-     *  hint metrics appropriately
+     * then reallocate the points arrays if necessary --
+     * note that we reserve two additional point positions, used to
+     * hint metrics appropriately
      */
     new_max = (FT_UInt)( outline->n_points + 2 );
     old_max = (FT_UInt)hints->max_points;
@@ -918,15 +918,15 @@
 
       {
         /*
-         *  Compute directions of `in' and `out' vectors.
+         * Compute directions of `in' and `out' vectors.
          *
-         *  Note that distances between points that are very near to each
-         *  other are accumulated.  In other words, the auto-hinter either
-         *  prepends the small vectors between near points to the first
-         *  non-near vector, or the sum of small vector lengths exceeds a
-         *  threshold, thus `grouping' the small vectors.  All intermediate
-         *  points are tagged as weak; the directions are adjusted also to
-         *  be equal to the accumulated one.
+         * Note that distances between points that are very near to each
+         * other are accumulated.  In other words, the auto-hinter either
+         * prepends the small vectors between near points to the first
+         * non-near vector, or the sum of small vector lengths exceeds a
+         * threshold, thus `grouping' the small vectors.  All intermediate
+         * points are tagged as weak; the directions are adjusted also to
+         * be equal to the accumulated one.
          */
 
         FT_Int  near_limit2 = 2 * near_limit - 1;
@@ -956,12 +956,12 @@
             out_y = point->fy - prev->fy;
 
             /*
-             *  We use Taxicab metrics to measure the vector length.
+             * We use Taxicab metrics to measure the vector length.
              *
-             *  Note that the accumulated distances so far could have the
-             *  opposite direction of the distance measured here.  For this
-             *  reason we use `near_limit2' for the comparison to get a
-             *  non-near point even in the worst case.
+             * Note that the accumulated distances so far could have the
+             * opposite direction of the distance measured here.  For this
+             * reason we use `near_limit2' for the comparison to get a
+             * non-near point even in the worst case.
              */
             if ( FT_ABS( out_x ) + FT_ABS( out_y ) >= near_limit2 )
               break;
@@ -979,11 +979,11 @@
           curr = first;
 
           /*
-           *  We abuse the `u' and `v' fields to store index deltas to the
-           *  next and previous non-near point, respectively.
+           * We abuse the `u' and `v' fields to store index deltas to the
+           * next and previous non-near point, respectively.
            *
-           *  To avoid problems with not having non-near points, we point to
-           *  `first' by default as the next non-near point.
+           * To avoid problems with not having non-near points, we point to
+           * `first' by default as the next non-near point.
            *
            */
           curr->u  = (FT_Pos)( first - curr );
@@ -1035,12 +1035,12 @@
         }
 
         /*
-         *  The next step is to `simplify' an outline's topology so that we
-         *  can identify local extrema more reliably: A series of
-         *  non-horizontal or non-vertical vectors pointing into the same
-         *  quadrant are handled as a single, long vector.  From a
-         *  topological point of the view, the intermediate points are of no
-         *  interest and thus tagged as weak.
+         * The next step is to `simplify' an outline's topology so that we
+         * can identify local extrema more reliably: A series of
+         * non-horizontal or non-vertical vectors pointing into the same
+         * quadrant are handled as a single, long vector.  From a
+         * topological point of the view, the intermediate points are of no
+         * interest and thus tagged as weak.
          */
 
         for ( point = points; point < point_limit; point++ )
@@ -1080,9 +1080,9 @@
         }
 
         /*
-         *  Finally, check for remaining weak points.  Everything else not
-         *  collected in edges so far is then implicitly classified as strong
-         *  points.
+         * Finally, check for remaining weak points.  Everything else not
+         * collected in edges so far is then implicitly classified as strong
+         * points.
          */
 
         for ( point = points; point < point_limit; point++ )
diff --git a/src/autofit/afhints.h b/src/autofit/afhints.h
index 3326ebc..aee9d46 100644
--- a/src/autofit/afhints.h
+++ b/src/autofit/afhints.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afhints.h                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines (specification).                        */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afhints.h
+ *
+ *   Auto-fitter hinting routines (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFHINTS_H_
@@ -26,8 +26,8 @@
 FT_BEGIN_HEADER
 
   /*
-   *  The definition of outline glyph hints.  These are shared by all
-   *  writing system analysis routines (until now).
+   * The definition of outline glyph hints.  These are shared by all
+   * writing system analysis routines (until now).
    */
 
   typedef enum  AF_Dimension_
@@ -56,153 +56,153 @@
 
 
   /*
-   *  The following explanations are mostly taken from the article
+   * The following explanations are mostly taken from the article
    *
-   *    Real-Time Grid Fitting of Typographic Outlines
+   *   Real-Time Grid Fitting of Typographic Outlines
    *
-   *  by David Turner and Werner Lemberg
+   * by David Turner and Werner Lemberg
    *
-   *    https://www.tug.org/TUGboat/Articles/tb24-3/lemberg.pdf
+   *   https://www.tug.org/TUGboat/Articles/tb24-3/lemberg.pdf
    *
-   *  with appropriate updates.
+   * with appropriate updates.
    *
    *
-   *  Segments
+   * Segments
    *
-   *    `af_{cjk,latin,...}_hints_compute_segments' are the functions to
-   *    find segments in an outline.
+   *   `af_{cjk,latin,...}_hints_compute_segments' are the functions to
+   *   find segments in an outline.
    *
-   *    A segment is a series of at least two consecutive points that are
-   *    approximately aligned along a coordinate axis.  The analysis to do
-   *    so is specific to a writing system.
+   *   A segment is a series of at least two consecutive points that are
+   *   approximately aligned along a coordinate axis.  The analysis to do
+   *   so is specific to a writing system.
    *
    *
-   *  Edges
+   * Edges
    *
-   *    `af_{cjk,latin,...}_hints_compute_edges' are the functions to find
-   *    edges.
+   *   `af_{cjk,latin,...}_hints_compute_edges' are the functions to find
+   *   edges.
    *
-   *    As soon as segments are defined, the auto-hinter groups them into
-   *    edges.  An edge corresponds to a single position on the main
-   *    dimension that collects one or more segments (allowing for a small
-   *    threshold).
+   *   As soon as segments are defined, the auto-hinter groups them into
+   *   edges.  An edge corresponds to a single position on the main
+   *   dimension that collects one or more segments (allowing for a small
+   *   threshold).
    *
-   *    As an example, the `latin' writing system first tries to grid-fit
-   *    edges, then to align segments on the edges unless it detects that
-   *    they form a serif.
+   *   As an example, the `latin' writing system first tries to grid-fit
+   *   edges, then to align segments on the edges unless it detects that
+   *   they form a serif.
    *
    *
-   *                      A          H
-   *                       |        |
-   *                       |        |
-   *                       |        |
-   *                       |        |
-   *         C             |        |             F
-   *          +------<-----+        +-----<------+
-   *          |             B      G             |
-   *          |                                  |
-   *          |                                  |
-   *          +--------------->------------------+
-   *         D                                    E
+   *                     A          H
+   *                      |        |
+   *                      |        |
+   *                      |        |
+   *                      |        |
+   *        C             |        |             F
+   *         +------<-----+        +-----<------+
+   *         |             B      G             |
+   *         |                                  |
+   *         |                                  |
+   *         +--------------->------------------+
+   *        D                                    E
    *
    *
-   *  Stems
+   * Stems
    *
-   *    Stems are detected by `af_{cjk,latin,...}_hint_edges'.
+   *   Stems are detected by `af_{cjk,latin,...}_hint_edges'.
    *
-   *    Segments need to be `linked' to other ones in order to detect stems.
-   *    A stem is made of two segments that face each other in opposite
-   *    directions and that are sufficiently close to each other.  Using
-   *    vocabulary from the TrueType specification, stem segments form a
-   *    `black distance'.
+   *   Segments need to be `linked' to other ones in order to detect stems.
+   *   A stem is made of two segments that face each other in opposite
+   *   directions and that are sufficiently close to each other.  Using
+   *   vocabulary from the TrueType specification, stem segments form a
+   *   `black distance'.
    *
-   *    In the above ASCII drawing, the horizontal segments are BC, DE, and
-   *    FG; the vertical segments are AB, CD, EF, and GH.
+   *   In the above ASCII drawing, the horizontal segments are BC, DE, and
+   *   FG; the vertical segments are AB, CD, EF, and GH.
    *
-   *    Each segment has at most one `best' candidate to form a black
-   *    distance, or no candidate at all.  Notice that two distinct segments
-   *    can have the same candidate, which frequently means a serif.
+   *   Each segment has at most one `best' candidate to form a black
+   *   distance, or no candidate at all.  Notice that two distinct segments
+   *   can have the same candidate, which frequently means a serif.
    *
-   *    A stem is recognized by the following condition:
+   *   A stem is recognized by the following condition:
    *
-   *      best segment_1 = segment_2 && best segment_2 = segment_1
+   *     best segment_1 = segment_2 && best segment_2 = segment_1
    *
-   *    The best candidate is stored in field `link' in structure
-   *    `AF_Segment'.
+   *   The best candidate is stored in field `link' in structure
+   *   `AF_Segment'.
    *
-   *    In the above ASCII drawing, the best candidate for both AB and CD is
-   *    GH, while the best candidate for GH is AB.  Similarly, the best
-   *    candidate for EF and GH is AB, while the best candidate for AB is
-   *    GH.
+   *   In the above ASCII drawing, the best candidate for both AB and CD is
+   *   GH, while the best candidate for GH is AB.  Similarly, the best
+   *   candidate for EF and GH is AB, while the best candidate for AB is
+   *   GH.
    *
-   *    The detection and handling of stems is dependent on the writing
-   *    system.
+   *   The detection and handling of stems is dependent on the writing
+   *   system.
    *
    *
-   *  Serifs
+   * Serifs
    *
-   *    Serifs are detected by `af_{cjk,latin,...}_hint_edges'.
+   *   Serifs are detected by `af_{cjk,latin,...}_hint_edges'.
    *
-   *    In comparison to a stem, a serif (as handled by the auto-hinter
-   *    module that takes care of the `latin' writing system) has
+   *   In comparison to a stem, a serif (as handled by the auto-hinter
+   *   module that takes care of the `latin' writing system) has
    *
-   *      best segment_1 = segment_2 && best segment_2 != segment_1
+   *     best segment_1 = segment_2 && best segment_2 != segment_1
    *
-   *    where segment_1 corresponds to the serif segment (CD and EF in the
-   *    above ASCII drawing).
+   *   where segment_1 corresponds to the serif segment (CD and EF in the
+   *   above ASCII drawing).
    *
-   *    The best candidate is stored in field `serif' in structure
-   *    `AF_Segment' (and `link' is set to NULL).
+   *   The best candidate is stored in field `serif' in structure
+   *   `AF_Segment' (and `link' is set to NULL).
    *
    *
-   *  Touched points
+   * Touched points
    *
-   *    A point is called `touched' if it has been processed somehow by the
-   *    auto-hinter.  It basically means that it shouldn't be moved again
-   *    (or moved only under certain constraints to preserve the already
-   *    applied processing).
+   *   A point is called `touched' if it has been processed somehow by the
+   *   auto-hinter.  It basically means that it shouldn't be moved again
+   *   (or moved only under certain constraints to preserve the already
+   *   applied processing).
    *
    *
-   *  Flat and round segments
+   * Flat and round segments
    *
-   *    Segments are `round' or `flat', depending on the series of points
-   *    that define them.  A segment is round if the next and previous point
-   *    of an extremum (which can be either a single point or sequence of
-   *    points) are both conic or cubic control points.  Otherwise, a
-   *    segment with an extremum is flat.
+   *   Segments are `round' or `flat', depending on the series of points
+   *   that define them.  A segment is round if the next and previous point
+   *   of an extremum (which can be either a single point or sequence of
+   *   points) are both conic or cubic control points.  Otherwise, a
+   *   segment with an extremum is flat.
    *
    *
-   *  Strong Points
+   * Strong Points
    *
-   *    Experience has shown that points not part of an edge need to be
-   *    interpolated linearly between their two closest edges, even if these
-   *    are not part of the contour of those particular points.  Typical
-   *    candidates for this are
+   *   Experience has shown that points not part of an edge need to be
+   *   interpolated linearly between their two closest edges, even if these
+   *   are not part of the contour of those particular points.  Typical
+   *   candidates for this are
    *
-   *    - angle points (i.e., points where the `in' and `out' direction
-   *      differ greatly)
+   *   - angle points (i.e., points where the `in' and `out' direction
+   *     differ greatly)
    *
-   *    - inflection points (i.e., where the `in' and `out' angles are the
-   *      same, but the curvature changes sign) [currently, such points
-   *      aren't handled specially in the auto-hinter]
+   *   - inflection points (i.e., where the `in' and `out' angles are the
+   *     same, but the curvature changes sign) [currently, such points
+   *     aren't handled specially in the auto-hinter]
    *
-   *    `af_glyph_hints_align_strong_points' is the function that takes
-   *    care of such situations; it is equivalent to the TrueType `IP'
-   *    hinting instruction.
+   *   `af_glyph_hints_align_strong_points' is the function that takes
+   *   care of such situations; it is equivalent to the TrueType `IP'
+   *   hinting instruction.
    *
    *
-   *  Weak Points
+   * Weak Points
    *
-   *    Other points in the outline must be interpolated using the
-   *    coordinates of their previous and next unfitted contour neighbours.
-   *    These are called `weak points' and are touched by the function
-   *    `af_glyph_hints_align_weak_points', equivalent to the TrueType `IUP'
-   *    hinting instruction.  Typical candidates are control points and
-   *    points on the contour without a major direction.
+   *   Other points in the outline must be interpolated using the
+   *   coordinates of their previous and next unfitted contour neighbours.
+   *   These are called `weak points' and are touched by the function
+   *   `af_glyph_hints_align_weak_points', equivalent to the TrueType `IUP'
+   *   hinting instruction.  Typical candidates are control points and
+   *   points on the contour without a major direction.
    *
-   *    The major effect is to reduce possible distortion caused by
-   *    alignment of edges and strong points, thus weak points are processed
-   *    after strong points.
+   *   The major effect is to reduce possible distortion caused by
+   *   alignment of edges and strong points, thus weak points are processed
+   *   after strong points.
    */
 
 
diff --git a/src/autofit/afindic.c b/src/autofit/afindic.c
index dfbea5f..45c1a10 100644
--- a/src/autofit/afindic.c
+++ b/src/autofit/afindic.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afindic.c                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines for Indic writing system (body).        */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.    */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afindic.c
+ *
+ *   Auto-fitter hinting routines for Indic writing system (body).
+ *
+ * Copyright 2007-2018 by
+ * Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "aftypes.h"
diff --git a/src/autofit/afindic.h b/src/autofit/afindic.h
index 5688738..94ff764 100644
--- a/src/autofit/afindic.h
+++ b/src/autofit/afindic.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afindic.h                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines for Indic writing system                */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.    */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afindic.h
+ *
+ *   Auto-fitter hinting routines for Indic writing system
+ *   (specification).
+ *
+ * Copyright 2007-2018 by
+ * Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFINDIC_H_
diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c
index 9f1b540..a90fc1c 100644
--- a/src/autofit/aflatin.c
+++ b/src/autofit/aflatin.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  aflatin.c                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines for latin writing system (body).        */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aflatin.c
+ *
+ *   Auto-fitter hinting routines for latin writing system (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -21,7 +21,6 @@
 #include FT_INTERNAL_DEBUG_H
 
 #include "afglobal.h"
-#include "afpic.h"
 #include "aflatin.h"
 #include "aferrors.h"
 
@@ -31,12 +30,12 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_aflatin
 
@@ -83,24 +82,30 @@
       AF_LatinMetricsRec  dummy[1];
       AF_Scaler           scaler = &dummy->root.scaler;
 
-#ifdef FT_CONFIG_OPTION_PIC
-      AF_FaceGlobals  globals = metrics->root.globals;
+      AF_StyleClass   style_class  = metrics->root.style_class;
+      AF_ScriptClass  script_class = af_script_classes[style_class->script];
+
+      /* If HarfBuzz is not available, we need a pointer to a single */
+      /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+      void*     shaper_buf;
+#else
+      FT_ULong  shaper_buf_;
+      void*     shaper_buf = &shaper_buf_;
 #endif
 
-      AF_StyleClass   style_class  = metrics->root.style_class;
-      AF_ScriptClass  script_class = AF_SCRIPT_CLASSES_GET
-                                       [style_class->script];
-
-      void*        shaper_buf;
       const char*  p;
 
 #ifdef FT_DEBUG_LEVEL_TRACE
       FT_ULong  ch = 0;
 #endif
 
-      p          = script_class->standard_charstring;
-      shaper_buf = af_shaper_buf_create( face );
 
+      p = script_class->standard_charstring;
+
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+      shaper_buf = af_shaper_buf_create( face );
+#endif
       /*
        * We check a list of standard characters to catch features like
        * `c2sc' (small caps from caps) that don't contain lowercase letters
@@ -186,10 +191,10 @@
           goto Exit;
 
         /*
-         *  We assume that the glyphs selected for the stem width
-         *  computation are `featureless' enough so that the linking
-         *  algorithm works fine without adjustments of its scoring
-         *  function.
+         * We assume that the glyphs selected for the stem width
+         * computation are `featureless' enough so that the linking
+         * algorithm works fine without adjustments of its scoring
+         * function.
          */
         af_latin_hints_link_segments( hints,
                                       0,
@@ -329,7 +334,14 @@
 
     FT_Pos  flat_threshold = FLAT_THRESHOLD( metrics->units_per_em );
 
-    void*  shaper_buf;
+    /* If HarfBuzz is not available, we need a pointer to a single */
+    /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+    void*     shaper_buf;
+#else
+    FT_ULong  shaper_buf_;
+    void*     shaper_buf = &shaper_buf_;
+#endif
 
 
     /* we walk over the blue character strings as specified in the */
@@ -339,7 +351,9 @@
                 "============================\n"
                 "\n" ));
 
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
     shaper_buf = af_shaper_buf_create( face );
+#endif
 
     for ( ; bs->string != AF_BLUE_STRING_MAX; bs++ )
     {
@@ -884,8 +898,8 @@
       if ( num_flats == 0 && num_rounds == 0 )
       {
         /*
-         *  we couldn't find a single glyph to compute this blue zone,
-         *  we will simply ignore it then
+         * we couldn't find a single glyph to compute this blue zone,
+         * we will simply ignore it then
          */
         FT_TRACE5(( "  empty\n" ));
         continue;
@@ -1036,15 +1050,25 @@
     FT_Bool   started = 0, same_width = 1;
     FT_Fixed  advance = 0, old_advance = 0;
 
-    void*  shaper_buf;
+    /* If HarfBuzz is not available, we need a pointer to a single */
+    /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+    void*     shaper_buf;
+#else
+    FT_ULong  shaper_buf_;
+    void*     shaper_buf = &shaper_buf_;
+#endif
 
     /* in all supported charmaps, digits have character codes 0x30-0x39 */
     const char   digits[] = "0 1 2 3 4 5 6 7 8 9";
     const char*  p;
 
 
-    p          = digits;
+    p = digits;
+
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
     shaper_buf = af_shaper_buf_create( face );
+#endif
 
     while ( *p )
     {
@@ -1967,17 +1991,17 @@
           if ( len >= len_threshold )
           {
             /*
-             *  The score is the sum of two demerits indicating the
-             *  `badness' of a fit, measured along the segments' main axis
-             *  and orthogonal to it, respectively.
+             * The score is the sum of two demerits indicating the
+             * `badness' of a fit, measured along the segments' main axis
+             * and orthogonal to it, respectively.
              *
-             *  o The less overlapping along the main axis, the worse it
-             *    is, causing a larger demerit.
+             * - The less overlapping along the main axis, the worse it
+             *   is, causing a larger demerit.
              *
-             *  o The nearer the orthogonal distance to a stem width, the
-             *    better it is, causing a smaller demerit.  For simplicity,
-             *    however, we only increase the demerit for values that
-             *    exceed the largest stem width.
+             * - The nearer the orthogonal distance to a stem width, the
+             *   better it is, causing a smaller demerit.  For simplicity,
+             *   however, we only increase the demerit for values that
+             *   exceed the largest stem width.
              */
 
             FT_Pos  dist = pos2 - pos1;
@@ -2049,13 +2073,8 @@
     FT_Memory     memory = hints->memory;
     AF_LatinAxis  laxis  = &((AF_LatinMetrics)hints->metrics)->axis[dim];
 
-#ifdef FT_CONFIG_OPTION_PIC
-    AF_FaceGlobals  globals = hints->metrics->globals;
-#endif
-
     AF_StyleClass   style_class  = hints->metrics->style_class;
-    AF_ScriptClass  script_class = AF_SCRIPT_CLASSES_GET
-                                     [style_class->script];
+    AF_ScriptClass  script_class = af_script_classes[style_class->script];
 
     FT_Bool  top_to_bottom_hinting = 0;
 
@@ -2086,9 +2105,9 @@
       top_to_bottom_hinting = script_class->top_to_bottom_hinting;
 
     /*
-     *  We ignore all segments that are less than 1 pixel in length
-     *  to avoid many problems with serif fonts.  We compute the
-     *  corresponding threshold in font units.
+     * We ignore all segments that are less than 1 pixel in length
+     * to avoid many problems with serif fonts.  We compute the
+     * corresponding threshold in font units.
      */
     if ( dim == AF_DIMENSION_HORZ )
       segment_length_threshold = FT_DivFix( 64, hints->y_scale );
@@ -2096,26 +2115,26 @@
       segment_length_threshold = 0;
 
     /*
-     *  Similarly, we ignore segments that have a width delta
-     *  larger than 0.5px (i.e., a width larger than 1px).
+     * Similarly, we ignore segments that have a width delta
+     * larger than 0.5px (i.e., a width larger than 1px).
      */
     segment_width_threshold = FT_DivFix( 32, scale );
 
-    /*********************************************************************/
-    /*                                                                   */
-    /* We begin by generating a sorted table of edges for the current    */
-    /* direction.  To do so, we simply scan each segment and try to find */
-    /* an edge in our table that corresponds to its position.            */
-    /*                                                                   */
-    /* If no edge is found, we create and insert a new edge in the       */
-    /* sorted table.  Otherwise, we simply add the segment to the edge's */
-    /* list which gets processed in the second step to compute the       */
-    /* edge's properties.                                                */
-    /*                                                                   */
-    /* Note that the table of edges is sorted along the segment/edge     */
-    /* position.                                                         */
-    /*                                                                   */
-    /*********************************************************************/
+    /**********************************************************************
+     *
+     * We begin by generating a sorted table of edges for the current
+     * direction.  To do so, we simply scan each segment and try to find
+     * an edge in our table that corresponds to its position.
+     *
+     * If no edge is found, we create and insert a new edge in the
+     * sorted table.  Otherwise, we simply add the segment to the edge's
+     * list which gets processed in the second step to compute the
+     * edge's properties.
+     *
+     * Note that the table of edges is sorted along the segment/edge
+     * position.
+     *
+     */
 
     /* assure that edge distance threshold is at most 0.25px */
     edge_distance_threshold = FT_MulFix( laxis->edge_distance_threshold,
@@ -2237,17 +2256,17 @@
     }
 
 
-    /******************************************************************/
-    /*                                                                */
-    /* Good, we now compute each edge's properties according to the   */
-    /* segments found on its position.  Basically, these are          */
-    /*                                                                */
-    /*  - the edge's main direction                                   */
-    /*  - stem edge, serif edge or both (which defaults to stem then) */
-    /*  - rounded edge, straight or both (which defaults to straight) */
-    /*  - link for edge                                               */
-    /*                                                                */
-    /******************************************************************/
+    /*******************************************************************
+     *
+     * Good, we now compute each edge's properties according to the
+     * segments found on its position.  Basically, these are
+     *
+     * - the edge's main direction
+     * - stem edge, serif edge or both (which defaults to stem then)
+     * - rounded edge, straight or both (which defaults to straight)
+     * - link for edge
+     *
+     */
 
     /* first of all, set the `edge' field in each segment -- this is */
     /* required in order to compute edge links                       */
@@ -2546,8 +2565,8 @@
     af_glyph_hints_rescale( hints, (AF_StyleMetrics)metrics );
 
     /*
-     *  correct x_scale and y_scale if needed, since they may have
-     *  been modified by `af_latin_metrics_scale_dim' above
+     * correct x_scale and y_scale if needed, since they may have
+     * been modified by `af_latin_metrics_scale_dim' above
      */
     hints->x_scale = metrics->axis[AF_DIMENSION_HORZ].scale;
     hints->x_delta = metrics->axis[AF_DIMENSION_HORZ].delta;
@@ -2566,21 +2585,21 @@
     other_flags  = 0;
 
     /*
-     *  We snap the width of vertical stems for the monochrome and
-     *  horizontal LCD rendering targets only.
+     * We snap the width of vertical stems for the monochrome and
+     * horizontal LCD rendering targets only.
      */
     if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD )
       other_flags |= AF_LATIN_HINTS_HORZ_SNAP;
 
     /*
-     *  We snap the width of horizontal stems for the monochrome and
-     *  vertical LCD rendering targets only.
+     * We snap the width of horizontal stems for the monochrome and
+     * vertical LCD rendering targets only.
      */
     if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V )
       other_flags |= AF_LATIN_HINTS_VERT_SNAP;
 
     /*
-     *  We adjust stems to full pixels unless in `light' or `lcd' mode.
+     * We adjust stems to full pixels unless in `light' or `lcd' mode.
      */
     if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
       other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
@@ -2589,11 +2608,11 @@
       other_flags |= AF_LATIN_HINTS_MONO;
 
     /*
-     *  In `light' or `lcd' mode we disable horizontal hinting completely.
-     *  We also do it if the face is italic.
+     * In `light' or `lcd' mode we disable horizontal hinting completely.
+     * We also do it if the face is italic.
      *
-     *  However, if warping is enabled (which only works in `light' hinting
-     *  mode), advance widths get adjusted, too.
+     * However, if warping is enabled (which only works in `light' hinting
+     * mode), advance widths get adjusted, too.
      */
     if ( mode == FT_RENDER_MODE_LIGHT || mode == FT_RENDER_MODE_LCD ||
          ( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0          )
@@ -2936,13 +2955,8 @@
     AF_Edge       anchor     = NULL;
     FT_Int        has_serifs = 0;
 
-#ifdef FT_CONFIG_OPTION_PIC
-    AF_FaceGlobals  globals = hints->metrics->globals;
-#endif
-
     AF_StyleClass   style_class  = hints->metrics->style_class;
-    AF_ScriptClass  script_class = AF_SCRIPT_CLASSES_GET
-                                     [style_class->script];
+    AF_ScriptClass  script_class = af_script_classes[style_class->script];
 
     FT_Bool  top_to_bottom_hinting = 0;
 
@@ -2976,12 +2990,12 @@
         edge2 = edge->link;
 
         /*
-         *  If a stem contains both a neutral and a non-neutral blue zone,
-         *  skip the neutral one.  Otherwise, outlines with different
-         *  directions might be incorrectly aligned at the same vertical
-         *  position.
+         * If a stem contains both a neutral and a non-neutral blue zone,
+         * skip the neutral one.  Otherwise, outlines with different
+         * directions might be incorrectly aligned at the same vertical
+         * position.
          *
-         *  If we have two neutral blue zones, skip one of them.
+         * If we have two neutral blue zones, skip one of them.
          *
          */
         if ( edge->blue_edge && edge2 && edge2->blue_edge )
@@ -3344,8 +3358,8 @@
     if ( has_serifs || !anchor )
     {
       /*
-       *  now hint the remaining edges (serifs and single) in order
-       *  to complete our processing
+       * now hint the remaining edges (serifs and single) in order
+       * to complete our processing
        */
       for ( edge = edges; edge < edge_limit; edge++ )
       {
diff --git a/src/autofit/aflatin.h b/src/autofit/aflatin.h
index 432cccc..6b429bd 100644
--- a/src/autofit/aflatin.h
+++ b/src/autofit/aflatin.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  aflatin.h                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines for latin writing system                */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aflatin.h
+ *
+ *   Auto-fitter hinting routines for latin writing system
+ *   (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFLATIN_H_
@@ -45,9 +45,9 @@
 
 
   /*
-   *  The following declarations could be embedded in the file `aflatin.c';
-   *  they have been made semi-public to allow alternate writing system
-   *  hinters to re-use some of them.
+   * The following declarations could be embedded in the file `aflatin.c';
+   * they have been made semi-public to allow alternate writing system
+   * hinters to re-use some of them.
    */
 
 
@@ -161,8 +161,8 @@
 
 
   /*
-   *  The next functions shouldn't normally be exported.  However, other
-   *  writing systems might like to use these functions as-is.
+   * The next functions shouldn't normally be exported.  However, other
+   * writing systems might like to use these functions as-is.
    */
   FT_LOCAL( FT_Error )
   af_latin_hints_compute_segments( AF_GlyphHints  hints,
diff --git a/src/autofit/aflatin2.c b/src/autofit/aflatin2.c
index 5c71378..c5ce043 100644
--- a/src/autofit/aflatin2.c
+++ b/src/autofit/aflatin2.c
@@ -3,22 +3,22 @@
 /*            marked as experimental.                                    */
 
 
-/***************************************************************************/
-/*                                                                         */
-/*  aflatin2.c                                                             */
-/*                                                                         */
-/*    Auto-fitter hinting routines for latin writing system (body).        */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aflatin2.c
+ *
+ *   Auto-fitter hinting routines for latin writing system (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include FT_ADVANCES_H
@@ -37,12 +37,12 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_aflatin2
 
@@ -358,8 +358,8 @@
       if ( num_flats == 0 && num_rounds == 0 )
       {
         /*
-         *  we couldn't find a single glyph to compute this blue zone,
-         *  we will simply ignore it then
+         * we couldn't find a single glyph to compute this blue zone,
+         * we will simply ignore it then
          */
         FT_TRACE5(( "  empty\n" ));
         continue;
@@ -1108,13 +1108,13 @@
                                           : AF_DIR_RIGHT;
 
     /*
-     *  We want to ignore very small (mostly serif) segments, we do that
-     *  by ignoring those that whose length is less than a given fraction
-     *  of the standard width. If there is no standard width, we ignore
-     *  those that are less than a given size in pixels
+     * We want to ignore very small (mostly serif) segments, we do that
+     * by ignoring those that whose length is less than a given fraction
+     * of the standard width. If there is no standard width, we ignore
+     * those that are less than a given size in pixels
      *
-     *  also, unlink serif segments that are linked to segments farther
-     *  than 50% of the standard width
+     * also, unlink serif segments that are linked to segments farther
+     * than 50% of the standard width
      */
     if ( dim == AF_DIMENSION_HORZ )
     {
@@ -1126,21 +1126,21 @@
     else
       segment_length_threshold = 0;
 
-    /*********************************************************************/
-    /*                                                                   */
-    /* We will begin by generating a sorted table of edges for the       */
-    /* current direction.  To do so, we simply scan each segment and try */
-    /* to find an edge in our table that corresponds to its position.    */
-    /*                                                                   */
-    /* If no edge is found, we create and insert a new edge in the       */
-    /* sorted table.  Otherwise, we simply add the segment to the edge's */
-    /* list which will be processed in the second step to compute the    */
-    /* edge's properties.                                                */
-    /*                                                                   */
-    /* Note that the edges table is sorted along the segment/edge        */
-    /* position.                                                         */
-    /*                                                                   */
-    /*********************************************************************/
+    /**********************************************************************
+     *
+     * We will begin by generating a sorted table of edges for the
+     * current direction.  To do so, we simply scan each segment and try
+     * to find an edge in our table that corresponds to its position.
+     *
+     * If no edge is found, we create and insert a new edge in the
+     * sorted table.  Otherwise, we simply add the segment to the edge's
+     * list which will be processed in the second step to compute the
+     * edge's properties.
+     *
+     * Note that the edges table is sorted along the segment/edge
+     * position.
+     *
+     */
 
     edge_distance_threshold = FT_MulFix( laxis->edge_distance_threshold,
                                          scale );
@@ -1230,17 +1230,17 @@
     }
 
 
-    /*********************************************************************/
-    /*                                                                   */
-    /* Good, we will now compute each edge's properties according to     */
-    /* segments found on its position.  Basically, these are:            */
-    /*                                                                   */
-    /*  - edge's main direction                                          */
-    /*  - stem edge, serif edge or both (which defaults to stem then)    */
-    /*  - rounded edge, straight or both (which defaults to straight)    */
-    /*  - link for edge                                                  */
-    /*                                                                   */
-    /*********************************************************************/
+    /**********************************************************************
+     *
+     * Good, we will now compute each edge's properties according to
+     * segments found on its position.  Basically, these are:
+     *
+     * - edge's main direction
+     * - stem edge, serif edge or both (which defaults to stem then)
+     * - rounded edge, straight or both (which defaults to straight)
+     * - link for edge
+     *
+     */
 
     /* first of all, set the `edge' field in each segment -- this is */
     /* required in order to compute edge links                       */
@@ -1524,8 +1524,8 @@
     af_glyph_hints_rescale( hints, (AF_StyleMetrics)metrics );
 
     /*
-     *  correct x_scale and y_scale if needed, since they may have
-     *  been modified `af_latin2_metrics_scale_dim' above
+     * correct x_scale and y_scale if needed, since they may have
+     * been modified `af_latin2_metrics_scale_dim' above
      */
     hints->x_scale = metrics->axis[AF_DIMENSION_HORZ].scale;
     hints->x_delta = metrics->axis[AF_DIMENSION_HORZ].delta;
@@ -1544,21 +1544,21 @@
     other_flags  = 0;
 
     /*
-     *  We snap the width of vertical stems for the monochrome and
-     *  horizontal LCD rendering targets only.
+     * We snap the width of vertical stems for the monochrome and
+     * horizontal LCD rendering targets only.
      */
     if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD )
       other_flags |= AF_LATIN_HINTS_HORZ_SNAP;
 
     /*
-     *  We snap the width of horizontal stems for the monochrome and
-     *  vertical LCD rendering targets only.
+     * We snap the width of horizontal stems for the monochrome and
+     * vertical LCD rendering targets only.
      */
     if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V )
       other_flags |= AF_LATIN_HINTS_VERT_SNAP;
 
     /*
-     *  We adjust stems to full pixels unless in `light' or `lcd' mode.
+     * We adjust stems to full pixels unless in `light' or `lcd' mode.
      */
     if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
       other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
@@ -1567,8 +1567,8 @@
       other_flags |= AF_LATIN_HINTS_MONO;
 
     /*
-     *  In `light' or `lcd' mode we disable horizontal hinting completely.
-     *  We also do it if the face is italic.
+     * In `light' or `lcd' mode we disable horizontal hinting completely.
+     * We also do it if the face is italic.
      */
     if ( mode == FT_RENDER_MODE_LIGHT || mode == FT_RENDER_MODE_LCD ||
          ( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0          )
@@ -2233,8 +2233,8 @@
     if ( has_serifs || !anchor )
     {
       /*
-       *  now hint the remaining edges (serifs and single) in order
-       *  to complete our processing
+       * now hint the remaining edges (serifs and single) in order
+       * to complete our processing
        */
       for ( edge = edges; edge < edge_limit; edge++ )
       {
diff --git a/src/autofit/aflatin2.h b/src/autofit/aflatin2.h
index 0129dc7..e8e7382 100644
--- a/src/autofit/aflatin2.h
+++ b/src/autofit/aflatin2.h
@@ -3,23 +3,23 @@
 /*            marked as experimental.                                    */
 
 
-/***************************************************************************/
-/*                                                                         */
-/*  aflatin2.h                                                             */
-/*                                                                         */
-/*    Auto-fitter hinting routines for latin writing system                */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aflatin2.h
+ *
+ *   Auto-fitter hinting routines for latin writing system
+ *   (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFLATIN2_H_
diff --git a/src/autofit/afloader.c b/src/autofit/afloader.c
index a55550b..301f377 100644
--- a/src/autofit/afloader.c
+++ b/src/autofit/afloader.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afloader.c                                                             */
-/*                                                                         */
-/*    Auto-fitter glyph loading routines (body).                           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afloader.c
+ *
+ *   Auto-fitter glyph loading routines (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "afglobal.h"
@@ -21,7 +21,6 @@
 #include "afhints.h"
 #include "aferrors.h"
 #include "afmodule.h"
-#include "afpic.h"
 
 #include FT_INTERNAL_CALC_H
 
@@ -119,12 +118,12 @@
     }
 
     /*
-     *  We depend on the writing system (script analyzers) to supply
-     *  standard widths for the script of the glyph we are looking at.  If
-     *  it can't deliver, stem darkening is disabled.
+     * We depend on the writing system (script analyzers) to supply
+     * standard widths for the script of the glyph we are looking at.  If
+     * it can't deliver, stem darkening is disabled.
      */
     writing_system_class =
-      AF_WRITING_SYSTEM_CLASSES_GET[style_metrics->style_class->writing_system];
+      af_writing_system_classes[style_metrics->style_class->writing_system];
 
     if ( writing_system_class->style_metrics_getstdw )
       writing_system_class->style_metrics_getstdw( style_metrics,
@@ -174,22 +173,22 @@
       globals->darken_y                  = af_fixedToInt( darken_y );
 
       /*
-       *  Scale outlines down on the Y-axis to keep them inside their blue
-       *  zones.  The stronger the emboldening, the stronger the downscaling
-       *  (plus heuristical padding to prevent outlines still falling out
-       *  their zones due to rounding).
+       * Scale outlines down on the Y-axis to keep them inside their blue
+       * zones.  The stronger the emboldening, the stronger the downscaling
+       * (plus heuristical padding to prevent outlines still falling out
+       * their zones due to rounding).
        *
-       *  Reason: `FT_Outline_Embolden' works by shifting the rightmost
-       *  points of stems farther to the right, and topmost points farther
-       *  up.  This positions points on the Y-axis outside their
-       *  pre-computed blue zones and leads to distortion when applying the
-       *  hints in the code further below.  Code outside this emboldening
-       *  block doesn't know we are presenting it with modified outlines the
-       *  analyzer didn't see!
+       * Reason: `FT_Outline_Embolden' works by shifting the rightmost
+       * points of stems farther to the right, and topmost points farther
+       * up.  This positions points on the Y-axis outside their
+       * pre-computed blue zones and leads to distortion when applying the
+       * hints in the code further below.  Code outside this emboldening
+       * block doesn't know we are presenting it with modified outlines the
+       * analyzer didn't see!
        *
-       *  An unfortunate side effect of downscaling is that the emboldening
-       *  effect is slightly decreased.  The loss becomes more pronounced
-       *  versus the CFF driver at smaller sizes, e.g., at 9ppem and below.
+       * An unfortunate side effect of downscaling is that the emboldening
+       * effect is slightly decreased.  The loss becomes more pronounced
+       * versus the CFF driver at smaller sizes, e.g., at 9ppem and below.
        */
       globals->scale_down_factor =
         FT_DivFix( em_size - ( darken_by_font_units_y + af_intToFixed( 8 ) ),
@@ -232,10 +231,6 @@
     AF_StyleClass          style_class;
     AF_WritingSystemClass  writing_system_class;
 
-#ifdef FT_CONFIG_OPTION_PIC
-    AF_FaceGlobals  globals = loader->globals;
-#endif
-
 
     if ( !size )
       return FT_THROW( Invalid_Size_Handle );
@@ -282,13 +277,13 @@
     }
 
     /*
-     *  TODO: This code currently doesn't support fractional advance widths,
-     *  i.e., placing hinted glyphs at anything other than integer
-     *  x-positions.  This is only relevant for the warper code, which
-     *  scales and shifts glyphs to optimize blackness of stems (hinting on
-     *  the x-axis by nature places things on pixel integers, hinting on the
-     *  y-axis only, i.e., LIGHT mode, doesn't touch the x-axis).  The delta
-     *  values of the scaler would need to be adjusted.
+     * TODO: This code currently doesn't support fractional advance widths,
+     * i.e., placing hinted glyphs at anything other than integer
+     * x-positions.  This is only relevant for the warper code, which
+     * scales and shifts glyphs to optimize blackness of stems (hinting on
+     * the x-axis by nature places things on pixel integers, hinting on the
+     * y-axis only, i.e., LIGHT mode, doesn't touch the x-axis).  The delta
+     * values of the scaler would need to be adjusted.
      */
     scaler.face    = face;
     scaler.x_scale = size_internal->autohint_metrics.x_scale;
@@ -312,10 +307,10 @@
 #endif
 
     /*
-     *  Glyphs (really code points) are assigned to scripts.  Script
-     *  analysis is done lazily: For each glyph that passes through here,
-     *  the corresponding script analyzer is called, but returns immediately
-     *  if it has been run already.
+     * Glyphs (really code points) are assigned to scripts.  Script
+     * analysis is done lazily: For each glyph that passes through here,
+     * the corresponding script analyzer is called, but returns immediately
+     * if it has been run already.
      */
     error = af_face_globals_get_metrics( loader->globals, glyph_index,
                                          style_options, &style_metrics );
@@ -324,7 +319,7 @@
 
     style_class          = style_metrics->style_class;
     writing_system_class =
-      AF_WRITING_SYSTEM_CLASSES_GET[style_class->writing_system];
+      af_writing_system_classes[style_class->writing_system];
 
     loader->metrics = style_metrics;
 
@@ -342,11 +337,11 @@
     }
 
     /*
-     *  Do the main work of `af_loader_load_glyph'.  Note that we never have
-     *  to deal with composite glyphs as those get loaded into
-     *  FT_GLYPH_FORMAT_OUTLINE by the recursed `FT_Load_Glyph' function.
-     *  In the rare cases where FT_LOAD_NO_RECURSE is set, it implies
-     *  FT_LOAD_NO_SCALE and as such the auto-hinter is never called.
+     * Do the main work of `af_loader_load_glyph'.  Note that we never have
+     * to deal with composite glyphs as those get loaded into
+     * FT_GLYPH_FORMAT_OUTLINE by the recursed `FT_Load_Glyph' function.
+     * In the rare cases where FT_LOAD_NO_RECURSE is set, it implies
+     * FT_LOAD_NO_SCALE and as such the auto-hinter is never called.
      */
     load_flags |=  FT_LOAD_NO_SCALE         |
                    FT_LOAD_IGNORE_TRANSFORM |
@@ -358,26 +353,26 @@
       goto Exit;
 
     /*
-     *  Apply stem darkening (emboldening) here before hints are applied to
-     *  the outline.  Glyphs are scaled down proportionally to the
-     *  emboldening so that curve points don't fall outside their
-     *  precomputed blue zones.
+     * Apply stem darkening (emboldening) here before hints are applied to
+     * the outline.  Glyphs are scaled down proportionally to the
+     * emboldening so that curve points don't fall outside their
+     * precomputed blue zones.
      *
-     *  Any emboldening done by the font driver (e.g., the CFF driver)
-     *  doesn't reach here because the autohinter loads the unprocessed
-     *  glyphs in font units for analysis (functions `af_*_metrics_init_*')
-     *  and then above to prepare it for the rasterizers by itself,
-     *  independently of the font driver.  So emboldening must be done here,
-     *  within the autohinter.
+     * Any emboldening done by the font driver (e.g., the CFF driver)
+     * doesn't reach here because the autohinter loads the unprocessed
+     * glyphs in font units for analysis (functions `af_*_metrics_init_*')
+     * and then above to prepare it for the rasterizers by itself,
+     * independently of the font driver.  So emboldening must be done here,
+     * within the autohinter.
      *
-     *  All glyphs to be autohinted pass through here one by one.  The
-     *  standard widths can therefore change from one glyph to the next,
-     *  depending on what script a glyph is assigned to (each script has its
-     *  own set of standard widths and other metrics).  The darkening amount
-     *  must therefore be recomputed for each size and
-     *  `standard_{vertical,horizontal}_width' change.
+     * All glyphs to be autohinted pass through here one by one.  The
+     * standard widths can therefore change from one glyph to the next,
+     * depending on what script a glyph is assigned to (each script has its
+     * own set of standard widths and other metrics).  The darkening amount
+     * must therefore be recomputed for each size and
+     * `standard_{vertical,horizontal}_width' change.
      *
-     *  Ignore errors and carry on without emboldening.
+     * Ignore errors and carry on without emboldening.
      *
      */
 
@@ -435,26 +430,25 @@
       /* width/positioning that occurred during the hinting process   */
       if ( scaler.render_mode != FT_RENDER_MODE_LIGHT )
       {
-        FT_Pos  old_rsb, old_lsb, new_lsb;
-        FT_Pos  pp1x_uh, pp2x_uh;
-
         AF_AxisHints  axis  = &hints->axis[AF_DIMENSION_HORZ];
-        AF_Edge       edge1 = axis->edges;         /* leftmost edge  */
-        AF_Edge       edge2 = edge1 +
-                              axis->num_edges - 1; /* rightmost edge */
 
 
         if ( axis->num_edges > 1 && AF_HINTS_DO_ADVANCE( hints ) )
         {
-          old_rsb = loader->pp2.x - edge2->opos;
+          AF_Edge  edge1 = axis->edges;         /* leftmost edge  */
+          AF_Edge  edge2 = edge1 +
+                           axis->num_edges - 1; /* rightmost edge */
+
+          FT_Pos  old_rsb = loader->pp2.x - edge2->opos;
           /* loader->pp1.x is always zero at this point of time */
-          old_lsb = edge1->opos /* - loader->pp1.x */;
-          new_lsb = edge1->pos;
+          FT_Pos  old_lsb = edge1->opos;     /* - loader->pp1.x */
+          FT_Pos  new_lsb = edge1->pos;
 
           /* remember unhinted values to later account */
           /* for rounding errors                       */
-          pp1x_uh = new_lsb    - old_lsb;
-          pp2x_uh = edge2->pos + old_rsb;
+          FT_Pos  pp1x_uh = new_lsb    - old_lsb;
+          FT_Pos  pp2x_uh = edge2->pos + old_rsb;
+
 
           /* prefer too much space over too little space */
           /* for very small sizes                        */
diff --git a/src/autofit/afloader.h b/src/autofit/afloader.h
index d4d72d1..773ff60 100644
--- a/src/autofit/afloader.h
+++ b/src/autofit/afloader.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afloader.h                                                             */
-/*                                                                         */
-/*    Auto-fitter glyph loading routines (specification).                  */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afloader.h
+ *
+ *   Auto-fitter glyph loading routines (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFLOADER_H_
@@ -27,11 +27,11 @@
 FT_BEGIN_HEADER
 
   /*
-   *  The autofitter module's (global) data structure to communicate with
-   *  actual fonts.  If necessary, `local' data like the current face, the
-   *  current face's auto-hint data, or the current glyph's parameters
-   *  relevant to auto-hinting are `swapped in'.  Cf. functions like
-   *  `af_loader_reset' and `af_loader_load_g'.
+   * The autofitter module's (global) data structure to communicate with
+   * actual fonts.  If necessary, `local' data like the current face, the
+   * current face's auto-hint data, or the current glyph's parameters
+   * relevant to auto-hinting are `swapped in'.  Cf. functions like
+   * `af_loader_reset' and `af_loader_load_g'.
    */
 
   typedef struct  AF_LoaderRec_
diff --git a/src/autofit/afmodule.c b/src/autofit/afmodule.c
index dcaa17a..7f9f043 100644
--- a/src/autofit/afmodule.c
+++ b/src/autofit/afmodule.c
@@ -1,26 +1,25 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afmodule.c                                                             */
-/*                                                                         */
-/*    Auto-fitter module implementation (body).                            */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afmodule.c
+ *
+ *   Auto-fitter module implementation (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "afglobal.h"
 #include "afmodule.h"
 #include "afloader.h"
 #include "aferrors.h"
-#include "afpic.h"
 
 #ifdef FT_DEBUG_AUTOFIT
 
@@ -60,12 +59,12 @@
 #include FT_SERVICE_PROPERTIES_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_afmodule
 
@@ -104,19 +103,6 @@
   }
 
 
-#ifdef FT_CONFIG_OPTION_PIC
-
-#undef  AF_SCRIPT_CLASSES_GET
-#define AF_SCRIPT_CLASSES_GET  \
-          ( GET_PIC( ft_module->library )->af_script_classes )
-
-#undef  AF_STYLE_CLASSES_GET
-#define AF_STYLE_CLASSES_GET  \
-          ( GET_PIC( ft_module->library )->af_style_classes )
-
-#endif
-
-
   static FT_Error
   af_property_set( FT_Module    ft_module,
                    const char*  property_name,
@@ -147,9 +133,9 @@
       /* We translate the fallback script to a fallback style that uses */
       /* `fallback-script' as its script and `AF_COVERAGE_NONE' as its  */
       /* coverage value.                                                */
-      for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
+      for ( ss = 0; af_style_classes[ss]; ss++ )
       {
-        AF_StyleClass  style_class = AF_STYLE_CLASSES_GET[ss];
+        AF_StyleClass  style_class = af_style_classes[ss];
 
 
         if ( (FT_UInt)style_class->script == *fallback_script &&
@@ -160,7 +146,7 @@
         }
       }
 
-      if ( !AF_STYLE_CLASSES_GET[ss] )
+      if ( !af_style_classes[ss] )
       {
         FT_TRACE0(( "af_property_set: Invalid value %d for property `%s'\n",
                     fallback_script, property_name ));
@@ -357,7 +343,7 @@
     {
       FT_UInt*  val = (FT_UInt*)value;
 
-      AF_StyleClass  style_class = AF_STYLE_CLASSES_GET[fallback_style];
+      AF_StyleClass  style_class = af_style_classes[fallback_style];
 
 
       *val = style_class->script;
@@ -440,28 +426,16 @@
   FT_DEFINE_SERVICEDESCREC1(
     af_services,
 
-    FT_SERVICE_ID_PROPERTIES, &AF_SERVICE_PROPERTIES_GET )
+    FT_SERVICE_ID_PROPERTIES, &af_service_properties )
 
 
   FT_CALLBACK_DEF( FT_Module_Interface )
   af_get_interface( FT_Module    module,
                     const char*  module_interface )
   {
-    /* AF_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    FT_Library  library;
-
-
-    if ( !module )
-      return NULL;
-    library = module->library;
-    if ( !library )
-      return NULL;
-#else
     FT_UNUSED( module );
-#endif
 
-    return ft_service_list_lookup( AF_SERVICES_GET, module_interface );
+    return ft_service_list_lookup( af_services, module_interface );
   }
 
 
@@ -589,7 +563,7 @@
     0x10000L,   /* version 1.0 of the autofitter  */
     0x20000L,   /* requires FreeType 2.0 or above */
 
-    (const void*)&AF_INTERFACE_GET,
+    (const void*)&af_autofitter_interface,
 
     (FT_Module_Constructor)af_autofitter_init,  /* module_init   */
     (FT_Module_Destructor) af_autofitter_done,  /* module_done   */
diff --git a/src/autofit/afmodule.h b/src/autofit/afmodule.h
index 56f64ea..0db6ef0 100644
--- a/src/autofit/afmodule.h
+++ b/src/autofit/afmodule.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afmodule.h                                                             */
-/*                                                                         */
-/*    Auto-fitter module implementation (specification).                   */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afmodule.h
+ *
+ *   Auto-fitter module implementation (specification).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFMODULE_H_
@@ -28,8 +28,8 @@
 
 
   /*
-   *  This is the `extended' FT_Module structure that holds the
-   *  autofitter's global data.
+   * This is the `extended' FT_Module structure that holds the
+   * autofitter's global data.
    */
 
   typedef struct  AF_ModuleRec_
diff --git a/src/autofit/afpic.c b/src/autofit/afpic.c
deleted file mode 100644
index d48d016..0000000
--- a/src/autofit/afpic.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afpic.c                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for autofit module.  */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "afpic.h"
-#include "afglobal.h"
-#include "aferrors.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from afmodule.c */
-  FT_Error
-  FT_Create_Class_af_services( FT_Library           library,
-                               FT_ServiceDescRec**  output_class );
-
-  void
-  FT_Destroy_Class_af_services( FT_Library          library,
-                                FT_ServiceDescRec*  clazz );
-
-  void
-  FT_Init_Class_af_service_properties( FT_Service_PropertiesRec*  clazz );
-
-  void FT_Init_Class_af_autofitter_interface(
-    FT_Library                   library,
-    FT_AutoHinter_InterfaceRec*  clazz );
-
-
-  /* forward declaration of PIC init functions from writing system classes */
-#undef  WRITING_SYSTEM
-#define WRITING_SYSTEM( ws, WS )  /* empty */
-
-#include "afwrtsys.h"
-
-
-  void
-  autofit_module_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->autofit )
-    {
-      AFModulePIC*  container = (AFModulePIC*)pic_container->autofit;
-
-
-      if ( container->af_services )
-        FT_Destroy_Class_af_services( library,
-                                      container->af_services );
-      container->af_services = NULL;
-
-      FT_FREE( container );
-      pic_container->autofit = NULL;
-    }
-  }
-
-
-  FT_Error
-  autofit_module_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_UInt            ss;
-    FT_Error           error         = FT_Err_Ok;
-    AFModulePIC*       container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC ( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->autofit = container;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    error = FT_Create_Class_af_services( library,
-                                         &container->af_services );
-    if ( error )
-      goto Exit;
-
-    FT_Init_Class_af_service_properties( &container->af_service_properties );
-
-    for ( ss = 0; ss < AF_WRITING_SYSTEM_MAX; ss++ )
-      container->af_writing_system_classes[ss] =
-        &container->af_writing_system_classes_rec[ss];
-    container->af_writing_system_classes[AF_WRITING_SYSTEM_MAX] = NULL;
-
-    for ( ss = 0; ss < AF_SCRIPT_MAX; ss++ )
-      container->af_script_classes[ss] =
-        &container->af_script_classes_rec[ss];
-    container->af_script_classes[AF_SCRIPT_MAX] = NULL;
-
-    for ( ss = 0; ss < AF_STYLE_MAX; ss++ )
-      container->af_style_classes[ss] =
-        &container->af_style_classes_rec[ss];
-    container->af_style_classes[AF_STYLE_MAX] = NULL;
-
-#undef  WRITING_SYSTEM
-#define WRITING_SYSTEM( ws, WS )                             \
-        FT_Init_Class_af_ ## ws ## _writing_system_class(    \
-          &container->af_writing_system_classes_rec[ss++] );
-
-    ss = 0;
-#include "afwrtsys.h"
-
-#undef  SCRIPT
-#define SCRIPT( s, S, d, h, H, sss )                 \
-        FT_Init_Class_af_ ## s ## _script_class(     \
-          &container->af_script_classes_rec[ss++] );
-
-    ss = 0;
-#include "afscript.h"
-
-#undef  STYLE
-#define STYLE( s, S, d, ws, sc, bss, c )            \
-        FT_Init_Class_af_ ## s ## _style_class(     \
-          &container->af_style_classes_rec[ss++] );
-
-    ss = 0;
-#include "afstyles.h"
-
-    FT_Init_Class_af_autofitter_interface(
-      library, &container->af_autofitter_interface );
-
-  Exit:
-    if ( error )
-      autofit_module_class_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/autofit/afpic.h b/src/autofit/afpic.h
deleted file mode 100644
index 0c73456..0000000
--- a/src/autofit/afpic.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afpic.h                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for autofit module.  */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef AFPIC_H_
-#define AFPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define AF_SERVICES_GET                af_services
-#define AF_SERVICE_PROPERTIES_GET      af_service_properties
-
-#define AF_WRITING_SYSTEM_CLASSES_GET  af_writing_system_classes
-#define AF_SCRIPT_CLASSES_GET          af_script_classes
-#define AF_STYLE_CLASSES_GET           af_style_classes
-#define AF_INTERFACE_GET               af_autofitter_interface
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-  /* some include files required for members of AFModulePIC */
-#include FT_SERVICE_PROPERTIES_H
-
-#include "aftypes.h"
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  AFModulePIC_
-  {
-    FT_ServiceDescRec*          af_services;
-    FT_Service_PropertiesRec    af_service_properties;
-
-    AF_WritingSystemClass       af_writing_system_classes
-                                  [AF_WRITING_SYSTEM_MAX + 1];
-    AF_WritingSystemClassRec    af_writing_system_classes_rec
-                                  [AF_WRITING_SYSTEM_MAX];
-
-    AF_ScriptClass              af_script_classes
-                                  [AF_SCRIPT_MAX + 1];
-    AF_ScriptClassRec           af_script_classes_rec
-                                  [AF_SCRIPT_MAX];
-
-    AF_StyleClass               af_style_classes
-                                  [AF_STYLE_MAX + 1];
-    AF_StyleClassRec            af_style_classes_rec
-                                  [AF_STYLE_MAX];
-
-    FT_AutoHinter_InterfaceRec  af_autofitter_interface;
-
-  } AFModulePIC;
-
-
-#define GET_PIC( lib )  \
-          ( (AFModulePIC*)( (lib)->pic_container.autofit ) )
-
-#define AF_SERVICES_GET  \
-          ( GET_PIC( library )->af_services )
-#define AF_SERVICE_PROPERTIES_GET  \
-          ( GET_PIC( library )->af_service_properties )
-
-#define AF_WRITING_SYSTEM_CLASSES_GET  \
-          ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_writing_system_classes )
-#define AF_SCRIPT_CLASSES_GET  \
-          ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_script_classes )
-#define AF_STYLE_CLASSES_GET  \
-          ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_style_classes )
-#define AF_INTERFACE_GET  \
-          ( GET_PIC( library )->af_autofitter_interface )
-
-
-  /* see afpic.c for the implementation */
-  void
-  autofit_module_class_pic_free( FT_Library  library );
-
-  FT_Error
-  autofit_module_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* AFPIC_H_ */
-
-
-/* END */
diff --git a/src/autofit/afranges.c b/src/autofit/afranges.c
index 1355c5e..b904d51 100644
--- a/src/autofit/afranges.c
+++ b/src/autofit/afranges.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afranges.c                                                             */
-/*                                                                         */
-/*    Auto-fitter Unicode script ranges (body).                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afranges.c
+ *
+ *   Auto-fitter Unicode script ranges (body).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "afranges.h"
@@ -91,7 +91,7 @@
     AF_UNIRANGE_REC(  0x06E7,  0x06E8 ),
     AF_UNIRANGE_REC(  0x06EA,  0x06ED ),
     AF_UNIRANGE_REC(  0x08D4,  0x08E1 ),
-    AF_UNIRANGE_REC(  0x08E3,  0x08FF ),
+    AF_UNIRANGE_REC(  0x08D3,  0x08FF ),
     AF_UNIRANGE_REC(  0xFBB2,  0xFBC1 ),
     AF_UNIRANGE_REC(  0xFE70,  0xFE70 ),
     AF_UNIRANGE_REC(  0xFE72,  0xFE72 ),
@@ -163,6 +163,7 @@
     AF_UNIRANGE_REC(  0x09C1,  0x09C4 ),
     AF_UNIRANGE_REC(  0x09CD,  0x09CD ),
     AF_UNIRANGE_REC(  0x09E2,  0x09E3 ),
+    AF_UNIRANGE_REC(  0x09FE,  0x09FE ),
     AF_UNIRANGE_REC(       0,       0 )
   };
 
@@ -190,6 +191,7 @@
   {
     AF_UNIRANGE_REC( 0x11100, 0x11102 ),
     AF_UNIRANGE_REC( 0x11127, 0x11134 ),
+    AF_UNIRANGE_REC( 0x11146, 0x11146 ),
     AF_UNIRANGE_REC(       0,       0 )
   };
 
@@ -304,6 +306,7 @@
     AF_UNIRANGE_REC(  0x0953,  0x0957 ),
     AF_UNIRANGE_REC(  0x0962,  0x0963 ),
     AF_UNIRANGE_REC(  0xA8E0,  0xA8F1 ),
+    AF_UNIRANGE_REC(  0xA8FF,  0xA8FF ),
     AF_UNIRANGE_REC(       0,       0 )
   };
 
@@ -338,11 +341,8 @@
 
   const AF_Script_UniRangeRec  af_geor_uniranges[] =
   {
-    AF_UNIRANGE_REC(  0x10D0,  0x10FF ),  /* Georgian (Mkhedruli) */
-#if 0
-    /* the following range is proposed for inclusion in Unicode */
-    AF_UNIRANGE_REC(  0x1C90,  0x1CBF ),  /* Georgian (Mtavruli)  */
-#endif
+    AF_UNIRANGE_REC(  0x10D0,  0x10FF ),  /* Georgian (Mkhedruli)          */
+    AF_UNIRANGE_REC(  0x1C90,  0x1CBF ),  /* Georgian Extended (Mtavruli)  */
     AF_UNIRANGE_REC(       0,       0 )
   };
 
@@ -355,8 +355,8 @@
   const AF_Script_UniRangeRec  af_geok_uniranges[] =
   {
     /* Khutsuri */
-    AF_UNIRANGE_REC(  0x10A0,  0x10CD ),  /* Georgian (Asomtavruli) */
-    AF_UNIRANGE_REC(  0x2D00,  0x2D2D ),  /* Georgian (Nuskhuri)    */
+    AF_UNIRANGE_REC(  0x10A0,  0x10CD ),  /* Georgian (Asomtavruli)         */
+    AF_UNIRANGE_REC(  0x2D00,  0x2D2D ),  /* Georgian Supplement (Nuskhuri) */
     AF_UNIRANGE_REC(       0,       0 )
   };
 
@@ -425,6 +425,7 @@
     AF_UNIRANGE_REC(  0x0AC1,  0x0AC8 ),
     AF_UNIRANGE_REC(  0x0ACD,  0x0ACD ),
     AF_UNIRANGE_REC(  0x0AE2,  0x0AE3 ),
+    AF_UNIRANGE_REC(  0x0AFA,  0x0AFF ),
     AF_UNIRANGE_REC(       0,       0 )
   };
 
@@ -655,7 +656,8 @@
 
   const AF_Script_UniRangeRec  af_mlym_nonbase_uniranges[] =
   {
-    AF_UNIRANGE_REC(  0x0D01,  0x0D01 ),
+    AF_UNIRANGE_REC(  0x0D00,  0x0D01 ),
+    AF_UNIRANGE_REC(  0x0D3B,  0x0D3C ),
     AF_UNIRANGE_REC(  0x0D4D,  0x0D4E ),
     AF_UNIRANGE_REC(  0x0D62,  0x0D63 ),
     AF_UNIRANGE_REC(       0,       0 )
@@ -697,6 +699,7 @@
   const AF_Script_UniRangeRec  af_nkoo_nonbase_uniranges[] =
   {
     AF_UNIRANGE_REC(  0x07EB,  0x07F5 ),
+    AF_UNIRANGE_REC(  0x07FD,  0x07FD ),
     AF_UNIRANGE_REC(       0,       0 )
   };
 
@@ -856,6 +859,7 @@
   const AF_Script_UniRangeRec  af_telu_nonbase_uniranges[] =
   {
     AF_UNIRANGE_REC(  0x0C00,  0x0C00 ),
+    AF_UNIRANGE_REC(  0x0C04,  0x0C04 ),
     AF_UNIRANGE_REC(  0x0C3E,  0x0C40 ),
     AF_UNIRANGE_REC(  0x0C46,  0x0C56 ),
     AF_UNIRANGE_REC(  0x0C62,  0x0C63 ),
@@ -1006,10 +1010,13 @@
     AF_UNIRANGE_REC(  0xFE30,  0xFE4F ),  /* CJK Compatibility Forms                 */
     AF_UNIRANGE_REC(  0xFF00,  0xFFEF ),  /* Halfwidth and Fullwidth Forms           */
     AF_UNIRANGE_REC( 0x1B000, 0x1B0FF ),  /* Kana Supplement                         */
+    AF_UNIRANGE_REC( 0x1B100, 0x1B12F ),  /* Kana Extended-A                         */
     AF_UNIRANGE_REC( 0x1D300, 0x1D35F ),  /* Tai Xuan Hing Symbols                   */
     AF_UNIRANGE_REC( 0x20000, 0x2A6DF ),  /* CJK Unified Ideographs Extension B      */
     AF_UNIRANGE_REC( 0x2A700, 0x2B73F ),  /* CJK Unified Ideographs Extension C      */
     AF_UNIRANGE_REC( 0x2B740, 0x2B81F ),  /* CJK Unified Ideographs Extension D      */
+    AF_UNIRANGE_REC( 0x2B820, 0x2CEAF ),  /* CJK Unified Ideographs Extension E      */
+    AF_UNIRANGE_REC( 0x2CEB0, 0x2EBEF ),  /* CJK Unified Ideographs Extension F      */
     AF_UNIRANGE_REC( 0x2F800, 0x2FA1F ),  /* CJK Compatibility Ideographs Supplement */
     AF_UNIRANGE_REC(       0,       0 )
   };
diff --git a/src/autofit/afranges.h b/src/autofit/afranges.h
index ba3b5e7..c137ae2 100644
--- a/src/autofit/afranges.h
+++ b/src/autofit/afranges.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afranges.h                                                             */
-/*                                                                         */
-/*    Auto-fitter Unicode script ranges (specification).                   */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afranges.h
+ *
+ *   Auto-fitter Unicode script ranges (specification).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFRANGES_H_
diff --git a/src/autofit/afscript.h b/src/autofit/afscript.h
index 6ac193f..7dd0983 100644
--- a/src/autofit/afscript.h
+++ b/src/autofit/afscript.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afscript.h                                                             */
-/*                                                                         */
-/*    Auto-fitter scripts (specification only).                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afscript.h
+ *
+ *   Auto-fitter scripts (specification only).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /* The following part can be included multiple times. */
@@ -137,7 +137,7 @@
           "Georgian (Mkhedruli)",
           HB_SCRIPT_GEORGIAN,
           HINTING_BOTTOM_TO_TOP,
-          "\xE1\x83\x98 \xE1\x83\x94 \xE1\x83\x90" ) /* ი ე ა */
+          "\xE1\x83\x98 \xE1\x83\x94 \xE1\x83\x90 \xE1\xB2\xBF" ) /* ი ე ა Ი */
 
   SCRIPT( geok, GEOK,
           "Georgian (Khutsuri)",
diff --git a/src/autofit/afshaper.c b/src/autofit/afshaper.c
index f308281..b2f5d18 100644
--- a/src/autofit/afshaper.c
+++ b/src/autofit/afshaper.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afshaper.c                                                             */
-/*                                                                         */
-/*    HarfBuzz interface for accessing OpenType features (body).           */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afshaper.c
+ *
+ *   HarfBuzz interface for accessing OpenType features (body).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -26,12 +26,12 @@
 #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_afshaper
 
@@ -591,14 +591,9 @@
   void*
   af_shaper_buf_create( FT_Face  face )
   {
-    FT_Error   error;
-    FT_Memory  memory = face->memory;
-    FT_ULong*  buf;
+    FT_UNUSED( face );
 
-
-    FT_MEM_ALLOC( buf, sizeof ( FT_ULong ) );
-
-    return (void*)buf;
+    return NULL;
   }
 
 
@@ -606,10 +601,8 @@
   af_shaper_buf_destroy( FT_Face  face,
                          void*    buf )
   {
-    FT_Memory  memory = face->memory;
-
-
-    FT_FREE( buf );
+    FT_UNUSED( face );
+    FT_UNUSED( buf );
   }
 
 
diff --git a/src/autofit/afshaper.h b/src/autofit/afshaper.h
index 7efd9f6..2665fe2 100644
--- a/src/autofit/afshaper.h
+++ b/src/autofit/afshaper.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afshaper.h                                                             */
-/*                                                                         */
-/*    HarfBuzz interface for accessing OpenType features (specification).  */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afshaper.h
+ *
+ *   HarfBuzz interface for accessing OpenType features (specification).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFSHAPER_H_
diff --git a/src/autofit/afstyles.h b/src/autofit/afstyles.h
index e2688b3..55d8b23 100644
--- a/src/autofit/afstyles.h
+++ b/src/autofit/afstyles.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afstyles.h                                                             */
-/*                                                                         */
-/*    Auto-fitter styles (specification only).                             */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afstyles.h
+ *
+ *   Auto-fitter styles (specification only).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /* The following part can be included multiple times. */
diff --git a/src/autofit/aftypes.h b/src/autofit/aftypes.h
index a500134..affb81b 100644
--- a/src/autofit/aftypes.h
+++ b/src/autofit/aftypes.h
@@ -1,30 +1,30 @@
-/***************************************************************************/
-/*                                                                         */
-/*  aftypes.h                                                              */
-/*                                                                         */
-/*    Auto-fitter types (specification only).                              */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aftypes.h
+ *
+ *   Auto-fitter types (specification only).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /*************************************************************************
    *
-   *  The auto-fitter is a complete rewrite of the old auto-hinter.
-   *  Its main feature is the ability to differentiate between different
-   *  writing systems and scripts in order to apply specific rules.
+   * The auto-fitter is a complete rewrite of the old auto-hinter.
+   * Its main feature is the ability to differentiate between different
+   * writing systems and scripts in order to apply specific rules.
    *
-   *  The code has also been compartmentalized into several entities that
-   *  should make algorithmic experimentation easier than with the old
-   *  code.
+   * The code has also been compartmentalized into several entities that
+   * should make algorithmic experimentation easier than with the old
+   * code.
    *
    *************************************************************************/
 
@@ -76,9 +76,9 @@
 
   typedef struct  AF_WidthRec_
   {
-    FT_Pos  org;  /* original position/width in font units              */
-    FT_Pos  cur;  /* current/scaled position/width in device sub-pixels */
-    FT_Pos  fit;  /* current/fitted position/width in device sub-pixels */
+    FT_Pos  org;  /* original position/width in font units             */
+    FT_Pos  cur;  /* current/scaled position/width in device subpixels */
+    FT_Pos  fit;  /* current/fitted position/width in device subpixels */
 
   } AF_WidthRec, *AF_Width;
 
@@ -102,9 +102,9 @@
   /*************************************************************************/
 
   /*
-   *  The auto-fitter doesn't need a very high angular accuracy;
-   *  this allows us to speed up some computations considerably with a
-   *  light Cordic algorithm (see afangles.c).
+   * The auto-fitter doesn't need a very high angular accuracy;
+   * this allows us to speed up some computations considerably with a
+   * light Cordic algorithm (see afangles.c).
    */
 
   typedef FT_Int  AF_Angle;
@@ -118,7 +118,7 @@
 
 #if 0
   /*
-   *  compute the angle of a given 2-D vector
+   * compute the angle of a given 2-D vector
    */
   FT_LOCAL( AF_Angle )
   af_angle_atan( FT_Pos  dx,
@@ -126,8 +126,8 @@
 
 
   /*
-   *  compute `angle2 - angle1'; the result is always within
-   *  the range [-AF_ANGLE_PI .. AF_ANGLE_PI - 1]
+   * compute `angle2 - angle1'; the result is always within
+   * the range [-AF_ANGLE_PI .. AF_ANGLE_PI - 1]
    */
   FT_LOCAL( AF_Angle )
   af_angle_diff( AF_Angle  angle1,
@@ -150,8 +150,9 @@
   FT_END_STMNT
 
 
-  /*  opaque handle to glyph-specific hints -- see `afhints.h' for more
-   *  details
+  /*
+   * opaque handle to glyph-specific hints -- see `afhints.h' for more
+   * details
    */
   typedef struct AF_GlyphHintsRec_*  AF_GlyphHints;
 
@@ -165,8 +166,8 @@
   /*************************************************************************/
 
   /*
-   *  A scaler models the target pixel device that will receive the
-   *  auto-hinted glyph image.
+   * A scaler models the target pixel device that will receive the
+   * auto-hinted glyph image.
    */
 
 #define AF_SCALER_FLAG_NO_HORIZONTAL  1U /* disable horizontal hinting */
@@ -197,8 +198,9 @@
 
   typedef struct AF_StyleMetricsRec_*  AF_StyleMetrics;
 
-  /*  This function parses an FT_Face to compute global metrics for
-   *  a specific style.
+  /*
+   * This function parses an FT_Face to compute global metrics for
+   * a specific style.
    */
   typedef FT_Error
   (*AF_WritingSystem_InitMetricsFunc)( AF_StyleMetrics  metrics,
@@ -237,22 +239,22 @@
   /*************************************************************************/
 
   /*
-   *  For the auto-hinter, a writing system consists of multiple scripts that
-   *  can be handled similarly *in a typographical way*; the relationship is
-   *  not based on history.  For example, both the Greek and the unrelated
-   *  Armenian scripts share the same features like ascender, descender,
-   *  x-height, etc.  Essentially, a writing system is covered by a
-   *  submodule of the auto-fitter; it contains
+   * For the auto-hinter, a writing system consists of multiple scripts that
+   * can be handled similarly *in a typographical way*; the relationship is
+   * not based on history.  For example, both the Greek and the unrelated
+   * Armenian scripts share the same features like ascender, descender,
+   * x-height, etc.  Essentially, a writing system is covered by a
+   * submodule of the auto-fitter; it contains
    *
-   *  - a specific global analyzer that computes global metrics specific to
-   *    the script (based on script-specific characters to identify ascender
-   *    height, x-height, etc.),
+   * - a specific global analyzer that computes global metrics specific to
+   *   the script (based on script-specific characters to identify ascender
+   *   height, x-height, etc.),
    *
-   *  - a specific glyph analyzer that computes segments and edges for each
-   *    glyph covered by the script,
+   * - a specific glyph analyzer that computes segments and edges for each
+   *   glyph covered by the script,
    *
-   *  - a specific grid-fitting algorithm that distorts the scaled glyph
-   *    outline according to the results of the glyph analyzer.
+   * - a specific grid-fitting algorithm that distorts the scaled glyph
+   *   outline according to the results of the glyph analyzer.
    */
 
 #define AFWRTSYS_H_  /* don't load header files */
@@ -300,12 +302,12 @@
   /*************************************************************************/
 
   /*
-   *  Each script is associated with two sets of Unicode ranges to test
-   *  whether the font face supports the script, and which non-base
-   *  characters the script contains.
+   * Each script is associated with two sets of Unicode ranges to test
+   * whether the font face supports the script, and which non-base
+   * characters the script contains.
    *
-   *  We use four-letter script tags from the OpenType specification,
-   *  extended by `NONE', which indicates `no script'.
+   * We use four-letter script tags from the OpenType specification,
+   * extended by `NONE', which indicates `no script'.
    */
 
 #undef  SCRIPT
@@ -361,41 +363,41 @@
   /*************************************************************************/
 
   /*
-   *  Usually, a font contains more glyphs than can be addressed by its
-   *  character map.
+   * Usually, a font contains more glyphs than can be addressed by its
+   * character map.
    *
-   *  In the PostScript font world, encoding vectors specific to a given
-   *  task are used to select such glyphs, and these glyphs can be often
-   *  recognized by having a suffix in its glyph names.  For example, a
-   *  superscript glyph `A' might be called `A.sup'.  Unfortunately, this
-   *  naming scheme is not standardized and thus unusable for us.
+   * In the PostScript font world, encoding vectors specific to a given
+   * task are used to select such glyphs, and these glyphs can be often
+   * recognized by having a suffix in its glyph names.  For example, a
+   * superscript glyph `A' might be called `A.sup'.  Unfortunately, this
+   * naming scheme is not standardized and thus unusable for us.
    *
-   *  In the OpenType world, a better solution was invented, namely
-   *  `features', which cleanly separate a character's input encoding from
-   *  the corresponding glyph's appearance, and which don't use glyph names
-   *  at all.  For our purposes, and slightly generalized, an OpenType
-   *  feature is a name of a mapping that maps character codes to
-   *  non-standard glyph indices (features get used for other things also).
-   *  For example, the `sups' feature provides superscript glyphs, thus
-   *  mapping character codes like `A' or `B' to superscript glyph
-   *  representation forms.  How this mapping happens is completely
-   *  uninteresting to us.
+   * In the OpenType world, a better solution was invented, namely
+   * `features', which cleanly separate a character's input encoding from
+   * the corresponding glyph's appearance, and which don't use glyph names
+   * at all.  For our purposes, and slightly generalized, an OpenType
+   * feature is a name of a mapping that maps character codes to
+   * non-standard glyph indices (features get used for other things also).
+   * For example, the `sups' feature provides superscript glyphs, thus
+   * mapping character codes like `A' or `B' to superscript glyph
+   * representation forms.  How this mapping happens is completely
+   * uninteresting to us.
    *
-   *  For the auto-hinter, a `coverage' represents all glyphs of an OpenType
-   *  feature collected in a set (as listed below) that can be hinted
-   *  together.  To continue the above example, superscript glyphs must not
-   *  be hinted together with normal glyphs because the blue zones
-   *  completely differ.
+   * For the auto-hinter, a `coverage' represents all glyphs of an OpenType
+   * feature collected in a set (as listed below) that can be hinted
+   * together.  To continue the above example, superscript glyphs must not
+   * be hinted together with normal glyphs because the blue zones
+   * completely differ.
    *
-   *  Note that FreeType itself doesn't compute coverages; it only provides
-   *  the glyphs addressable by the default Unicode character map.  Instead,
-   *  we use the HarfBuzz library (if available), which has many functions
-   *  exactly for this purpose.
+   * Note that FreeType itself doesn't compute coverages; it only provides
+   * the glyphs addressable by the default Unicode character map.  Instead,
+   * we use the HarfBuzz library (if available), which has many functions
+   * exactly for this purpose.
    *
-   *  AF_COVERAGE_DEFAULT is special: It should cover everything that isn't
-   *  listed separately (including the glyphs addressable by the character
-   *  map).  In case HarfBuzz isn't available, it exactly covers the glyphs
-   *  addressable by the character map.
+   * AF_COVERAGE_DEFAULT is special: It should cover everything that isn't
+   * listed separately (including the glyphs addressable by the character
+   * map).  In case HarfBuzz isn't available, it exactly covers the glyphs
+   * addressable by the character map.
    *
    */
 
@@ -423,8 +425,8 @@
   /*************************************************************************/
 
   /*
-   *  The topmost structure for modelling the auto-hinter glyph input data
-   *  is a `style class', grouping everything together.
+   * The topmost structure for modelling the auto-hinter glyph input data
+   * is a `style class', grouping everything together.
    */
 
 #undef  STYLE
@@ -486,8 +488,6 @@
 
 
   /* Declare and define vtables for classes */
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define AF_DECLARE_WRITING_SYSTEM_CLASS( writing_system_class ) \
   FT_CALLBACK_TABLE const AF_WritingSystemClassRec              \
   writing_system_class;
@@ -562,87 +562,9 @@
     coverage                            \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define AF_DECLARE_WRITING_SYSTEM_CLASS( writing_system_class )            \
-  FT_LOCAL( void )                                                         \
-  FT_Init_Class_ ## writing_system_class( AF_WritingSystemClassRec*  ac );
-
-#define AF_DEFINE_WRITING_SYSTEM_CLASS(                                   \
-          writing_system_class,                                           \
-          system,                                                         \
-          m_size,                                                         \
-          m_init,                                                         \
-          m_scale,                                                        \
-          m_done,                                                         \
-          m_stdw,                                                         \
-          h_init,                                                         \
-          h_apply )                                                       \
-  FT_LOCAL_DEF( void )                                                    \
-  FT_Init_Class_ ## writing_system_class( AF_WritingSystemClassRec*  ac ) \
-  {                                                                       \
-    ac->writing_system        = system;                                   \
-                                                                          \
-    ac->style_metrics_size    = m_size;                                   \
-                                                                          \
-    ac->style_metrics_init    = m_init;                                   \
-    ac->style_metrics_scale   = m_scale;                                  \
-    ac->style_metrics_done    = m_done;                                   \
-    ac->style_metrics_getstdw = m_stdw;                                   \
-                                                                          \
-    ac->style_hints_init      = h_init;                                   \
-    ac->style_hints_apply     = h_apply;                                  \
-  }
-
-
-#define AF_DECLARE_SCRIPT_CLASS( script_class )             \
-  FT_LOCAL( void )                                          \
-  FT_Init_Class_ ## script_class( AF_ScriptClassRec*  ac );
-
-#define AF_DEFINE_SCRIPT_CLASS(                            \
-          script_class,                                    \
-          script_,                                         \
-          ranges,                                          \
-          nonbase_ranges,                                  \
-          top_to_bottom,                                   \
-          std_charstring )                                 \
-  FT_LOCAL_DEF( void )                                     \
-  FT_Init_Class_ ## script_class( AF_ScriptClassRec*  ac ) \
-  {                                                        \
-    ac->script                    = script_;               \
-    ac->script_uni_ranges         = ranges;                \
-    ac->script_uni_nonbase_ranges = nonbase_ranges;        \
-    ac->top_to_bottom_hinting     = top_to_bottom;         \
-    ac->standard_charstring       = std_charstring;        \
-  }
-
-
-#define AF_DECLARE_STYLE_CLASS( style_class )             \
-  FT_LOCAL( void )                                        \
-  FT_Init_Class_ ## style_class( AF_StyleClassRec*  ac );
-
-#define AF_DEFINE_STYLE_CLASS(                           \
-          style_class,                                   \
-          style_,                                        \
-          writing_system_,                               \
-          script_,                                       \
-          blue_stringset_,                               \
-          coverage_ )                                    \
-  FT_LOCAL_DEF( void )                                   \
-  FT_Init_Class_ ## style_class( AF_StyleClassRec*  ac ) \
-  {                                                      \
-    ac->style          = style_;                         \
-    ac->writing_system = writing_system_;                \
-    ac->script         = script_;                        \
-    ac->blue_stringset = blue_stringset_;                \
-    ac->coverage       = coverage_;                      \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
 /* */
 
+
 FT_END_HEADER
 
 #endif /* AFTYPES_H_ */
diff --git a/src/autofit/afwarp.c b/src/autofit/afwarp.c
index 2a75ea7..636f01f 100644
--- a/src/autofit/afwarp.c
+++ b/src/autofit/afwarp.c
@@ -1,38 +1,38 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afwarp.c                                                               */
-/*                                                                         */
-/*    Auto-fitter warping algorithm (body).                                */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afwarp.c
+ *
+ *   Auto-fitter warping algorithm (body).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /*
-   *  The idea of the warping code is to slightly scale and shift a glyph
-   *  within a single dimension so that as much of its segments are aligned
-   *  (more or less) on the grid.  To find out the optimal scaling and
-   *  shifting value, various parameter combinations are tried and scored.
+   * The idea of the warping code is to slightly scale and shift a glyph
+   * within a single dimension so that as much of its segments are aligned
+   * (more or less) on the grid.  To find out the optimal scaling and
+   * shifting value, various parameter combinations are tried and scored.
    */
 
 #include "afwarp.h"
 
 #ifdef AF_CONFIG_OPTION_USE_WARPER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_afwarp
 
diff --git a/src/autofit/afwarp.h b/src/autofit/afwarp.h
index 520b1be..d454dfb 100644
--- a/src/autofit/afwarp.h
+++ b/src/autofit/afwarp.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afwarp.h                                                               */
-/*                                                                         */
-/*    Auto-fitter warping algorithm (specification).                       */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afwarp.h
+ *
+ *   Auto-fitter warping algorithm (specification).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFWARP_H_
@@ -47,12 +47,14 @@
   } AF_WarperRec, *AF_Warper;
 
 
+#ifdef AF_CONFIG_OPTION_USE_WARPER
   FT_LOCAL( void )
   af_warper_compute( AF_Warper      warper,
                      AF_GlyphHints  hints,
                      AF_Dimension   dim,
                      FT_Fixed      *a_scale,
                      FT_Fixed      *a_delta );
+#endif
 
 
 FT_END_HEADER
diff --git a/src/autofit/afwrtsys.h b/src/autofit/afwrtsys.h
index 4675f32..20311da 100644
--- a/src/autofit/afwrtsys.h
+++ b/src/autofit/afwrtsys.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afwrtsys.h                                                             */
-/*                                                                         */
-/*    Auto-fitter writing systems (specification only).                    */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afwrtsys.h
+ *
+ *   Auto-fitter writing systems (specification only).
+ *
+ * Copyright 2013-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFWRTSYS_H_
diff --git a/src/autofit/autofit.c b/src/autofit/autofit.c
index c160516..1fba44a 100644
--- a/src/autofit/autofit.c
+++ b/src/autofit/autofit.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  autofit.c                                                              */
-/*                                                                         */
-/*    Auto-fitter module (body).                                           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * autofit.c
+ *
+ *   Auto-fitter module (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
@@ -30,7 +30,6 @@
 #include "aflatin2.c"
 #include "afloader.c"
 #include "afmodule.c"
-#include "afpic.c"
 #include "afranges.c"
 #include "afshaper.c"
 #include "afwarp.c"
diff --git a/src/autofit/rules.mk b/src/autofit/rules.mk
index 75171b4..7295dc0 100644
--- a/src/autofit/rules.mk
+++ b/src/autofit/rules.mk
@@ -38,7 +38,6 @@
                  $(AUTOF_DIR)/aflatin.c  \
                  $(AUTOF_DIR)/afloader.c \
                  $(AUTOF_DIR)/afmodule.c \
-                 $(AUTOF_DIR)/afpic.c    \
                  $(AUTOF_DIR)/afranges.c \
                  $(AUTOF_DIR)/afshaper.c \
                  $(AUTOF_DIR)/afwarp.c
diff --git a/src/base/Jamfile b/src/base/Jamfile
index 2b47b8a..5bee6e2 100644
--- a/src/base/Jamfile
+++ b/src/base/Jamfile
@@ -20,9 +20,12 @@
     _sources = basepic
                ftadvanc
                ftcalc
+               ftcolor
                ftdbgmem
+               ftfntfmt
                ftgloadr
                fthash
+               ftlcdfil
                ftobjs
                ftoutln
                ftpic
@@ -51,13 +54,11 @@
                     ftbitmap
                     ftcid
                     ftdebug
-                    ftfntfmt
                     ftfstype
                     ftgasp
                     ftglyph
                     ftgxval
                     ftinit
-                    ftlcdfil
                     ftmm
                     ftotval
                     ftpatent
diff --git a/src/base/basepic.c b/src/base/basepic.c
deleted file mode 100644
index bc80406..0000000
--- a/src/base/basepic.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  basepic.c                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for base.            */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "basepic.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from ftglyph.c */
-  void
-  FT_Init_Class_ft_outline_glyph_class( FT_Glyph_Class*  clazz );
-
-  void
-  FT_Init_Class_ft_bitmap_glyph_class( FT_Glyph_Class*  clazz );
-
-#ifdef FT_CONFIG_OPTION_MAC_FONTS
-  /* forward declaration of PIC init function from ftrfork.c */
-  /* (not modularized)                                       */
-  void
-  FT_Init_Table_ft_raccess_guess_table( ft_raccess_guess_rec*  record );
-#endif
-
-  /* forward declaration of PIC init functions from ftinit.c */
-  FT_Error
-  ft_create_default_module_classes( FT_Library  library );
-
-  void
-  ft_destroy_default_module_classes( FT_Library  library );
-
-
-  void
-  ft_base_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->base )
-    {
-      /* destroy default module classes            */
-      /* (in case FT_Add_Default_Modules was used) */
-      ft_destroy_default_module_classes( library );
-
-      FT_FREE( pic_container->base );
-      pic_container->base = NULL;
-    }
-  }
-
-
-  FT_Error
-  ft_base_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    BasePIC*           container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->base = container;
-
-    /* initialize default modules list and pointers */
-    error = ft_create_default_module_classes( library );
-    if ( error )
-      goto Exit;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    FT_Init_Class_ft_outline_glyph_class(
-      &container->ft_outline_glyph_class );
-    FT_Init_Class_ft_bitmap_glyph_class(
-      &container->ft_bitmap_glyph_class );
-#ifdef FT_CONFIG_OPTION_MAC_FONTS
-    FT_Init_Table_ft_raccess_guess_table(
-      (ft_raccess_guess_rec*)&container->ft_raccess_guess_table );
-#endif
-
-  Exit:
-    if ( error )
-      ft_base_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/base/basepic.h b/src/base/basepic.h
deleted file mode 100644
index 492d1ed..0000000
--- a/src/base/basepic.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  basepic.h                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for base.            */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef BASEPIC_H_
-#define BASEPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define FT_OUTLINE_GLYPH_CLASS_GET  &ft_outline_glyph_class
-#define FT_BITMAP_GLYPH_CLASS_GET   &ft_bitmap_glyph_class
-#define FT_DEFAULT_MODULES_GET      ft_default_modules
-
-#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-#define FT_RACCESS_GUESS_TABLE_GET  ft_raccess_guess_table
-#endif
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_GLYPH_H
-
-#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-#include FT_INTERNAL_RFORK_H
-#endif
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  BasePIC_
-  {
-    FT_Module_Class**  default_module_classes;
-    FT_Glyph_Class     ft_outline_glyph_class;
-    FT_Glyph_Class     ft_bitmap_glyph_class;
-
-#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-    ft_raccess_guess_rec  ft_raccess_guess_table[FT_RACCESS_N_RULES];
-#endif
-
-  } BasePIC;
-
-
-#define GET_PIC( lib )  ( (BasePIC*)( (lib)->pic_container.base ) )
-
-#define FT_OUTLINE_GLYPH_CLASS_GET                      \
-          ( &GET_PIC( library )->ft_outline_glyph_class )
-#define FT_BITMAP_GLYPH_CLASS_GET                        \
-          ( &GET_PIC( library )->ft_bitmap_glyph_class )
-#define FT_DEFAULT_MODULES_GET                           \
-          ( GET_PIC( library )->default_module_classes )
-
-#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-#define FT_RACCESS_GUESS_TABLE_GET                       \
-          ( GET_PIC( library )->ft_raccess_guess_table )
-#endif
-
-
-  /* see basepic.c for the implementation */
-  void
-  ft_base_pic_free( FT_Library  library );
-
-  FT_Error
-  ft_base_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-  /* */
-
-#endif /* BASEPIC_H_ */
-
-
-/* END */
diff --git a/src/base/ftadvanc.c b/src/base/ftadvanc.c
index 230c84d..22f4ec9 100644
--- a/src/base/ftadvanc.c
+++ b/src/base/ftadvanc.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftadvanc.c                                                             */
-/*                                                                         */
-/*    Quick computation of advance widths (body).                          */
-/*                                                                         */
-/*  Copyright 2008-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftadvanc.c
+ *
+ *   Quick computation of advance widths (body).
+ *
+ * Copyright 2008-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/ftapi.c b/src/base/ftapi.c
index 32d6e95..2e6f942 100644
--- a/src/base/ftapi.c
+++ b/src/base/ftapi.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftapi.c                                                                */
-/*                                                                         */
-/*    The FreeType compatibility functions (body).                         */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftapi.c
+ *
+ *   The FreeType compatibility functions (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/ftbase.c b/src/base/ftbase.c
index a1bdbaf..5f7d818 100644
--- a/src/base/ftbase.c
+++ b/src/base/ftbase.c
@@ -1,34 +1,35 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbase.c                                                               */
-/*                                                                         */
-/*    Single object library component (body only).                         */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbase.c
+ *
+ *   Single object library component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
 #define  FT_MAKE_OPTION_SINGLE_OBJECT
 
-#include "basepic.c"
 #include "ftadvanc.c"
 #include "ftcalc.c"
+#include "ftcolor.c"
 #include "ftdbgmem.c"
+#include "ftfntfmt.c"
 #include "ftgloadr.c"
 #include "fthash.c"
+#include "ftlcdfil.c"
 #include "ftmac.c"
 #include "ftobjs.c"
 #include "ftoutln.c"
-#include "ftpic.c"
 #include "ftpsprop.c"
 #include "ftrfork.c"
 #include "ftsnames.c"
diff --git a/src/base/ftbase.h b/src/base/ftbase.h
index 7e8cfad..feb0f4e 100644
--- a/src/base/ftbase.h
+++ b/src/base/ftbase.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbase.h                                                               */
-/*                                                                         */
-/*    Private functions used in the `base' module (specification).         */
-/*                                                                         */
-/*  Copyright 2008-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya.      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbase.h
+ *
+ *   Private functions used in the `base' module (specification).
+ *
+ * Copyright 2008-2018 by
+ * David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTBASE_H_
diff --git a/src/base/ftbbox.c b/src/base/ftbbox.c
index 151e85c..86cefe4 100644
--- a/src/base/ftbbox.c
+++ b/src/base/ftbbox.c
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbbox.c                                                               */
-/*                                                                         */
-/*    FreeType bbox computation (body).                                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbbox.c
+ *
+ *   FreeType bbox computation (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This component has a _single_ role: to compute exact outline bounding */
-  /* boxes.                                                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This component has a _single_ role: to compute exact outline bounding
+   * boxes.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -61,26 +61,28 @@
           ( p->y < bbox.yMin || p->y > bbox.yMax )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Move_To                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used as a `move_to' emitter during                */
-  /*    FT_Outline_Decompose().  It simply records the destination point   */
-  /*    in `user->last'. We also update bbox in case contour starts with   */
-  /*    an implicit `on' point.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    to   :: A pointer to the destination vector.                       */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    user :: A pointer to the current walk context.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Always 0.  Needed for the interface only.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Move_To
+   *
+   * @Description:
+   *   This function is used as a `move_to' emitter during
+   *   FT_Outline_Decompose().  It simply records the destination point
+   *   in `user->last'. We also update bbox in case contour starts with
+   *   an implicit `on' point.
+   *
+   * @Input:
+   *   to ::
+   *     A pointer to the destination vector.
+   *
+   * @InOut:
+   *   user ::
+   *     A pointer to the current walk context.
+   *
+   * @Return:
+   *   Always 0.  Needed for the interface only.
+   */
   static int
   BBox_Move_To( FT_Vector*  to,
                 TBBox_Rec*  user )
@@ -93,26 +95,28 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Line_To                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used as a `line_to' emitter during                */
-  /*    FT_Outline_Decompose().  It simply records the destination point   */
-  /*    in `user->last'; no further computations are necessary because     */
-  /*    bbox already contains both explicit ends of the line segment.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    to   :: A pointer to the destination vector.                       */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    user :: A pointer to the current walk context.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Always 0.  Needed for the interface only.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Line_To
+   *
+   * @Description:
+   *   This function is used as a `line_to' emitter during
+   *   FT_Outline_Decompose().  It simply records the destination point
+   *   in `user->last'; no further computations are necessary because
+   *   bbox already contains both explicit ends of the line segment.
+   *
+   * @Input:
+   *   to ::
+   *     A pointer to the destination vector.
+   *
+   * @InOut:
+   *   user ::
+   *     A pointer to the current walk context.
+   *
+   * @Return:
+   *   Always 0.  Needed for the interface only.
+   */
   static int
   BBox_Line_To( FT_Vector*  to,
                 TBBox_Rec*  user )
@@ -123,28 +127,33 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Conic_Check                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Find the extrema of a 1-dimensional conic Bezier curve and update  */
-  /*    a bounding range.  This version uses direct computation, as it     */
-  /*    doesn't need square roots.                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    y1  :: The start coordinate.                                       */
-  /*                                                                       */
-  /*    y2  :: The coordinate of the control point.                        */
-  /*                                                                       */
-  /*    y3  :: The end coordinate.                                         */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    min :: The address of the current minimum.                         */
-  /*                                                                       */
-  /*    max :: The address of the current maximum.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Conic_Check
+   *
+   * @Description:
+   *   Find the extrema of a 1-dimensional conic Bezier curve and update
+   *   a bounding range.  This version uses direct computation, as it
+   *   doesn't need square roots.
+   *
+   * @Input:
+   *   y1 ::
+   *     The start coordinate.
+   *
+   *   y2 ::
+   *     The coordinate of the control point.
+   *
+   *   y3 ::
+   *     The end coordinate.
+   *
+   * @InOut:
+   *   min ::
+   *     The address of the current minimum.
+   *
+   *   max ::
+   *     The address of the current maximum.
+   */
   static void
   BBox_Conic_Check( FT_Pos   y1,
                     FT_Pos   y2,
@@ -168,32 +177,35 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Conic_To                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used as a `conic_to' emitter during               */
-  /*    FT_Outline_Decompose().  It checks a conic Bezier curve with the   */
-  /*    current bounding box, and computes its extrema if necessary to     */
-  /*    update it.                                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    control :: A pointer to a control point.                           */
-  /*                                                                       */
-  /*    to      :: A pointer to the destination vector.                    */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    user    :: The address of the current walk context.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Always 0.  Needed for the interface only.                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    In the case of a non-monotonous arc, we compute directly the       */
-  /*    extremum coordinates, as it is sufficiently fast.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Conic_To
+   *
+   * @Description:
+   *   This function is used as a `conic_to' emitter during
+   *   FT_Outline_Decompose().  It checks a conic Bezier curve with the
+   *   current bounding box, and computes its extrema if necessary to
+   *   update it.
+   *
+   * @Input:
+   *   control ::
+   *     A pointer to a control point.
+   *
+   *   to ::
+   *     A pointer to the destination vector.
+   *
+   * @InOut:
+   *   user ::
+   *     The address of the current walk context.
+   *
+   * @Return:
+   *   Always 0.  Needed for the interface only.
+   *
+   * @Note:
+   *   In the case of a non-monotonous arc, we compute directly the
+   *   extremum coordinates, as it is sufficiently fast.
+   */
   static int
   BBox_Conic_To( FT_Vector*  control,
                  FT_Vector*  to,
@@ -222,30 +234,36 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Cubic_Check                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Find the extrema of a 1-dimensional cubic Bezier curve and         */
-  /*    update a bounding range.  This version uses iterative splitting    */
-  /*    because it is faster than the exact solution with square roots.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    p1  :: The start coordinate.                                       */
-  /*                                                                       */
-  /*    p2  :: The coordinate of the first control point.                  */
-  /*                                                                       */
-  /*    p3  :: The coordinate of the second control point.                 */
-  /*                                                                       */
-  /*    p4  :: The end coordinate.                                         */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    min :: The address of the current minimum.                         */
-  /*                                                                       */
-  /*    max :: The address of the current maximum.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Cubic_Check
+   *
+   * @Description:
+   *   Find the extrema of a 1-dimensional cubic Bezier curve and
+   *   update a bounding range.  This version uses iterative splitting
+   *   because it is faster than the exact solution with square roots.
+   *
+   * @Input:
+   *   p1 ::
+   *     The start coordinate.
+   *
+   *   p2 ::
+   *     The coordinate of the first control point.
+   *
+   *   p3 ::
+   *     The coordinate of the second control point.
+   *
+   *   p4 ::
+   *     The end coordinate.
+   *
+   * @InOut:
+   *   min ::
+   *     The address of the current minimum.
+   *
+   *   max ::
+   *     The address of the current maximum.
+   */
   static FT_Pos
   cubic_peak( FT_Pos  q1,
               FT_Pos  q2,
@@ -361,34 +379,38 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Cubic_To                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used as a `cubic_to' emitter during               */
-  /*    FT_Outline_Decompose().  It checks a cubic Bezier curve with the   */
-  /*    current bounding box, and computes its extrema if necessary to     */
-  /*    update it.                                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    control1 :: A pointer to the first control point.                  */
-  /*                                                                       */
-  /*    control2 :: A pointer to the second control point.                 */
-  /*                                                                       */
-  /*    to       :: A pointer to the destination vector.                   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    user     :: The address of the current walk context.               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Always 0.  Needed for the interface only.                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    In the case of a non-monotonous arc, we don't compute directly     */
-  /*    extremum coordinates, we subdivide instead.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Cubic_To
+   *
+   * @Description:
+   *   This function is used as a `cubic_to' emitter during
+   *   FT_Outline_Decompose().  It checks a cubic Bezier curve with the
+   *   current bounding box, and computes its extrema if necessary to
+   *   update it.
+   *
+   * @Input:
+   *   control1 ::
+   *     A pointer to the first control point.
+   *
+   *   control2 ::
+   *     A pointer to the second control point.
+   *
+   *   to ::
+   *     A pointer to the destination vector.
+   *
+   * @InOut:
+   *   user ::
+   *     The address of the current walk context.
+   *
+   * @Return:
+   *   Always 0.  Needed for the interface only.
+   *
+   * @Note:
+   *   In the case of a non-monotonous arc, we don't compute directly
+   *   extremum coordinates, we subdivide instead.
+   */
   static int
   BBox_Cubic_To( FT_Vector*  control1,
                  FT_Vector*  control2,
@@ -490,12 +512,6 @@
       FT_Error   error;
       TBBox_Rec  user;
 
-#ifdef FT_CONFIG_OPTION_PIC
-      FT_Outline_Funcs  bbox_interface;
-
-
-      Init_Class_bbox_interface( &bbox_interface );
-#endif
 
       user.bbox = bbox;
 
diff --git a/src/base/ftbdf.c b/src/base/ftbdf.c
index c4ea502..8a27c84 100644
--- a/src/base/ftbdf.c
+++ b/src/base/ftbdf.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbdf.c                                                                */
-/*                                                                         */
-/*    FreeType API for accessing BDF-specific strings (body).              */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbdf.c
+ *
+ *   FreeType API for accessing BDF-specific strings (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/ftbitmap.c b/src/base/ftbitmap.c
index 93efb09..dc28c40 100644
--- a/src/base/ftbitmap.c
+++ b/src/base/ftbitmap.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbitmap.c                                                             */
-/*                                                                         */
-/*    FreeType utility functions for bitmaps (body).                       */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbitmap.c
+ *
+ *   FreeType utility functions for bitmaps (body).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -24,8 +24,18 @@
 #include FT_INTERNAL_OBJECTS_H
 
 
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_bitmap
+
+
   static
-  const FT_Bitmap  null_bitmap = { 0, 0, 0, 0, 0, 0, 0, 0 };
+  const FT_Bitmap  null_bitmap = { 0, 0, 0, NULL, 0, 0, 0, NULL };
 
 
   /* documentation is in ftbitmap.h */
@@ -237,7 +247,7 @@
       unsigned char*  out = buffer;
 
       unsigned char*  limit = bitmap->buffer + pitch * bitmap->rows;
-      unsigned int    delta = new_pitch - pitch;
+      unsigned int    delta = new_pitch - len;
 
 
       FT_MEM_ZERO( out, new_pitch * ypixels );
@@ -247,8 +257,10 @@
       {
         FT_MEM_COPY( out, in, len );
         in  += pitch;
-        out += pitch;
+        out += len;
 
+        /* we use FT_QALLOC_MULT, which doesn't zero out the buffer;      */
+        /* consequently, we have to manually zero out the remaining bytes */
         FT_MEM_ZERO( out, delta );
         out += delta;
       }
@@ -261,14 +273,14 @@
       unsigned char*  out = buffer;
 
       unsigned char*  limit = bitmap->buffer + pitch * bitmap->rows;
-      unsigned int    delta = new_pitch - pitch;
+      unsigned int    delta = new_pitch - len;
 
 
       while ( in < limit )
       {
         FT_MEM_COPY( out, in, len );
         in  += pitch;
-        out += pitch;
+        out += len;
 
         FT_MEM_ZERO( out, delta );
         out += delta;
@@ -784,6 +796,352 @@
   /* documentation is in ftbitmap.h */
 
   FT_EXPORT_DEF( FT_Error )
+  FT_Bitmap_Blend( FT_Library        library,
+                   const FT_Bitmap*  source_,
+                   const FT_Vector   source_offset_,
+                   FT_Bitmap*        target,
+                   FT_Vector        *atarget_offset,
+                   FT_Color          color )
+  {
+    FT_Error   error = FT_Err_Ok;
+    FT_Memory  memory;
+
+    FT_Bitmap         source_bitmap;
+    const FT_Bitmap*  source;
+
+    FT_Vector  source_offset;
+    FT_Vector  target_offset;
+    FT_Vector  frac_offset;
+
+    FT_Bool  free_source_bitmap          = 0;
+    FT_Bool  free_target_bitmap_on_error = 0;
+
+    FT_Pos  source_llx, source_lly, source_urx, source_ury;
+    FT_Pos  target_llx, target_lly, target_urx, target_ury;
+    FT_Pos  final_llx, final_lly, final_urx, final_ury;
+
+    unsigned int  final_rows, final_width;
+    long          x, y;
+
+
+    if ( !library || !target || !source_ || !atarget_offset )
+      return FT_THROW( Invalid_Argument );
+
+    memory = library->memory;
+
+    if ( !( target->pixel_mode == FT_PIXEL_MODE_NONE     ||
+            ( target->pixel_mode == FT_PIXEL_MODE_BGRA &&
+              target->buffer                           ) ) )
+      return FT_THROW( Invalid_Argument );
+
+    if ( source_->pixel_mode == FT_PIXEL_MODE_NONE )
+      return FT_Err_Ok;               /* nothing to do */
+
+    /* pitches must have the same sign */
+    if ( target->pixel_mode == FT_PIXEL_MODE_BGRA &&
+         ( source_->pitch ^ target->pitch ) < 0   )
+      return FT_THROW( Invalid_Argument );
+
+    if ( !( source_->width && source_->rows ) )
+      return FT_Err_Ok;               /* nothing to do */
+
+    /* we isolate a fractional shift of `source',        */
+    /* to be less than one pixel and always positive;    */
+    /* `source_offset' now holds full-pixel shift values */
+    source_offset.x = FT_PIX_FLOOR( source_offset_.x );
+    frac_offset.x   = source_offset_.x - source_offset.x;
+
+    source_offset.y = FT_PIX_FLOOR( source_offset_.y );
+    frac_offset.y   = source_offset_.y - source_offset.y;
+
+    /* assure integer pixel offset for target bitmap */
+    target_offset.x = FT_PIX_FLOOR( atarget_offset->x );
+    target_offset.y = FT_PIX_FLOOR( atarget_offset->y );
+
+    /* get source bitmap dimensions */
+    source_llx = source_offset.x;
+    if ( FT_LONG_MIN + (FT_Pos)( source_->rows << 6 ) + 64 > source_offset.y )
+    {
+      FT_TRACE5((
+        "FT_Bitmap_Blend: y coordinate overflow in source bitmap\n" ));
+      return FT_THROW( Invalid_Argument );
+    }
+    source_lly = source_offset.y - ( source_->rows << 6 );
+
+    if ( FT_LONG_MAX - (FT_Pos)( source_->width << 6 ) - 64 < source_llx )
+    {
+      FT_TRACE5((
+        "FT_Bitmap_Blend: x coordinate overflow in source bitmap\n" ));
+      return FT_THROW( Invalid_Argument );
+    }
+    source_urx = source_llx + ( source_->width << 6 );
+    source_ury = source_offset.y;
+
+    /* get target bitmap dimensions */
+    if ( target->width && target->rows )
+    {
+      target_llx = target_offset.x;
+      if ( FT_LONG_MIN + (FT_Pos)( target->rows << 6 ) > target_offset.y )
+      {
+        FT_TRACE5((
+          "FT_Bitmap_Blend: y coordinate overflow in target bitmap\n" ));
+        return FT_THROW( Invalid_Argument );
+      }
+      target_lly = target_offset.y - ( target->rows << 6 );
+
+      if ( FT_LONG_MAX - (FT_Pos)( target->width << 6 ) < target_llx )
+      {
+        FT_TRACE5((
+          "FT_Bitmap_Blend: x coordinate overflow in target bitmap\n" ));
+        return FT_THROW( Invalid_Argument );
+      }
+      target_urx = target_llx + ( target->width << 6 );
+      target_ury = target_offset.y;
+    }
+    else
+    {
+      target_llx = FT_LONG_MAX;
+      target_lly = FT_LONG_MAX;
+      target_urx = FT_LONG_MIN;
+      target_ury = FT_LONG_MIN;
+    }
+
+    /* move upper right corner up and to the right */
+    /* if we have a fractional offset              */
+    if ( source_urx >= target_urx && frac_offset.x )
+      source_urx += 64;
+    if ( source_ury >= target_ury && frac_offset.y )
+      source_ury += 64;
+
+    /* compute final bitmap dimensions */
+    final_llx = FT_MIN( source_llx, target_llx );
+    final_lly = FT_MIN( source_lly, target_lly );
+    final_urx = FT_MAX( source_urx, target_urx );
+    final_ury = FT_MAX( source_ury, target_ury );
+
+    final_width = ( final_urx - final_llx ) >> 6;
+    final_rows  = ( final_ury - final_lly ) >> 6;
+
+#ifdef FT_DEBUG_LEVEL_TRACE
+    FT_TRACE5(( "FT_Bitmap_Blend:\n"
+                "  source bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
+      source_llx / 64, source_lly / 64,
+      source_urx / 64, source_ury / 64,
+      source_->width, source_->rows ));
+
+    if ( frac_offset.x || frac_offset.y )
+      FT_TRACE5(( "    fractional offset: (%d/64, %d/64)\n",
+                  frac_offset.x, frac_offset.y ));
+
+    if ( target->width && target->rows )
+      FT_TRACE5(( "  target bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
+        target_llx / 64, target_lly / 64,
+        target_urx / 64, target_ury / 64,
+        target->width, target->rows ));
+    else
+      FT_TRACE5(( "  target bitmap: empty\n" ));
+
+    FT_TRACE5(( "  final bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
+      final_llx / 64, final_lly / 64,
+      final_urx / 64, final_ury / 64,
+      final_width, final_rows ));
+#endif /* FT_DEBUG_LEVEL_TRACE */
+
+    /* for blending, set offset vector of final bitmap */
+    /* temporarily to (0,0)                            */
+    source_llx -= final_llx;
+    source_lly -= final_lly;
+
+    if ( target->width && target->rows )
+    {
+      target_llx -= final_llx;
+      target_lly -= final_lly;
+    }
+
+    /* set up target bitmap */
+    if ( target->pixel_mode == FT_PIXEL_MODE_NONE )
+    {
+      /* create new empty bitmap */
+      target->width      = final_width;
+      target->rows       = final_rows;
+      target->pixel_mode = FT_PIXEL_MODE_BGRA;
+      target->pitch      = (int)final_width * 4;
+      target->num_grays  = 256;
+
+      if ( FT_LONG_MAX / target->pitch < (int)target->rows )
+      {
+        FT_TRACE5(( "FT_Blend_Bitmap: target bitmap too large (%d x %d)\n",
+                     final_width, final_rows ));
+        return FT_THROW( Invalid_Argument );
+      }
+
+      if ( FT_ALLOC( target->buffer, target->pitch * (int)target->rows ) )
+        return error;
+
+      free_target_bitmap_on_error = 1;
+    }
+    else if ( target->width != final_width ||
+              target->rows  != final_rows  )
+    {
+      /* adjust old bitmap to enlarged size */
+      int  pitch, new_pitch;
+
+      unsigned char*  buffer = NULL;
+
+
+      pitch = target->pitch;
+      if ( pitch < 0 )
+        pitch = -pitch;
+
+      new_pitch = (int)final_width * 4;
+
+      if ( FT_LONG_MAX / new_pitch < (int)final_rows )
+      {
+        FT_TRACE5(( "FT_Blend_Bitmap: target bitmap too large (%d x %d)\n",
+                     final_width, final_rows ));
+        return FT_THROW( Invalid_Argument );
+      }
+
+      /* TODO: provide an in-buffer solution for large bitmaps */
+      /*       to avoid allocation of a new buffer             */
+      if ( FT_ALLOC( buffer, new_pitch * (int)final_rows ) )
+        goto Error;
+
+      /* copy data to new buffer */
+      x = target_llx >> 6;
+      y = target_lly >> 6;
+
+      /* the bitmap flow is from top to bottom, */
+      /* but y is measured from bottom to top   */
+      if ( target->pitch < 0 )
+      {
+        /* XXX */
+      }
+      else
+      {
+        unsigned char*  p =
+          target->buffer;
+        unsigned char*  q =
+          buffer +
+          ( final_rows - y - target->rows ) * new_pitch +
+          x * 4;
+        unsigned char*  limit_p =
+          p + pitch * (int)target->rows;
+
+
+        while ( p < limit_p )
+        {
+          FT_MEM_COPY( q, p, pitch );
+
+          p += pitch;
+          q += new_pitch;
+        }
+      }
+
+      FT_FREE( target->buffer );
+
+      target->width = final_width;
+      target->rows  = final_rows;
+
+      if ( target->pitch < 0 )
+        target->pitch = -new_pitch;
+      else
+        target->pitch = new_pitch;
+
+      target->buffer = buffer;
+    }
+
+    /* adjust source bitmap if necessary */
+    if ( source_->pixel_mode != FT_PIXEL_MODE_GRAY )
+    {
+      FT_Bitmap_Init( &source_bitmap );
+      error = FT_Bitmap_Convert( library, source_, &source_bitmap, 1 );
+      if ( error )
+        goto Error;
+
+      source             = &source_bitmap;
+      free_source_bitmap = 1;
+    }
+    else
+      source = source_;
+
+    /* do blending; the code below returns pre-multiplied channels, */
+    /* similar to what FreeType gets from `CBDT' tables             */
+    x = source_llx >> 6;
+    y = source_lly >> 6;
+
+    /* XXX handle `frac_offset' */
+
+    /* the bitmap flow is from top to bottom, */
+    /* but y is measured from bottom to top   */
+    if ( target->pitch < 0 )
+    {
+      /* XXX */
+    }
+    else
+    {
+      unsigned char*  p =
+        source->buffer;
+      unsigned char*  q =
+        target->buffer +
+        ( target->rows - y - source->rows ) * target->pitch +
+        x * 4;
+      unsigned char*  limit_p =
+        p + source->pitch * (int)source->rows;
+
+
+      while ( p < limit_p )
+      {
+        unsigned char*  r       = p;
+        unsigned char*  s       = q;
+        unsigned char*  limit_r = r + source->width;
+
+
+        while ( r < limit_r )
+        {
+          int  aa = *r++;
+          int  fa = color.alpha * aa / 255;
+
+          int  fb = color.blue * fa / 255;
+          int  fg = color.green * fa / 255;
+          int  fr = color.red * fa / 255;
+
+          int  ba2 = 255 - fa;
+
+          int  bb = s[0];
+          int  bg = s[1];
+          int  br = s[2];
+          int  ba = s[3];
+
+
+          *s++ = (unsigned char)( bb * ba2 / 255 + fb );
+          *s++ = (unsigned char)( bg * ba2 / 255 + fg );
+          *s++ = (unsigned char)( br * ba2 / 255 + fr );
+          *s++ = (unsigned char)( ba * ba2 / 255 + fa );
+        }
+
+        p += source->pitch;
+        q += target->pitch;
+      }
+    }
+
+    atarget_offset->x = final_llx;
+    atarget_offset->y = final_lly + ( final_rows << 6 );
+
+  Error:
+    if ( error && free_target_bitmap_on_error )
+      FT_Bitmap_Done( library, target );
+
+    if ( free_source_bitmap )
+      FT_Bitmap_Done( library, &source_bitmap );
+
+    return error;
+  }
+
+
+  /* documentation is in ftbitmap.h */
+
+  FT_EXPORT_DEF( FT_Error )
   FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot )
   {
     if ( slot && slot->format == FT_GLYPH_FORMAT_BITMAP   &&
diff --git a/src/base/ftcalc.c b/src/base/ftcalc.c
index f4ff45f..c96d5d2 100644
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -1,35 +1,35 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcalc.c                                                               */
-/*                                                                         */
-/*    Arithmetic computations (body).                                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcalc.c
+ *
+ *   Arithmetic computations (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Support for 1-complement arithmetic has been totally dropped in this  */
-  /* release.  You can still write your own code if you need it.           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Support for 1-complement arithmetic has been totally dropped in this
+   * release.  You can still write your own code if you need it.
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Implementing basic computation routines.                              */
-  /*                                                                       */
-  /* FT_MulDiv(), FT_MulFix(), FT_DivFix(), FT_RoundFix(), FT_CeilFix(),   */
-  /* and FT_FloorFix() are declared in freetype.h.                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Implementing basic computation routines.
+   *
+   * FT_MulDiv(), FT_MulFix(), FT_DivFix(), FT_RoundFix(), FT_CeilFix(),
+   * and FT_FloorFix() are declared in freetype.h.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -58,12 +58,12 @@
 #endif /* !FT_LONG64 */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_calc
 
@@ -516,10 +516,10 @@
 #elif 0
 
     /*
-     *  This code is nonportable.  See comment below.
+     * This code is nonportable.  See comment below.
      *
-     *  However, on a platform where right-shift of a signed quantity fills
-     *  the leftmost bits by copying the sign bit, it might be faster.
+     * However, on a platform where right-shift of a signed quantity fills
+     * the leftmost bits by copying the sign bit, it might be faster.
      */
 
     FT_Long    sa, sb;
@@ -527,22 +527,22 @@
 
 
     /*
-     *  This is a clever way of converting a signed number `a' into its
-     *  absolute value (stored back into `a') and its sign.  The sign is
-     *  stored in `sa'; 0 means `a' was positive or zero, and -1 means `a'
-     *  was negative.  (Similarly for `b' and `sb').
+     * This is a clever way of converting a signed number `a' into its
+     * absolute value (stored back into `a') and its sign.  The sign is
+     * stored in `sa'; 0 means `a' was positive or zero, and -1 means `a'
+     * was negative.  (Similarly for `b' and `sb').
      *
-     *  Unfortunately, it doesn't work (at least not portably).
+     * Unfortunately, it doesn't work (at least not portably).
      *
-     *  It makes the assumption that right-shift on a negative signed value
-     *  fills the leftmost bits by copying the sign bit.  This is wrong.
-     *  According to K&R 2nd ed, section `A7.8 Shift Operators' on page 206,
-     *  the result of right-shift of a negative signed value is
-     *  implementation-defined.  At least one implementation fills the
-     *  leftmost bits with 0s (i.e., it is exactly the same as an unsigned
-     *  right shift).  This means that when `a' is negative, `sa' ends up
-     *  with the value 1 rather than -1.  After that, everything else goes
-     *  wrong.
+     * It makes the assumption that right-shift on a negative signed value
+     * fills the leftmost bits by copying the sign bit.  This is wrong.
+     * According to K&R 2nd ed, section `A7.8 Shift Operators' on page 206,
+     * the result of right-shift of a negative signed value is
+     * implementation-defined.  At least one implementation fills the
+     * leftmost bits with 0s (i.e., it is exactly the same as an unsigned
+     * right shift).  This means that when `a' is negative, `sa' ends up
+     * with the value 1 rather than -1.  After that, everything else goes
+     * wrong.
      */
     sa = ( a_ >> ( sizeof ( a_ ) * 8 - 1 ) );
     a  = ( a_ ^ sa ) - sa;
@@ -747,6 +747,72 @@
 
   /* documentation is in ftcalc.h */
 
+  FT_BASE_DEF( FT_Bool )
+  FT_Matrix_Check( const FT_Matrix*  matrix )
+  {
+    FT_Matrix  m;
+    FT_Fixed   val[4];
+    FT_Fixed   nonzero_minval, maxval;
+    FT_Fixed   temp1, temp2;
+    FT_UInt    i;
+
+
+    if ( !matrix )
+      return 0;
+
+    val[0] = FT_ABS( matrix->xx );
+    val[1] = FT_ABS( matrix->xy );
+    val[2] = FT_ABS( matrix->yx );
+    val[3] = FT_ABS( matrix->yy );
+
+    /*
+     * To avoid overflow, we ensure that each value is not larger than
+     *
+     *   int(sqrt(2^31 / 4)) = 23170  ;
+     *
+     * we also check that no value becomes zero if we have to scale.
+     */
+
+    maxval         = 0;
+    nonzero_minval = FT_LONG_MAX;
+
+    for ( i = 0; i < 4; i++ )
+    {
+      if ( val[i] > maxval )
+        maxval = val[i];
+      if ( val[i] && val[i] < nonzero_minval )
+        nonzero_minval = val[i];
+    }
+
+    if ( maxval > 23170 )
+    {
+      FT_Fixed  scale = FT_DivFix( maxval, 23170 );
+
+
+      if ( !FT_DivFix( nonzero_minval, scale ) )
+        return 0;    /* value range too large */
+
+      m.xx = FT_DivFix( matrix->xx, scale );
+      m.xy = FT_DivFix( matrix->xy, scale );
+      m.yx = FT_DivFix( matrix->yx, scale );
+      m.yy = FT_DivFix( matrix->yy, scale );
+    }
+    else
+      m = *matrix;
+
+    temp1 = FT_ABS( m.xx * m.yy - m.xy * m.yx );
+    temp2 = m.xx * m.xx + m.xy * m.xy + m.yx * m.yx + m.yy * m.yy;
+
+    if ( temp1 == 0         ||
+         temp2 / temp1 > 50 )
+      return 0;
+
+    return 1;
+  }
+
+
+  /* documentation is in ftcalc.h */
+
   FT_BASE_DEF( void )
   FT_Vector_Transform_Scaled( FT_Vector*        vector,
                               const FT_Matrix*  matrix,
diff --git a/src/base/ftcid.c b/src/base/ftcid.c
index f518464..944e3e4 100644
--- a/src/base/ftcid.c
+++ b/src/base/ftcid.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcid.c                                                                */
-/*                                                                         */
-/*    FreeType API for accessing CID font information.                     */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Derek Clegg and Michael Toftdal.                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcid.c
+ *
+ *   FreeType API for accessing CID font information.
+ *
+ * Copyright 2007-2018 by
+ * Derek Clegg and Michael Toftdal.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/ftcolor.c b/src/base/ftcolor.c
new file mode 100644
index 0000000..101e53e
--- /dev/null
+++ b/src/base/ftcolor.c
@@ -0,0 +1,157 @@
+/****************************************************************************
+ *
+ * ftcolor.c
+ *
+ *   FreeType's glyph color management (body).
+ *
+ * Copyright 2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
+
+
+#include <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_SFNT_H
+#include FT_INTERNAL_TRUETYPE_TYPES_H
+#include FT_COLOR_H
+
+
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+
+  static
+  const FT_Palette_Data  null_palette_data = { 0, NULL, NULL, 0, NULL };
+
+
+  /* documentation is in ftcolor.h */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Palette_Data_Get( FT_Face           face,
+                       FT_Palette_Data  *apalette_data )
+  {
+    if ( !face )
+      return FT_THROW( Invalid_Face_Handle );
+    if ( !apalette_data)
+      return FT_THROW( Invalid_Argument );
+
+    if ( FT_IS_SFNT( face ) )
+      *apalette_data = ( (TT_Face)face )->palette_data;
+    else
+      *apalette_data = null_palette_data;
+
+    return FT_Err_Ok;
+  }
+
+
+  /* documentation is in ftcolor.h */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Palette_Select( FT_Face     face,
+                     FT_UShort   palette_index,
+                     FT_Color*  *apalette )
+  {
+    FT_Error  error;
+
+    TT_Face       ttface;
+    SFNT_Service  sfnt;
+
+
+    if ( !face )
+      return FT_THROW( Invalid_Face_Handle );
+
+    if ( !FT_IS_SFNT( face ) )
+    {
+      if ( apalette )
+        *apalette = NULL;
+
+      return FT_Err_Ok;
+    }
+
+    ttface = (TT_Face)face;
+    sfnt   = (SFNT_Service)ttface->sfnt;
+
+    error = sfnt->set_palette( ttface, palette_index );
+    if ( error )
+      return error;
+
+    ttface->palette_index = palette_index;
+
+    if ( apalette )
+      *apalette = ttface->palette;
+
+    return FT_Err_Ok;
+  }
+
+
+  /* documentation is in ftcolor.h */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Palette_Set_Foreground_Color( FT_Face   face,
+                                   FT_Color  foreground_color )
+  {
+    TT_Face  ttface;
+
+
+    if ( !face )
+      return FT_THROW( Invalid_Face_Handle );
+
+    if ( !FT_IS_SFNT( face ) )
+      return FT_Err_Ok;
+
+    ttface = (TT_Face)face;
+
+    ttface->foreground_color      = foreground_color;
+    ttface->have_foreground_color = 1;
+
+    return FT_Err_Ok;
+  }
+
+#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Palette_Data_Get( FT_Face           face,
+                       FT_Palette_Data  *apalette_data )
+  {
+    FT_UNUSED( face );
+    FT_UNUSED( apalette_data );
+
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Palette_Select( FT_Face     face,
+                     FT_UShort   palette_index,
+                     FT_Color*  *apalette )
+  {
+    FT_UNUSED( face );
+    FT_UNUSED( palette_index );
+    FT_UNUSED( apalette );
+
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Palette_Set_Foreground_Color( FT_Face   face,
+                                   FT_Color  foreground_color )
+  {
+    FT_UNUSED( face );
+    FT_UNUSED( foreground_color );
+
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
+#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+
+/* END */
diff --git a/src/base/ftdbgmem.c b/src/base/ftdbgmem.c
index c33d8ac..6e0a074 100644
--- a/src/base/ftdbgmem.c
+++ b/src/base/ftdbgmem.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdbgmem.c                                                             */
-/*                                                                         */
-/*    Memory debugger (body).                                              */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdbgmem.c
+ *
+ *   Memory debugger (body).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -50,9 +50,9 @@
 #define FT_MEM_VAL( addr )  ( (FT_PtrDist)(FT_Pointer)( addr ) )
 
   /*
-   *  This structure holds statistics for a single allocation/release
-   *  site.  This is useful to know where memory operations happen the
-   *  most.
+   * This structure holds statistics for a single allocation/release
+   * site.  This is useful to know where memory operations happen the
+   * most.
    */
   typedef struct  FT_MemSourceRec_
   {
@@ -76,17 +76,17 @@
 
 
   /*
-   *  We don't need a resizable array for the memory sources because
-   *  their number is pretty limited within FreeType.
+   * We don't need a resizable array for the memory sources because
+   * their number is pretty limited within FreeType.
    */
 #define FT_MEM_SOURCE_BUCKETS  128
 
   /*
-   *  This structure holds information related to a single allocated
-   *  memory block.  If KEEPALIVE is defined, blocks that are freed by
-   *  FreeType are never released to the system.  Instead, their `size'
-   *  field is set to `-size'.  This is mainly useful to detect double
-   *  frees, at the price of a large memory footprint during execution.
+   * This structure holds information related to a single allocated
+   * memory block.  If KEEPALIVE is defined, blocks that are freed by
+   * FreeType are never released to the system.  Instead, their `size'
+   * field is set to `-size'.  This is mainly useful to detect double
+   * frees, at the price of a large memory footprint during execution.
    */
   typedef struct  FT_MemNodeRec_
   {
@@ -106,8 +106,8 @@
 
 
   /*
-   *  The global structure, containing compound statistics and all hash
-   *  tables.
+   * The global structure, containing compound statistics and all hash
+   * tables.
    */
   typedef struct  FT_MemTableRec_
   {
@@ -146,8 +146,8 @@
 
 
   /*
-   *  Prime numbers are ugly to handle.  It would be better to implement
-   *  L-Hashing, which is 10% faster and doesn't require divisions.
+   * Prime numbers are ugly to handle.  It would be better to implement
+   * L-Hashing, which is 10% faster and doesn't require divisions.
    */
   static const FT_Int  ft_mem_primes[] =
   {
diff --git a/src/base/ftdebug.c b/src/base/ftdebug.c
index fe26309..19b0058 100644
--- a/src/base/ftdebug.c
+++ b/src/base/ftdebug.c
@@ -1,44 +1,44 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdebug.c                                                              */
-/*                                                                         */
-/*    Debugging and logging component (body).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdebug.c
+ *
+ *   Debugging and logging component (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This component contains various macros and functions used to ease the */
-  /* debugging of the FreeType engine.  Its main purpose is in assertion   */
-  /* checking, tracing, and error detection.                               */
-  /*                                                                       */
-  /* There are now three debugging modes:                                  */
-  /*                                                                       */
-  /* - trace mode                                                          */
-  /*                                                                       */
-  /*   Error and trace messages are sent to the log file (which can be the */
-  /*   standard error output).                                             */
-  /*                                                                       */
-  /* - error mode                                                          */
-  /*                                                                       */
-  /*   Only error messages are generated.                                  */
-  /*                                                                       */
-  /* - release mode:                                                       */
-  /*                                                                       */
-  /*   No error message is sent or generated.  The code is free from any   */
-  /*   debugging parts.                                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This component contains various macros and functions used to ease the
+   * debugging of the FreeType engine.  Its main purpose is in assertion
+   * checking, tracing, and error detection.
+   *
+   * There are now three debugging modes:
+   *
+   * - trace mode
+   *
+   *   Error and trace messages are sent to the log file (which can be the
+   *   standard error output).
+   *
+   * - error mode
+   *
+   *   Only error messages are generated.
+   *
+   * - release mode:
+   *
+   *   No error message is sent or generated.  The code is free from any
+   *   debugging parts.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -100,9 +100,16 @@
 
 #ifdef FT_DEBUG_LEVEL_TRACE
 
-  /* array of trace levels, initialized to 0 */
-  int  ft_trace_levels[trace_count];
+  /* array of trace levels, initialized to 0; */
+  /* this gets adjusted at run-time           */
+  static int  ft_trace_levels_enabled[trace_count];
 
+  /* array of trace levels, always initialized to 0 */
+  static int  ft_trace_levels_disabled[trace_count];
+
+  /* a pointer to either `ft_trace_levels_enabled' */
+  /* or `ft_trace_levels_disabled'                 */
+  int*  ft_trace_levels;
 
   /* define array of trace toggle names */
 #define FT_TRACE_DEF( x )  #x ,
@@ -140,24 +147,42 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Initialize the tracing sub-system.  This is done by retrieving the    */
-  /* value of the `FT2_DEBUG' environment variable.  It must be a list of  */
-  /* toggles, separated by spaces, `;', or `,'.  Example:                  */
-  /*                                                                       */
-  /*    export FT2_DEBUG="any:3 memory:7 stream:5"                         */
-  /*                                                                       */
-  /* This requests that all levels be set to 3, except the trace level for */
-  /* the memory and stream components which are set to 7 and 5,            */
-  /* respectively.                                                         */
-  /*                                                                       */
-  /* See the file `include/freetype/internal/fttrace.h' for details of     */
-  /* the available toggle names.                                           */
-  /*                                                                       */
-  /* The level must be between 0 and 7; 0 means quiet (except for serious  */
-  /* runtime errors), and 7 means _very_ verbose.                          */
-  /*                                                                       */
+  /* documentation is in ftdebug.h */
+
+  FT_BASE_DEF( void )
+  FT_Trace_Disable( void )
+  {
+    ft_trace_levels = ft_trace_levels_disabled;
+  }
+
+
+  /* documentation is in ftdebug.h */
+
+  FT_BASE_DEF( void )
+  FT_Trace_Enable( void )
+  {
+    ft_trace_levels = ft_trace_levels_enabled;
+  }
+
+
+  /**************************************************************************
+   *
+   * Initialize the tracing sub-system.  This is done by retrieving the
+   * value of the `FT2_DEBUG' environment variable.  It must be a list of
+   * toggles, separated by spaces, `;', or `,'.  Example:
+   *
+   *   export FT2_DEBUG="any:3 memory:7 stream:5"
+   *
+   * This requests that all levels be set to 3, except the trace level for
+   * the memory and stream components which are set to 7 and 5,
+   * respectively.
+   *
+   * See the file `include/freetype/internal/fttrace.h' for details of
+   * the available toggle names.
+   *
+   * The level must be between 0 and 7; 0 means quiet (except for serious
+   * runtime errors), and 7 means _very_ verbose.
+   */
   FT_BASE_DEF( void )
   ft_debug_init( void )
   {
@@ -223,14 +248,16 @@
             {
               /* special case for `any' */
               for ( n = 0; n < trace_count; n++ )
-                ft_trace_levels[n] = level;
+                ft_trace_levels_enabled[n] = level;
             }
             else
-              ft_trace_levels[found] = level;
+              ft_trace_levels_enabled[found] = level;
           }
         }
       }
     }
+
+    ft_trace_levels = ft_trace_levels_enabled;
   }
 
 
@@ -260,6 +287,22 @@
   }
 
 
+  FT_BASE_DEF( void )
+  FT_Trace_Disable( void )
+  {
+    /* nothing */
+  }
+
+
+  /* documentation is in ftdebug.h */
+
+  FT_BASE_DEF( void )
+  FT_Trace_Enable( void )
+  {
+    /* nothing */
+  }
+
+
 #endif /* !FT_DEBUG_LEVEL_TRACE */
 
 
diff --git a/src/base/ftfntfmt.c b/src/base/ftfntfmt.c
index a2900ce..610b6cf 100644
--- a/src/base/ftfntfmt.c
+++ b/src/base/ftfntfmt.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftfntfmt.c                                                             */
-/*                                                                         */
-/*    FreeType utility file for font formats (body).                       */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftfntfmt.c
+ *
+ *   FreeType utility file for font formats (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/ftfstype.c b/src/base/ftfstype.c
index e6cdf6e..74e9e56 100644
--- a/src/base/ftfstype.c
+++ b/src/base/ftfstype.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftfstype.c                                                             */
-/*                                                                         */
-/*    FreeType utility file to access FSType data (body).                  */
-/*                                                                         */
-/*  Copyright 2008-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftfstype.c
+ *
+ *   FreeType utility file to access FSType data (body).
+ *
+ * Copyright 2008-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #include <ft2build.h>
 #include FT_TYPE1_TABLES_H
diff --git a/src/base/ftgasp.c b/src/base/ftgasp.c
index 4f80bba..15e0ef0 100644
--- a/src/base/ftgasp.c
+++ b/src/base/ftgasp.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgasp.c                                                               */
-/*                                                                         */
-/*    Access of TrueType's `gasp' table (body).                            */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgasp.c
+ *
+ *   Access of TrueType's `gasp' table (body).
+ *
+ * Copyright 2007-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/ftgloadr.c b/src/base/ftgloadr.c
index 4720249..475d5cc 100644
--- a/src/base/ftgloadr.c
+++ b/src/base/ftgloadr.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgloadr.c                                                             */
-/*                                                                         */
-/*    The FreeType glyph loader (body).                                    */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgloadr.c
+ *
+ *   The FreeType glyph loader (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -38,31 +38,31 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The glyph loader is a simple object which is used to load a set of    */
-  /* glyphs easily.  It is critical for the correct loading of composites. */
-  /*                                                                       */
-  /* Ideally, one can see it as a stack of abstract `glyph' objects.       */
-  /*                                                                       */
-  /*   loader.base     Is really the bottom of the stack.  It describes a  */
-  /*                   single glyph image made of the juxtaposition of     */
-  /*                   several glyphs (those `in the stack').              */
-  /*                                                                       */
-  /*   loader.current  Describes the top of the stack, on which a new      */
-  /*                   glyph can be loaded.                                */
-  /*                                                                       */
-  /*   Rewind          Clears the stack.                                   */
-  /*   Prepare         Set up `loader.current' for addition of a new glyph */
-  /*                   image.                                              */
-  /*   Add             Add the `current' glyph image to the `base' one,    */
-  /*                   and prepare for another one.                        */
-  /*                                                                       */
-  /* The glyph loader is now a base object.  Each driver used to           */
-  /* re-implement it in one way or the other, which wasted code and        */
-  /* energy.                                                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * The glyph loader is a simple object which is used to load a set of
+   * glyphs easily.  It is critical for the correct loading of composites.
+   *
+   * Ideally, one can see it as a stack of abstract `glyph' objects.
+   *
+   *   loader.base     Is really the bottom of the stack.  It describes a
+   *                   single glyph image made of the juxtaposition of
+   *                   several glyphs (those `in the stack').
+   *
+   *   loader.current  Describes the top of the stack, on which a new
+   *                   glyph can be loaded.
+   *
+   *   Rewind          Clears the stack.
+   *   Prepare         Set up `loader.current' for addition of a new glyph
+   *                   image.
+   *   Add             Add the `current' glyph image to the `base' one,
+   *                   and prepare for another one.
+   *
+   * The glyph loader is now a base object.  Each driver used to
+   * re-implement it in one way or the other, which wasted code and
+   * energy.
+   *
+   */
 
 
   /* create a new glyph loader */
@@ -99,12 +99,12 @@
   }
 
 
-  /* reset the glyph loader, frees all allocated tables */
-  /* and starts from zero                               */
+  /* reset glyph loader, free all allocated tables, */
+  /* and start from zero                            */
   FT_BASE_DEF( void )
   FT_GlyphLoader_Reset( FT_GlyphLoader  loader )
   {
-    FT_Memory memory = loader->memory;
+    FT_Memory  memory = loader->memory;
 
 
     FT_FREE( loader->base.outline.points );
@@ -129,7 +129,7 @@
   {
     if ( loader )
     {
-      FT_Memory memory = loader->memory;
+      FT_Memory  memory = loader->memory;
 
 
       FT_GlyphLoader_Reset( loader );
diff --git a/src/base/ftglyph.c b/src/base/ftglyph.c
index 6759aa2..8bc86a5 100644
--- a/src/base/ftglyph.c
+++ b/src/base/ftglyph.c
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftglyph.c                                                              */
-/*                                                                         */
-/*    FreeType convenience functions to handle glyphs (body).              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftglyph.c
+ *
+ *   FreeType convenience functions to handle glyphs (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  This file contains the definition of several convenience functions   */
-  /*  that can be used by client applications to easily retrieve glyph     */
-  /*  bitmaps and outlines from a given face.                              */
-  /*                                                                       */
-  /*  These functions should be optional if you are writing a font server  */
-  /*  or text layout engine on top of FreeType.  However, they are pretty  */
-  /*  handy for many other simple uses of the library.                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file contains the definition of several convenience functions
+   * that can be used by client applications to easily retrieve glyph
+   * bitmaps and outlines from a given face.
+   *
+   * These functions should be optional if you are writing a font server
+   * or text layout engine on top of FreeType.  However, they are pretty
+   * handy for many other simple uses of the library.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -36,14 +36,13 @@
 #include FT_BITMAP_H
 #include FT_INTERNAL_OBJECTS_H
 
-#include "basepic.h"
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_glyph
 
@@ -359,37 +358,28 @@
 
   /* documentation is in ftglyph.h */
 
-  FT_EXPORT_DEF( FT_Error )
-  FT_Get_Glyph( FT_GlyphSlot  slot,
-                FT_Glyph     *aglyph )
+  FT_EXPORT( FT_Error )
+  FT_New_Glyph( FT_Library       library,
+                FT_Glyph_Format  format,
+                FT_Glyph        *aglyph )
   {
-    FT_Library  library;
-    FT_Error    error;
-    FT_Glyph    glyph;
-
     const FT_Glyph_Class*  clazz = NULL;
 
-
-    if ( !slot )
-      return FT_THROW( Invalid_Slot_Handle );
-
-    library = slot->library;
-
-    if ( !aglyph )
+    if ( !library || !aglyph )
       return FT_THROW( Invalid_Argument );
 
     /* if it is a bitmap, that's easy :-) */
-    if ( slot->format == FT_GLYPH_FORMAT_BITMAP )
-      clazz = FT_BITMAP_GLYPH_CLASS_GET;
+    if ( format == FT_GLYPH_FORMAT_BITMAP )
+      clazz = &ft_bitmap_glyph_class;
 
     /* if it is an outline */
-    else if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
-      clazz = FT_OUTLINE_GLYPH_CLASS_GET;
+    else if ( format == FT_GLYPH_FORMAT_OUTLINE )
+      clazz = &ft_outline_glyph_class;
 
     else
     {
       /* try to find a renderer that supports the glyph image format */
-      FT_Renderer  render = FT_Lookup_Renderer( library, slot->format, 0 );
+      FT_Renderer  render = FT_Lookup_Renderer( library, format, 0 );
 
 
       if ( render )
@@ -397,13 +387,31 @@
     }
 
     if ( !clazz )
-    {
-      error = FT_THROW( Invalid_Glyph_Format );
-      goto Exit;
-    }
+      return FT_THROW( Invalid_Glyph_Format );
 
     /* create FT_Glyph object */
-    error = ft_new_glyph( library, clazz, &glyph );
+    return ft_new_glyph( library, clazz, aglyph );
+  }
+
+
+  /* documentation is in ftglyph.h */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Get_Glyph( FT_GlyphSlot  slot,
+                FT_Glyph     *aglyph )
+  {
+    FT_Error    error;
+    FT_Glyph    glyph;
+
+
+    if ( !slot )
+      return FT_THROW( Invalid_Slot_Handle );
+
+    if ( !aglyph )
+      return FT_THROW( Invalid_Argument );
+
+    /* create FT_Glyph object */
+    error = FT_New_Glyph( slot->library, slot->format, &glyph );
     if ( error )
       goto Exit;
 
@@ -427,7 +435,7 @@
     glyph->advance.y = slot->advance.y * 1024;
 
     /* now import the image from the glyph slot */
-    error = clazz->glyph_init( glyph, slot );
+    error = glyph->clazz->glyph_init( glyph, slot );
 
   Exit2:
     /* if an error occurred, destroy the glyph */
@@ -536,7 +544,6 @@
     FT_BitmapGlyph            bitmap = NULL;
     const FT_Glyph_Class*     clazz;
 
-    /* FT_BITMAP_GLYPH_CLASS_GET dereferences `library' in PIC mode */
     FT_Library                library;
 
 
@@ -553,7 +560,7 @@
       goto Bad;
 
     /* when called with a bitmap glyph, do nothing and return successfully */
-    if ( clazz == FT_BITMAP_GLYPH_CLASS_GET )
+    if ( clazz == &ft_bitmap_glyph_class )
       goto Exit;
 
     if ( !clazz->glyph_prepare )
@@ -569,7 +576,7 @@
     dummy.format   = clazz->glyph_format;
 
     /* create result bitmap glyph */
-    error = ft_new_glyph( library, FT_BITMAP_GLYPH_CLASS_GET, &b );
+    error = ft_new_glyph( library, &ft_bitmap_glyph_class, &b );
     if ( error )
       goto Exit;
     bitmap = (FT_BitmapGlyph)b;
diff --git a/src/base/ftgxval.c b/src/base/ftgxval.c
index 19e2d6a..f3961e2 100644
--- a/src/base/ftgxval.c
+++ b/src/base/ftgxval.c
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgxval.c                                                              */
-/*                                                                         */
-/*    FreeType API for validating TrueTypeGX/AAT tables (body).            */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  Masatake YAMATO, Redhat K.K,                                           */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgxval.c
+ *
+ *   FreeType API for validating TrueTypeGX/AAT tables (body).
+ *
+ * Copyright 2004-2018 by
+ * Masatake YAMATO, Redhat K.K,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/fthash.c b/src/base/fthash.c
index 21bc8dd..387e6d2 100644
--- a/src/base/fthash.c
+++ b/src/base/fthash.c
@@ -1,10 +1,10 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fthash.c                                                               */
-/*                                                                         */
-/*    Hashing functions (body).                                            */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fthash.c
+ *
+ *   Hashing functions (body).
+ *
+ */
 
 /*
  * Copyright 2000 Computing Research Labs, New Mexico State University
@@ -30,13 +30,13 @@
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  This file is based on code from bdf.c,v 1.22 2000/03/16 20:08:50     */
-  /*                                                                       */
-  /*  taken from Mark Leisher's xmbdfed package                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is based on code from bdf.c,v 1.22 2000/03/16 20:08:50
+   *
+   * taken from Mark Leisher's xmbdfed package
+   *
+   */
 
 
 #include <ft2build.h>
diff --git a/src/base/ftinit.c b/src/base/ftinit.c
index 1fa4721..e0f2ccd 100644
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftinit.c                                                               */
-/*                                                                         */
-/*    FreeType initialization layer (body).                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftinit.c
+ *
+ *   FreeType initialization layer (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  The purpose of this file is to implement the following two           */
-  /*  functions:                                                           */
-  /*                                                                       */
-  /*  FT_Add_Default_Modules():                                            */
-  /*     This function is used to add the set of default modules to a      */
-  /*     fresh new library object.  The set is taken from the header file  */
-  /*     `freetype/config/ftmodule.h'.  See the document `FreeType 2.0     */
-  /*     Build System' for more information.                               */
-  /*                                                                       */
-  /*  FT_Init_FreeType():                                                  */
-  /*     This function creates a system object for the current platform,   */
-  /*     builds a library out of it, then calls FT_Default_Drivers().      */
-  /*                                                                       */
-  /*  Note that even if FT_Init_FreeType() uses the implementation of the  */
-  /*  system object defined at build time, client applications are still   */
-  /*  able to provide their own `ftsystem.c'.                              */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * The purpose of this file is to implement the following two
+   * functions:
+   *
+   * FT_Add_Default_Modules():
+   *   This function is used to add the set of default modules to a
+   *   fresh new library object.  The set is taken from the header file
+   *   `freetype/config/ftmodule.h'.  See the document `FreeType 2.0
+   *   Build System' for more information.
+   *
+   * FT_Init_FreeType():
+   *   This function creates a system object for the current platform,
+   *   builds a library out of it, then calls FT_Default_Drivers().
+   *
+   * Note that even if FT_Init_FreeType() uses the implementation of the
+   * system object defined at build time, client applications are still
+   * able to provide their own `ftsystem.c'.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -42,22 +42,18 @@
 #include FT_INTERNAL_OBJECTS_H
 #include FT_INTERNAL_DEBUG_H
 #include FT_MODULE_H
-#include "basepic.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_init
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
-
 #undef  FT_USE_MODULE
 #ifdef __cplusplus
 #define FT_USE_MODULE( type, x )  extern "C" const type  x;
@@ -78,120 +74,6 @@
   };
 
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-
-#ifdef __cplusplus
-#define FT_EXTERNC  extern "C"
-#else
-#define FT_EXTERNC  extern
-#endif
-
-  /* declare the module's class creation/destruction functions */
-#undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )                            \
-  FT_EXTERNC FT_Error                                       \
-  FT_Create_Class_ ## x( FT_Library         library,        \
-                         FT_Module_Class*  *output_class ); \
-  FT_EXTERNC void                                           \
-  FT_Destroy_Class_ ## x( FT_Library        library,        \
-                          FT_Module_Class*  clazz );
-
-#include FT_CONFIG_MODULES_H
-
-  /* count all module classes */
-#undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )  MODULE_CLASS_ ## x,
-
-  enum
-  {
-#include FT_CONFIG_MODULES_H
-    FT_NUM_MODULE_CLASSES
-  };
-
-  /* destroy all module classes */
-#undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )                   \
-  if ( classes[i] )                                \
-  {                                                \
-    FT_Destroy_Class_ ## x( library, classes[i] ); \
-  }                                                \
-  i++;
-
-
-  FT_BASE_DEF( void )
-  ft_destroy_default_module_classes( FT_Library  library )
-  {
-    FT_Module_Class*  *classes;
-    FT_Memory          memory;
-    FT_UInt            i;
-    BasePIC*           pic_container = (BasePIC*)library->pic_container.base;
-
-
-    if ( !pic_container->default_module_classes )
-      return;
-
-    memory  = library->memory;
-    classes = pic_container->default_module_classes;
-    i       = 0;
-
-#include FT_CONFIG_MODULES_H
-
-    FT_FREE( classes );
-    pic_container->default_module_classes = NULL;
-  }
-
-
-  /* initialize all module classes and the pointer table */
-#undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )                     \
-  error = FT_Create_Class_ ## x( library, &clazz );  \
-  if ( error )                                       \
-    goto Exit;                                       \
-  classes[i++] = clazz;
-
-
-  FT_BASE_DEF( FT_Error )
-  ft_create_default_module_classes( FT_Library  library )
-  {
-    FT_Error           error;
-    FT_Memory          memory;
-    FT_Module_Class*  *classes = NULL;
-    FT_Module_Class*   clazz;
-    FT_UInt            i;
-    BasePIC*           pic_container = (BasePIC*)library->pic_container.base;
-
-
-    memory = library->memory;
-
-    pic_container->default_module_classes = NULL;
-
-    if ( FT_ALLOC( classes, sizeof ( FT_Module_Class* ) *
-                              ( FT_NUM_MODULE_CLASSES + 1 ) ) )
-      return error;
-
-    /* initialize all pointers to 0, especially the last one */
-    for ( i = 0; i < FT_NUM_MODULE_CLASSES; i++ )
-      classes[i] = NULL;
-    classes[FT_NUM_MODULE_CLASSES] = NULL;
-
-    i = 0;
-
-#include FT_CONFIG_MODULES_H
-
-  Exit:
-    if ( error )
-      ft_destroy_default_module_classes( library );
-    else
-      pic_container->default_module_classes = classes;
-
-    return error;
-  }
-
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
   /* documentation is in ftmodapi.h */
 
   FT_EXPORT_DEF( void )
@@ -201,16 +83,10 @@
     const FT_Module_Class* const*  cur;
 
 
-    /* FT_DEFAULT_MODULES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    if ( !library )
-      return;
-#endif
-
     /* GCC 4.6 warns the type difference:
      *   FT_Module_Class** != const FT_Module_Class* const*
      */
-    cur = (const FT_Module_Class* const*)FT_DEFAULT_MODULES_GET;
+    cur = (const FT_Module_Class* const*)ft_default_modules;
 
     /* test for valid `library' delayed to FT_Add_Module() */
     while ( *cur )
diff --git a/src/base/ftlcdfil.c b/src/base/ftlcdfil.c
index 5c38911..65eff93 100644
--- a/src/base/ftlcdfil.c
+++ b/src/base/ftlcdfil.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftlcdfil.c                                                             */
-/*                                                                         */
-/*    FreeType API for color filtering of subpixel bitmap glyphs (body).   */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftlcdfil.c
+ *
+ *   FreeType API for color filtering of subpixel bitmap glyphs (body).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -34,9 +34,9 @@
 
   /* add padding according to filter weights */
   FT_BASE_DEF (void)
-  ft_lcd_padding( FT_Pos*       Min,
-                  FT_Pos*       Max,
-                  FT_GlyphSlot  slot )
+  ft_lcd_padding( FT_BBox*        cbox,
+                  FT_GlyphSlot    slot,
+                  FT_Render_Mode  mode )
   {
     FT_Byte*                 lcd_weights;
     FT_Bitmap_LcdFilterFunc  lcd_filter_func;
@@ -56,10 +56,20 @@
 
     if ( lcd_filter_func == ft_lcd_filter_fir )
     {
-      *Min -= lcd_weights[0] ? 43 :
-              lcd_weights[1] ? 22 : 0;
-      *Max += lcd_weights[4] ? 43 :
-              lcd_weights[3] ? 22 : 0;
+      if ( mode == FT_RENDER_MODE_LCD )
+      {
+        cbox->xMin -= lcd_weights[0] ? 43 :
+                      lcd_weights[1] ? 22 : 0;
+        cbox->xMax += lcd_weights[4] ? 43 :
+                      lcd_weights[3] ? 22 : 0;
+      }
+      else if ( mode == FT_RENDER_MODE_LCD_V )
+      {
+        cbox->yMin -= lcd_weights[0] ? 43 :
+                      lcd_weights[1] ? 22 : 0;
+        cbox->yMax += lcd_weights[4] ? 43 :
+                      lcd_weights[3] ? 22 : 0;
+      }
     }
   }
 
@@ -77,7 +87,7 @@
 
 
     /* take care of bitmap flow */
-    if ( pitch > 0 )
+    if ( pitch > 0 && height > 0 )
       origin += pitch * (FT_Int)( height - 1 );
 
     /* horizontal in-place FIR filter */
@@ -192,7 +202,7 @@
 
 
     /* take care of bitmap flow */
-    if ( pitch > 0 )
+    if ( pitch > 0 && height > 0 )
       origin += pitch * (FT_Int)( height - 1 );
 
     /* horizontal in-place intra-pixel filter */
@@ -275,6 +285,8 @@
 #endif /* USE_LEGACY */
 
 
+  /* documentation in ftlcdfil.h */
+
   FT_EXPORT_DEF( FT_Error )
   FT_Library_SetLcdFilterWeights( FT_Library      library,
                                   unsigned char  *weights )
@@ -292,6 +304,8 @@
   }
 
 
+  /* documentation in ftlcdfil.h */
+
   FT_EXPORT_DEF( FT_Error )
   FT_Library_SetLcdFilter( FT_Library    library,
                            FT_LcdFilter  filter )
@@ -341,18 +355,41 @@
     return FT_Err_Ok;
   }
 
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Library_SetLcdGeometry( FT_Library  library,
+                             FT_Vector*  sub )
+  {
+    FT_UNUSED( library );
+    FT_UNUSED( sub );
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
 #else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
-  /* add padding according to accommodate outline shifts */
+  /* add padding to accommodate outline shifts */
   FT_BASE_DEF (void)
-  ft_lcd_padding( FT_Pos*       Min,
-                  FT_Pos*       Max,
-                  FT_GlyphSlot  slot )
+  ft_lcd_padding( FT_BBox*        cbox,
+                  FT_GlyphSlot    slot,
+                  FT_Render_Mode  mode )
   {
-    FT_UNUSED( slot );
+    FT_Vector*  sub = slot->library->lcd_geometry;
 
-    *Min -= 21;
-    *Max += 21;
+    if ( mode == FT_RENDER_MODE_LCD )
+    {
+      cbox->xMin -= FT_MAX( FT_MAX( sub[0].x, sub[1].x ), sub[2].x );
+      cbox->xMax -= FT_MIN( FT_MIN( sub[0].x, sub[1].x ), sub[2].x );
+      cbox->yMin -= FT_MAX( FT_MAX( sub[0].y, sub[1].y ), sub[2].y );
+      cbox->yMax -= FT_MIN( FT_MIN( sub[0].y, sub[1].y ), sub[2].y );
+    }
+    else if ( mode == FT_RENDER_MODE_LCD_V )
+    {
+      cbox->xMin -= FT_MAX( FT_MAX( sub[0].y, sub[1].y ), sub[2].y );
+      cbox->xMax -= FT_MIN( FT_MIN( sub[0].y, sub[1].y ), sub[2].y );
+      cbox->yMin += FT_MIN( FT_MIN( sub[0].x, sub[1].x ), sub[2].x );
+      cbox->yMax += FT_MAX( FT_MAX( sub[0].x, sub[1].x ), sub[2].x );
+    }
   }
 
 
@@ -377,6 +414,24 @@
     return FT_THROW( Unimplemented_Feature );
   }
 
+
+  /* documentation in ftlcdfil.h */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Library_SetLcdGeometry( FT_Library  library,
+                             FT_Vector   sub[3] )
+  {
+    if ( !library )
+      return FT_THROW( Invalid_Library_Handle );
+
+    if ( !sub )
+      return FT_THROW( Invalid_Argument );
+
+    ft_memcpy( library->lcd_geometry, sub, 3 * sizeof( FT_Vector ) );
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
 #endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
 
diff --git a/src/base/ftmac.c b/src/base/ftmac.c
index fd4c0cc..79e3fe4 100644
--- a/src/base/ftmac.c
+++ b/src/base/ftmac.c
@@ -1,23 +1,23 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmac.c                                                                */
-/*                                                                         */
-/*    Mac FOND support.  Written by just@letterror.com.                    */
-/*  Heavily modified by mpsuzuki, George Williams, and Sean McBride.       */
-/*                                                                         */
-/*  This file is for Mac OS X only; see builds/mac/ftoldmac.c for          */
-/*  classic platforms built by MPW.                                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.     */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmac.c
+ *
+ *   Mac FOND support.  Written by just@letterror.com.
+ * Heavily modified by mpsuzuki, George Williams, and Sean McBride.
+ *
+ * This file is for Mac OS X only; see builds/mac/ftoldmac.c for
+ * classic platforms built by MPW.
+ *
+ * Copyright 1996-2018 by
+ * Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /*
@@ -954,17 +954,17 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This is the Mac-specific implementation of FT_New_Face.  In        */
-  /*    addition to the standard FT_New_Face() functionality, it also      */
-  /*    accepts pathnames to Mac suitcase files.  For further              */
-  /*    documentation see the original FT_New_Face() in freetype.h.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   FT_New_Face
+   *
+   * @Description:
+   *   This is the Mac-specific implementation of FT_New_Face.  In
+   *   addition to the standard FT_New_Face() functionality, it also
+   *   accepts pathnames to Mac suitcase files.  For further
+   *   documentation see the original FT_New_Face() in freetype.h.
+   */
   FT_EXPORT_DEF( FT_Error )
   FT_New_Face( FT_Library   library,
                const char*  pathname,
@@ -995,17 +995,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face_From_FSRef                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FT_New_Face_From_FSRef is identical to FT_New_Face except it       */
-  /*    accepts an FSRef instead of a path.                                */
-  /*                                                                       */
-  /* This function is deprecated because Carbon data types (FSRef)         */
-  /* are not cross-platform, and thus not suitable for the FreeType API.   */
+  /**************************************************************************
+   *
+   * @Function:
+   *   FT_New_Face_From_FSRef
+   *
+   * @Description:
+   *   FT_New_Face_From_FSRef is identical to FT_New_Face except it
+   *   accepts an FSRef instead of a path.
+   *
+   * This function is deprecated because Carbon data types (FSRef)
+   * are not cross-platform, and thus not suitable for the FreeType API.
+   */
   FT_EXPORT_DEF( FT_Error )
   FT_New_Face_From_FSRef( FT_Library    library,
                           const FSRef*  ref,
@@ -1040,16 +1041,17 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face_From_FSSpec                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FT_New_Face_From_FSSpec is identical to FT_New_Face except it      */
-  /*    accepts an FSSpec instead of a path.                               */
-  /*                                                                       */
-  /* This function is deprecated because FSSpec is deprecated in Mac OS X  */
+  /**************************************************************************
+   *
+   * @Function:
+   *   FT_New_Face_From_FSSpec
+   *
+   * @Description:
+   *   FT_New_Face_From_FSSpec is identical to FT_New_Face except it
+   *   accepts an FSSpec instead of a path.
+   *
+   * This function is deprecated because FSSpec is deprecated in Mac OS X
+   */
   FT_EXPORT_DEF( FT_Error )
   FT_New_Face_From_FSSpec( FT_Library     library,
                            const FSSpec*  spec,
diff --git a/src/base/ftmm.c b/src/base/ftmm.c
index 800441b..b0d9d4b 100644
--- a/src/base/ftmm.c
+++ b/src/base/ftmm.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmm.c                                                                 */
-/*                                                                         */
-/*    Multiple Master font support (body).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmm.c
+ *
+ *   Multiple Master font support (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -25,12 +25,12 @@
 #include FT_SERVICE_METRICS_VARIATIONS_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_mm
 
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 8d07e35..2b44405 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftobjs.c                                                               */
-/*                                                                         */
-/*    The FreeType private base classes (body).                            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftobjs.c
+ *
+ *   The FreeType private base classes (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -79,6 +79,18 @@
 #pragma warning( pop )
 #endif
 
+  static const char* const  pixel_modes[] =
+  {
+    "none",
+    "monochrome bitmap",
+    "gray 8-bit bitmap",
+    "gray 2-bit bitmap",
+    "gray 4-bit bitmap",
+    "LCD 8-bit bitmap",
+    "vertical LCD 8-bit bitmap",
+    "BGRA 32-bit color image bitmap"
+  };
+
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
 
@@ -259,12 +271,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_objs
 
@@ -374,41 +386,35 @@
       /* unless the rounded box can collapse for a narrow glyph */
       if ( cbox.xMax - cbox.xMin < 64 )
       {
-        cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
-        cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
+        cbox.xMin = ( cbox.xMin + cbox.xMax ) / 2 - 32;
+        cbox.xMax = cbox.xMin + 64;
       }
-      else
-      {
-        cbox.xMin = FT_PIX_ROUND_LONG( cbox.xMin );
-        cbox.xMax = FT_PIX_ROUND_LONG( cbox.xMax );
-      }
+
+      cbox.xMin = FT_PIX_ROUND_LONG( cbox.xMin );
+      cbox.xMax = FT_PIX_ROUND_LONG( cbox.xMax );
 
       if ( cbox.yMax - cbox.yMin < 64 )
       {
-        cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
-        cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
+        cbox.yMin = ( cbox.yMin + cbox.yMax ) / 2 - 32;
+        cbox.yMax = cbox.yMin + 64;
       }
-      else
-      {
-        cbox.yMin = FT_PIX_ROUND_LONG( cbox.yMin );
-        cbox.yMax = FT_PIX_ROUND_LONG( cbox.yMax );
-      }
-#else
-      cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
-      cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
-      cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
-      cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
-#endif
+
+      cbox.yMin = FT_PIX_ROUND_LONG( cbox.yMin );
+      cbox.yMax = FT_PIX_ROUND_LONG( cbox.yMax );
+
       break;
+#else
+      goto Round;
+#endif
 
     case FT_RENDER_MODE_LCD:
       pixel_mode = FT_PIXEL_MODE_LCD;
-      ft_lcd_padding( &cbox.xMin, &cbox.xMax, slot );
+      ft_lcd_padding( &cbox, slot, mode );
       goto Round;
 
     case FT_RENDER_MODE_LCD_V:
       pixel_mode = FT_PIXEL_MODE_LCD_V;
-      ft_lcd_padding( &cbox.yMin, &cbox.yMax, slot );
+      ft_lcd_padding( &cbox, slot, mode );
       goto Round;
 
     case FT_RENDER_MODE_NORMAL:
@@ -995,6 +1001,9 @@
       }
     }
 
+    slot->glyph_index          = glyph_index;
+    slot->internal->load_flags = load_flags;
+
     /* do we need to render the image or preset the bitmap now? */
     if ( !error                                    &&
          ( load_flags & FT_LOAD_NO_SCALE ) == 0    &&
@@ -1014,17 +1023,21 @@
         ft_glyphslot_preset_bitmap( slot, mode, NULL );
     }
 
-    FT_TRACE5(( "FT_Load_Glyph: index %d, flags %x\n",
-                glyph_index, load_flags               ));
+#ifdef FT_DEBUG_LEVEL_TRACE
+    FT_TRACE5(( "FT_Load_Glyph: index %d, flags 0x%x\n",
+                glyph_index, load_flags ));
     FT_TRACE5(( "  x advance: %f\n", slot->advance.x / 64.0 ));
     FT_TRACE5(( "  y advance: %f\n", slot->advance.y / 64.0 ));
     FT_TRACE5(( "  linear x advance: %f\n",
                 slot->linearHoriAdvance / 65536.0 ));
     FT_TRACE5(( "  linear y advance: %f\n",
                 slot->linearVertAdvance / 65536.0 ));
-    FT_TRACE5(( "  bitmap %dx%d, mode %d\n",
-                slot->bitmap.width, slot->bitmap.rows,
-                slot->bitmap.pixel_mode               ));
+    FT_TRACE5(( "  bitmap %dx%d, %s (mode %d)\n",
+                slot->bitmap.width,
+                slot->bitmap.rows,
+                pixel_modes[slot->bitmap.pixel_mode],
+                slot->bitmap.pixel_mode ));
+#endif
 
   Exit:
     return error;
@@ -1162,20 +1175,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    find_unicode_charmap                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function finds a Unicode charmap, if there is one.            */
-  /*    And if there is more than one, it tries to favour the more         */
-  /*    extensive one, i.e., one that supports UCS-4 against those which   */
-  /*    are limited to the BMP (said UCS-2 encoding.)                      */
-  /*                                                                       */
-  /*    This function is called from open_face() (just below), and also    */
-  /*    from FT_Select_Charmap( ..., FT_ENCODING_UNICODE ).                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   find_unicode_charmap
+   *
+   * @Description:
+   *   This function finds a Unicode charmap, if there is one.
+   *   And if there is more than one, it tries to favour the more
+   *   extensive one, i.e., one that supports UCS-4 against those which
+   *   are limited to the BMP (said UCS-2 encoding.)
+   *
+   *   This function is called from open_face() (just below), and also
+   *   from FT_Select_Charmap( ..., FT_ENCODING_UNICODE ).
+   */
   static FT_Error
   find_unicode_charmap( FT_Face  face )
   {
@@ -1192,26 +1205,26 @@
       return FT_THROW( Invalid_CharMap_Handle );
 
     /*
-     *  The original TrueType specification(s) only specified charmap
-     *  formats that are capable of mapping 8 or 16 bit character codes to
-     *  glyph indices.
+     * The original TrueType specification(s) only specified charmap
+     * formats that are capable of mapping 8 or 16 bit character codes to
+     * glyph indices.
      *
-     *  However, recent updates to the Apple and OpenType specifications
-     *  introduced new formats that are capable of mapping 32-bit character
-     *  codes as well.  And these are already used on some fonts, mainly to
-     *  map non-BMP Asian ideographs as defined in Unicode.
+     * However, recent updates to the Apple and OpenType specifications
+     * introduced new formats that are capable of mapping 32-bit character
+     * codes as well.  And these are already used on some fonts, mainly to
+     * map non-BMP Asian ideographs as defined in Unicode.
      *
-     *  For compatibility purposes, these fonts generally come with
-     *  *several* Unicode charmaps:
+     * For compatibility purposes, these fonts generally come with
+     * *several* Unicode charmaps:
      *
-     *   - One of them in the "old" 16-bit format, that cannot access
-     *     all glyphs in the font.
+     * - One of them in the "old" 16-bit format, that cannot access
+     *   all glyphs in the font.
      *
-     *   - Another one in the "new" 32-bit format, that can access all
-     *     the glyphs.
+     * - Another one in the "new" 32-bit format, that can access all
+     *   the glyphs.
      *
-     *  This function has been written to always favor a 32-bit charmap
-     *  when found.  Otherwise, a 16-bit one is returned when found.
+     * This function has been written to always favor a 32-bit charmap
+     * when found.  Otherwise, a 16-bit one is returned when found.
      */
 
     /* Since the `interesting' table, with IDs (3,10), is normally the */
@@ -1255,15 +1268,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    find_variant_selector_charmap                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function finds the variant selector charmap, if there is one. */
-  /*    There can only be one (platform=0, specific=5, format=14).         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   find_variant_selector_charmap
+   *
+   * @Description:
+   *   This function finds the variant selector charmap, if there is one.
+   *   There can only be one (platform=0, specific=5, format=14).
+   */
   static FT_CharMap
   find_variant_selector_charmap( FT_Face  face )
   {
@@ -1294,14 +1307,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    open_face                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function does some work for FT_Open_Face().                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   open_face
+   *
+   * @Description:
+   *   This function does some work for FT_Open_Face().
+   */
   static FT_Error
   open_face( FT_Driver      driver,
              FT_Stream      *astream,
@@ -2182,7 +2195,7 @@
     FT_Error   error  = FT_ERR( Unknown_File_Format );
     FT_UInt    i;
 
-    char *     file_names[FT_RACCESS_N_RULES];
+    char*      file_names[FT_RACCESS_N_RULES];
     FT_Long    offsets[FT_RACCESS_N_RULES];
     FT_Error   errors[FT_RACCESS_N_RULES];
     FT_Bool    is_darwin_vfs, vfs_rfork_has_no_font = FALSE; /* not tested */
@@ -3464,7 +3477,8 @@
     if ( !face )
       return FT_THROW( Invalid_Face_Handle );
 
-    if ( encoding == FT_ENCODING_NONE )
+    /* FT_ENCODING_NONE is a valid encoding for BDF, PCF, and Windows FNT */
+    if ( encoding == FT_ENCODING_NONE && !face->num_charmaps )
       return FT_THROW( Invalid_Argument );
 
     /* FT_ENCODING_UNICODE is special.  We try to find the `best' Unicode */
@@ -3485,7 +3499,7 @@
       if ( cur[0]->encoding == encoding )
       {
         face->charmap = cur[0];
-        return 0;
+        return FT_Err_Ok;
       }
     }
 
@@ -3510,14 +3524,12 @@
     if ( !cur || !charmap )
       return FT_THROW( Invalid_CharMap_Handle );
 
-    if ( FT_Get_CMap_Format( charmap ) == 14 )
-      return FT_THROW( Invalid_Argument );
-
     limit = cur + face->num_charmaps;
 
     for ( ; cur < limit; cur++ )
     {
-      if ( cur[0] == charmap )
+      if ( cur[0] == charmap                    &&
+           FT_Get_CMap_Format ( charmap ) != 14 )
       {
         face->charmap = cur[0];
         return FT_Err_Ok;
@@ -4487,16 +4499,89 @@
                             FT_Render_Mode  render_mode )
   {
     FT_Error     error = FT_Err_Ok;
+    FT_Face      face  = slot->face;
     FT_Renderer  renderer;
 
 
-    /* if it is already a bitmap, no need to do anything */
     switch ( slot->format )
     {
     case FT_GLYPH_FORMAT_BITMAP:   /* already a bitmap, don't do anything */
       break;
 
     default:
+      if ( slot->internal->load_flags & FT_LOAD_COLOR )
+      {
+        FT_LayerIterator  iterator;
+
+        FT_UInt  base_glyph = slot->glyph_index;
+
+        FT_Bool  have_layers;
+        FT_UInt  glyph_index;
+        FT_UInt  color_index;
+
+
+        /* check whether we have colored glyph layers */
+        iterator.p  = NULL;
+        have_layers = FT_Get_Color_Glyph_Layer( face,
+                                                base_glyph,
+                                                &glyph_index,
+                                                &color_index,
+                                                &iterator );
+        if ( have_layers )
+        {
+          error = FT_New_GlyphSlot( face, NULL );
+          if ( !error )
+          {
+            TT_Face       ttface = (TT_Face)face;
+            SFNT_Service  sfnt   = (SFNT_Service)ttface->sfnt;
+
+
+            do
+            {
+              FT_Int32  load_flags = slot->internal->load_flags;
+
+
+              /* disable the `FT_LOAD_COLOR' flag to avoid recursion */
+              /* right here in this function                         */
+              load_flags &= ~FT_LOAD_COLOR;
+
+              /* render into the new `face->glyph' glyph slot */
+              load_flags |= FT_LOAD_RENDER;
+
+              error = FT_Load_Glyph( face, glyph_index, load_flags );
+              if ( error )
+                break;
+
+              /* blend new `face->glyph' into old `slot'; */
+              /* at the first call, `slot' is still empty */
+              error = sfnt->colr_blend( ttface,
+                                        color_index,
+                                        slot,
+                                        face->glyph );
+              if ( error )
+                break;
+
+            } while ( FT_Get_Color_Glyph_Layer( face,
+                                                base_glyph,
+                                                &glyph_index,
+                                                &color_index,
+                                                &iterator ) );
+
+            if ( !error )
+              slot->format = FT_GLYPH_FORMAT_BITMAP;
+
+            /* this call also restores `slot' as the glyph slot */
+            FT_Done_GlyphSlot( face->glyph );
+          }
+
+          if ( !error )
+            return error;
+
+          /* Failed to do the colored layer.  Draw outline instead. */
+          slot->format = FT_GLYPH_FORMAT_OUTLINE;
+        }
+      }
+
       {
         FT_ListNode  node = NULL;
 
@@ -4532,7 +4617,7 @@
 #ifdef FT_DEBUG_LEVEL_TRACE
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_bitmap
+#define FT_COMPONENT  trace_checksum
 
     /*
      * Computing the MD5 checksum is expensive, unnecessarily distorting a
@@ -4542,9 +4627,9 @@
      */
 
     /* we use FT_TRACE3 in this block */
-    if ( !error                             &&
-         ft_trace_levels[trace_bitmap] >= 3 &&
-         slot->bitmap.buffer                )
+    if ( !error                               &&
+         ft_trace_levels[trace_checksum] >= 3 &&
+         slot->bitmap.buffer                  )
     {
       FT_Bitmap  bitmap;
       FT_Error   err;
@@ -4565,8 +4650,11 @@
         int            pitch = bitmap.pitch;
 
 
-        FT_TRACE3(( "FT_Render_Glyph: bitmap %dx%d, mode %d\n",
-                    rows, pitch, slot->bitmap.pixel_mode ));
+        FT_TRACE3(( "FT_Render_Glyph: bitmap %dx%d, %s (mode %d)\n",
+                    pitch,
+                    rows,
+                    pixel_modes[slot->bitmap.pixel_mode],
+                    slot->bitmap.pixel_mode ));
 
         for ( i = 0; i < rows; i++ )
           for ( j = 0; j < pitch; j++ )
@@ -4594,45 +4682,52 @@
      */
 
     /* we use FT_TRACE7 in this block */
-    if ( !error                             &&
-         ft_trace_levels[trace_bitmap] >= 7 &&
-         slot->bitmap.rows  < 128U          &&
-         slot->bitmap.width < 128U          &&
-         slot->bitmap.buffer                )
+    if ( !error                               &&
+         ft_trace_levels[trace_checksum] >= 7 )
     {
-      int  rows  = (int)slot->bitmap.rows;
-      int  width = (int)slot->bitmap.width;
-      int  pitch =      slot->bitmap.pitch;
-      int  i, j, m;
-      unsigned char*  topleft = slot->bitmap.buffer;
-
-      if ( pitch < 0 )
-        topleft -= pitch * ( rows - 1 );
-
-      FT_TRACE7(( "Netpbm image: start\n" ));
-      switch ( slot->bitmap.pixel_mode )
+      if ( slot->bitmap.rows  < 128U &&
+           slot->bitmap.width < 128U &&
+           slot->bitmap.buffer       )
       {
-      case FT_PIXEL_MODE_MONO:
-        FT_TRACE7(( "P1 %d %d\n", width, rows ));
-        for ( i = 0; i < rows; i++ )
-        {
-          for ( j = 0; j < width; )
-            for ( m = 128; m > 0 && j < width; m >>= 1, j++ )
-              FT_TRACE7(( " %d", ( topleft[i * pitch + j / 8] & m ) != 0 ));
-          FT_TRACE7(( "\n" ));
-        }
-        break;
+        int  rows  = (int)slot->bitmap.rows;
+        int  width = (int)slot->bitmap.width;
+        int  pitch =      slot->bitmap.pitch;
+        int  i, j, m;
 
-      default:
-        FT_TRACE7(( "P2 %d %d 255\n", width, rows ));
-        for ( i = 0; i < rows; i++ )
+        unsigned char*  topleft = slot->bitmap.buffer;
+
+
+        if ( pitch < 0 )
+          topleft -= pitch * ( rows - 1 );
+
+        FT_TRACE7(( "Netpbm image: start\n" ));
+        switch ( slot->bitmap.pixel_mode )
         {
-          for ( j = 0; j < width; j += 1 )
-            FT_TRACE7(( " %3u", topleft[i * pitch + j] ));
-          FT_TRACE7(( "\n" ));
+        case FT_PIXEL_MODE_MONO:
+          FT_TRACE7(( "P1 %d %d\n", width, rows ));
+          for ( i = 0; i < rows; i++ )
+          {
+            for ( j = 0; j < width; )
+              for ( m = 128; m > 0 && j < width; m >>= 1, j++ )
+                FT_TRACE7(( " %d",
+                            ( topleft[i * pitch + j / 8] & m ) != 0 ));
+            FT_TRACE7(( "\n" ));
+          }
+          break;
+
+        default:
+          FT_TRACE7(( "P2 %d %d 255\n", width, rows ));
+          for ( i = 0; i < rows; i++ )
+          {
+            for ( j = 0; j < width; j += 1 )
+              FT_TRACE7(( " %3u", topleft[i * pitch + j] ));
+            FT_TRACE7(( "\n" ));
+          }
         }
+        FT_TRACE7(( "Netpbm image: end\n" ));
       }
-      FT_TRACE7(( "Netpbm image: end\n" ));
+      else
+        FT_TRACE7(( "Netpbm image: too large, omitted\n" ));
     }
 
 #undef  FT_COMPONENT
@@ -4675,21 +4770,22 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Destroy_Module                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroys a given module object.  For drivers, this also destroys   */
-  /*    all child faces.                                                   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    module :: A handle to the target driver object.                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The driver _must_ be LOCKED!                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Destroy_Module
+   *
+   * @Description:
+   *   Destroys a given module object.  For drivers, this also destroys
+   *   all child faces.
+   *
+   * @InOut:
+   *   module ::
+   *     A handle to the target driver object.
+   *
+   * @Note:
+   *   The driver _must_ be LOCKED!
+   */
   static void
   Destroy_Module( FT_Module  module )
   {
@@ -5156,13 +5252,6 @@
 
     library->memory = memory;
 
-#ifdef FT_CONFIG_OPTION_PIC
-    /* initialize position independent code containers */
-    error = ft_pic_container_init( library );
-    if ( error )
-      goto Fail;
-#endif
-
     library->version_major = FREETYPE_MAJOR;
     library->version_minor = FREETYPE_MINOR;
     library->version_patch = FREETYPE_PATCH;
@@ -5173,13 +5262,6 @@
     *alibrary = library;
 
     return FT_Err_Ok;
-
-#ifdef FT_CONFIG_OPTION_PIC
-  Fail:
-    ft_pic_container_destroy( library );
-    FT_FREE( library );
-    return error;
-#endif
   }
 
 
@@ -5237,10 +5319,10 @@
      *
      * Example:
      *
-     *  - the cff font driver uses the pshinter module in cff_size_done
-     *  - if the pshinter module is destroyed before the cff font driver,
-     *    opened FT_Face objects managed by the driver are not properly
-     *    destroyed, resulting in a memory leak
+     * - the cff font driver uses the pshinter module in cff_size_done
+     * - if the pshinter module is destroyed before the cff font driver,
+     *   opened FT_Face objects managed by the driver are not properly
+     *   destroyed, resulting in a memory leak
      *
      * Some faces are dependent on other faces, like Type42 faces that
      * depend on TrueType faces synthesized internally.
@@ -5310,11 +5392,6 @@
     }
 #endif
 
-#ifdef FT_CONFIG_OPTION_PIC
-    /* Destroy pic container contents */
-    ft_pic_container_destroy( library );
-#endif
-
     FT_FREE( library );
 
   Exit:
@@ -5402,4 +5479,41 @@
   }
 
 
+  /* documentation is in freetype.h */
+
+  FT_EXPORT_DEF( FT_Bool )
+  FT_Get_Color_Glyph_Layer( FT_Face            face,
+                            FT_UInt            base_glyph,
+                            FT_UInt           *aglyph_index,
+                            FT_UInt           *acolor_index,
+                            FT_LayerIterator*  iterator )
+  {
+    TT_Face       ttface;
+    SFNT_Service  sfnt;
+
+
+    if ( !face                                   ||
+         !aglyph_index                           ||
+         !acolor_index                           ||
+         !iterator                               ||
+         base_glyph >= (FT_UInt)face->num_glyphs )
+      return 0;
+
+    if ( !FT_IS_SFNT( face ) )
+      return 0;
+
+    ttface = (TT_Face)face;
+    sfnt   = (SFNT_Service)ttface->sfnt;
+
+    if ( sfnt->get_colr_layer )
+      return sfnt->get_colr_layer( ttface,
+                                   base_glyph,
+                                   aglyph_index,
+                                   acolor_index,
+                                   iterator );
+    else
+      return 0;
+  }
+
+
 /* END */
diff --git a/src/base/ftotval.c b/src/base/ftotval.c
index a2944a7..50825bd 100644
--- a/src/base/ftotval.c
+++ b/src/base/ftotval.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftotval.c                                                              */
-/*                                                                         */
-/*    FreeType API for validating OpenType tables (body).                  */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftotval.c
+ *
+ *   FreeType API for validating OpenType tables (body).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #include <ft2build.h>
 #include FT_INTERNAL_DEBUG_H
diff --git a/src/base/ftoutln.c b/src/base/ftoutln.c
index 9c29ade..611b4f6 100644
--- a/src/base/ftoutln.c
+++ b/src/base/ftoutln.c
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftoutln.c                                                              */
-/*                                                                         */
-/*    FreeType outline management (body).                                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftoutln.c
+ *
+ *   FreeType outline management (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* All functions are declared in freetype.h.                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * All functions are declared in freetype.h.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -31,12 +31,12 @@
 #include FT_TRIGONOMETRY_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_outline
 
@@ -286,12 +286,13 @@
     FT_TRACE5(( "FT_Outline_Decompose: Done\n", n ));
     return FT_Err_Ok;
 
+  Invalid_Outline:
+    error = FT_THROW( Invalid_Outline );
+    /* fall through */
+
   Exit:
     FT_TRACE5(( "FT_Outline_Decompose: Error 0x%x\n", error ));
     return error;
-
-  Invalid_Outline:
-    return FT_THROW( Invalid_Outline );
   }
 
 
@@ -618,6 +619,7 @@
     FT_Error     error;
     FT_Renderer  renderer;
     FT_ListNode  node;
+    FT_BBox      cbox;
 
 
     if ( !library )
@@ -629,6 +631,11 @@
     if ( !params )
       return FT_THROW( Invalid_Argument );
 
+    FT_Outline_Get_CBox( outline, &cbox );
+    if ( cbox.xMin < -0x1000000L || cbox.yMin < -0x1000000L ||
+         cbox.xMax >  0x1000000L || cbox.yMax >  0x1000000L )
+      return FT_THROW( Invalid_Outline );
+
     renderer = library->cur_renderer;
     node     = library->renderers.head;
 
@@ -910,9 +917,9 @@
                          FT_Pos       xstrength,
                          FT_Pos       ystrength )
   {
-    FT_Vector*  points;
-    FT_Int      c, first, last;
-    FT_Int      orientation;
+    FT_Vector*      points;
+    FT_Int          c, first, last;
+    FT_Orientation  orientation;
 
 
     if ( !outline )
@@ -1043,7 +1050,7 @@
   FT_EXPORT_DEF( FT_Orientation )
   FT_Outline_Get_Orientation( FT_Outline*  outline )
   {
-    FT_BBox     cbox;
+    FT_BBox     cbox = { 0, 0, 0, 0 };
     FT_Int      xshift, yshift;
     FT_Vector*  points;
     FT_Vector   v_prev, v_cur;
diff --git a/src/base/ftpatent.c b/src/base/ftpatent.c
index e23ee2e..24331c1 100644
--- a/src/base/ftpatent.c
+++ b/src/base/ftpatent.c
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpatent.c                                                             */
-/*                                                                         */
-/*    FreeType API for checking patented TrueType bytecode instructions    */
-/*    (body).  Obsolete, retained for backward compatibility.              */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner.                                                          */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftpatent.c
+ *
+ *   FreeType API for checking patented TrueType bytecode instructions
+ *   (body).  Obsolete, retained for backward compatibility.
+ *
+ * Copyright 2007-2018 by
+ * David Turner.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #include <ft2build.h>
 #include FT_FREETYPE_H
diff --git a/src/base/ftpfr.c b/src/base/ftpfr.c
index bfe1352..2761ad0 100644
--- a/src/base/ftpfr.c
+++ b/src/base/ftpfr.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpfr.c                                                                */
-/*                                                                         */
-/*    FreeType API for accessing PFR-specific data (body).                 */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftpfr.c
+ *
+ *   FreeType API for accessing PFR-specific data (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #include <ft2build.h>
 #include FT_INTERNAL_DEBUG_H
diff --git a/src/base/ftpic.c b/src/base/ftpic.c
deleted file mode 100644
index 1492e18..0000000
--- a/src/base/ftpic.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpic.c                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services (body).              */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "basepic.h"
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* documentation is in ftpic.h */
-
-  FT_BASE_DEF( FT_Error )
-  ft_pic_container_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error;
-
-
-    FT_MEM_SET( pic_container, 0, sizeof ( *pic_container ) );
-
-    error = ft_base_pic_init( library );
-    if ( error )
-      return error;
-
-    return FT_Err_Ok;
-  }
-
-
-  /* Destroy the contents of the container. */
-  FT_BASE_DEF( void )
-  ft_pic_container_destroy( FT_Library  library )
-  {
-    ft_base_pic_free( library );
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/base/ftpsprop.c b/src/base/ftpsprop.c
index 459b5e6..9c5344a 100644
--- a/src/base/ftpsprop.c
+++ b/src/base/ftpsprop.c
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpsprop.c                                                             */
-/*                                                                         */
-/*    Get and set properties of PostScript drivers (body).                 */
-/*    See `ftdriver.h' for available properties.                           */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftpsprop.c
+ *
+ *   Get and set properties of PostScript drivers (body).
+ *   See `ftdriver.h' for available properties.
+ *
+ * Copyright 2017-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -25,12 +25,12 @@
 #include FT_INTERNAL_POSTSCRIPT_PROPS_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_psprops
 
diff --git a/src/base/ftrfork.c b/src/base/ftrfork.c
index c3a2b91..c61765b 100644
--- a/src/base/ftrfork.c
+++ b/src/base/ftrfork.c
@@ -1,34 +1,34 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrfork.c                                                              */
-/*                                                                         */
-/*    Embedded resource forks accessor (body).                             */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  Masatake YAMATO and Redhat K.K.                                        */
-/*                                                                         */
-/*  FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are     */
-/*  derived from ftobjs.c.                                                 */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrfork.c
+ *
+ *   Embedded resource forks accessor (body).
+ *
+ * Copyright 2004-2018 by
+ * Masatake YAMATO and Redhat K.K.
+ *
+ * FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are
+ * derived from ftobjs.c.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/* Development of the code in this file is support of                      */
-/* Information-technology Promotion Agency, Japan.                         */
-/***************************************************************************/
+/****************************************************************************
+ * Development of the code in this file is support of
+ * Information-technology Promotion Agency, Japan.
+ */
 
 
 #include <ft2build.h>
 #include FT_INTERNAL_DEBUG_H
 #include FT_INTERNAL_STREAM_H
 #include FT_INTERNAL_RFORK_H
-#include "basepic.h"
+
 #include "ftbase.h"
 
 #undef  FT_COMPONENT
@@ -438,7 +438,7 @@
 
   static FT_Error
   raccess_guess_linux_double_from_file_name( FT_Library  library,
-                                             char *      file_name,
+                                             char*       file_name,
                                              FT_Long    *result_offset );
 
   static char *
@@ -468,10 +468,10 @@
       if ( errors[i] )
         continue;
 
-      errors[i] = (FT_RACCESS_GUESS_TABLE_GET[i].func)( library,
-                                                 stream, base_name,
-                                                 &(new_names[i]),
-                                                 &(offsets[i]) );
+      errors[i] = ft_raccess_guess_table[i].func( library,
+                                                  stream, base_name,
+                                                  &(new_names[i]),
+                                                  &(offsets[i]) );
     }
 
     return;
@@ -488,7 +488,7 @@
     if ( rule_index >= FT_RACCESS_N_RULES )
       return FT_RFork_Rule_invalid;
 
-    return FT_RACCESS_GUESS_TABLE_GET[rule_index].type;
+    return ft_raccess_guess_table[rule_index].type;
   }
 
 
@@ -847,7 +847,7 @@
   {
     FT_Open_Args  args2;
     FT_Stream     stream2;
-    char *        nouse = NULL;
+    char*         nouse = NULL;
     FT_Error      error;
 
 
@@ -909,9 +909,9 @@
 #else   /* !FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */
 
 
-  /*************************************************************************/
-  /*                  Dummy function; just sets errors                     */
-  /*************************************************************************/
+  /**************************************************************************
+   *                 Dummy function; just sets errors
+   */
 
   FT_BASE_DEF( void )
   FT_Raccess_Guess( FT_Library  library,
diff --git a/src/base/ftsnames.c b/src/base/ftsnames.c
index 90ea1e2..9135e48 100644
--- a/src/base/ftsnames.c
+++ b/src/base/ftsnames.c
@@ -1,22 +1,22 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsnames.c                                                             */
-/*                                                                         */
-/*    Simple interface to access SFNT name tables (which are used          */
-/*    to hold font names, copyright info, notices, etc.) (body).           */
-/*                                                                         */
-/*    This is _not_ used to retrieve glyph names!                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsnames.c
+ *
+ *   Simple interface to access SFNT name tables (which are used
+ *   to hold font names, copyright info, notices, etc.) (body).
+ *
+ *   This is _not_ used to retrieve glyph names!
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -142,7 +142,45 @@
   }
 
 
-#endif /* TT_CONFIG_OPTION_SFNT_NAMES */
+#else /* !TT_CONFIG_OPTION_SFNT_NAMES */
+
+
+  FT_EXPORT_DEF( FT_UInt )
+  FT_Get_Sfnt_Name_Count( FT_Face  face )
+  {
+    FT_UNUSED( face );
+
+    return 0;
+  }
+
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Get_Sfnt_Name( FT_Face       face,
+                    FT_UInt       idx,
+                    FT_SfntName  *aname )
+  {
+    FT_UNUSED( face );
+    FT_UNUSED( idx );
+    FT_UNUSED( aname );
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Get_Sfnt_LangTag( FT_Face          face,
+                       FT_UInt          langID,
+                       FT_SfntLangTag  *alangTag )
+  {
+    FT_UNUSED( face );
+    FT_UNUSED( langID );
+    FT_UNUSED( alangTag );
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
+
+#endif /* !TT_CONFIG_OPTION_SFNT_NAMES */
 
 
 /* END */
diff --git a/src/base/ftstream.c b/src/base/ftstream.c
index 18df7dc..9c8cab3 100644
--- a/src/base/ftstream.c
+++ b/src/base/ftstream.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstream.c                                                             */
-/*                                                                         */
-/*    I/O stream support (body).                                           */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstream.c
+ *
+ *   I/O stream support (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -21,12 +21,12 @@
 #include FT_INTERNAL_DEBUG_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_stream
 
@@ -219,6 +219,7 @@
     {
       FT_Memory  memory = stream->memory;
 
+
 #ifdef FT_DEBUG_MEMORY
       ft_mem_free( memory, *pbytes );
       *pbytes = NULL;
diff --git a/src/base/ftstroke.c b/src/base/ftstroke.c
index 6ae1819..4455e7c 100644
--- a/src/base/ftstroke.c
+++ b/src/base/ftstroke.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstroke.c                                                             */
-/*                                                                         */
-/*    FreeType path stroker (body).                                        */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstroke.c
+ *
+ *   FreeType path stroker (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -24,15 +24,10 @@
 #include FT_INTERNAL_DEBUG_H
 #include FT_INTERNAL_OBJECTS_H
 
-#include "basepic.h"
 
-
-  /* declare an extern to access `ft_outline_glyph_class' globally     */
-  /* allocated  in `ftglyph.c', and use the FT_OUTLINE_GLYPH_CLASS_GET */
-  /* macro to access it when FT_CONFIG_OPTION_PIC is defined           */
-#ifndef FT_CONFIG_OPTION_PIC
+  /* declare an extern to access `ft_outline_glyph_class' globally */
+  /* allocated  in `ftglyph.c'                                     */
   FT_CALLBACK_TABLE const FT_Glyph_Class  ft_outline_glyph_class;
-#endif
 
 
   /* documentation is in ftstroke.h */
@@ -2087,8 +2082,8 @@
   /* documentation is in ftstroke.h */
 
   /*
-   *  The following is very similar to FT_Outline_Decompose, except
-   *  that we do support opened paths, and do not scale the outline.
+   * The following is very similar to FT_Outline_Decompose, except
+   * that we do support opened paths, and do not scale the outline.
    */
   FT_EXPORT_DEF( FT_Error )
   FT_Stroker_ParseOutline( FT_Stroker   stroker,
@@ -2306,17 +2301,12 @@
     FT_Error  error = FT_ERR( Invalid_Argument );
     FT_Glyph  glyph = NULL;
 
-    /* for FT_OUTLINE_GLYPH_CLASS_GET (in PIC mode) */
-    FT_Library  library = stroker->library;
-
-    FT_UNUSED( library );
-
 
     if ( !pglyph )
       goto Exit;
 
     glyph = *pglyph;
-    if ( !glyph || glyph->clazz != FT_OUTLINE_GLYPH_CLASS_GET )
+    if ( !glyph || glyph->clazz != &ft_outline_glyph_class )
       goto Exit;
 
     {
@@ -2386,17 +2376,12 @@
     FT_Error  error = FT_ERR( Invalid_Argument );
     FT_Glyph  glyph = NULL;
 
-    /* for FT_OUTLINE_GLYPH_CLASS_GET (in PIC mode) */
-    FT_Library  library = stroker->library;
-
-    FT_UNUSED( library );
-
 
     if ( !pglyph )
       goto Exit;
 
     glyph = *pglyph;
-    if ( !glyph || glyph->clazz != FT_OUTLINE_GLYPH_CLASS_GET )
+    if ( !glyph || glyph->clazz != &ft_outline_glyph_class )
       goto Exit;
 
     {
diff --git a/src/base/ftsynth.c b/src/base/ftsynth.c
index c283467..5539105 100644
--- a/src/base/ftsynth.c
+++ b/src/base/ftsynth.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsynth.c                                                              */
-/*                                                                         */
-/*    FreeType synthesizing code for emboldening and slanting (body).      */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsynth.c
+ *
+ *   FreeType synthesizing code for emboldening and slanting (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -24,12 +24,12 @@
 #include FT_BITMAP_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_synth
 
diff --git a/src/base/ftsystem.c b/src/base/ftsystem.c
index 6adebdb..d761ad9 100644
--- a/src/base/ftsystem.c
+++ b/src/base/ftsystem.c
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsystem.c                                                             */
-/*                                                                         */
-/*    ANSI-specific FreeType low-level system interface (body).            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsystem.c
+ *
+ *   ANSI-specific FreeType low-level system interface (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file contains the default interface used by FreeType to access   */
-  /* low-level, i.e. memory management, i/o access as well as thread       */
-  /* synchronisation.  It can be replaced by user-specific routines if     */
-  /* necessary.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file contains the default interface used by FreeType to access
+   * low-level, i.e. memory management, i/o access as well as thread
+   * synchronisation.  It can be replaced by user-specific routines if
+   * necessary.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -34,37 +34,39 @@
 #include FT_TYPES_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                       MEMORY MANAGEMENT INTERFACE                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                      MEMORY MANAGEMENT INTERFACE
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* It is not necessary to do any error checking for the                  */
-  /* allocation-related functions.  This will be done by the higher level  */
-  /* routines like ft_mem_alloc() or ft_mem_realloc().                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * It is not necessary to do any error checking for the
+   * allocation-related functions.  This will be done by the higher level
+   * routines like ft_mem_alloc() or ft_mem_realloc().
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_alloc                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The memory allocation function.                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory :: A pointer to the memory object.                          */
-  /*                                                                       */
-  /*    size   :: The requested size in bytes.                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The address of newly allocated block.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_alloc
+   *
+   * @Description:
+   *   The memory allocation function.
+   *
+   * @Input:
+   *   memory ::
+   *     A pointer to the memory object.
+   *
+   *   size ::
+   *     The requested size in bytes.
+   *
+   * @Return:
+   *   The address of newly allocated block.
+   */
   FT_CALLBACK_DEF( void* )
   ft_alloc( FT_Memory  memory,
             long       size )
@@ -75,26 +77,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_realloc                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The memory reallocation function.                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory   :: A pointer to the memory object.                        */
-  /*                                                                       */
-  /*    cur_size :: The current size of the allocated memory block.        */
-  /*                                                                       */
-  /*    new_size :: The newly requested size in bytes.                     */
-  /*                                                                       */
-  /*    block    :: The current address of the block in memory.            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The address of the reallocated memory block.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_realloc
+   *
+   * @Description:
+   *   The memory reallocation function.
+   *
+   * @Input:
+   *   memory ::
+   *     A pointer to the memory object.
+   *
+   *   cur_size ::
+   *     The current size of the allocated memory block.
+   *
+   *   new_size ::
+   *     The newly requested size in bytes.
+   *
+   *   block ::
+   *     The current address of the block in memory.
+   *
+   * @Return:
+   *   The address of the reallocated memory block.
+   */
   FT_CALLBACK_DEF( void* )
   ft_realloc( FT_Memory  memory,
               long       cur_size,
@@ -108,19 +114,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_free                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The memory release function.                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory  :: A pointer to the memory object.                         */
-  /*                                                                       */
-  /*    block   :: The address of block in memory to be freed.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_free
+   *
+   * @Description:
+   *   The memory release function.
+   *
+   * @Input:
+   *   memory ::
+   *     A pointer to the memory object.
+   *
+   *   block ::
+   *     The address of block in memory to be freed.
+   */
   FT_CALLBACK_DEF( void )
   ft_free( FT_Memory  memory,
            void*      block )
@@ -131,20 +139,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                     RESOURCE MANAGEMENT INTERFACE                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                    RESOURCE MANAGEMENT INTERFACE
+   *
+   */
 
 #ifndef FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_io
 
@@ -153,17 +161,18 @@
 #define STREAM_FILE( stream )  ( (FT_FILE*)stream->descriptor.pointer )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_ansi_stream_close                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The function to close a stream.                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: A pointer to the stream object.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_ansi_stream_close
+   *
+   * @Description:
+   *   The function to close a stream.
+   *
+   * @Input:
+   *   stream ::
+   *     A pointer to the stream object.
+   */
   FT_CALLBACK_DEF( void )
   ft_ansi_stream_close( FT_Stream  stream )
   {
@@ -175,28 +184,32 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_ansi_stream_io                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The function to open a stream.                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: A pointer to the stream object.                          */
-  /*                                                                       */
-  /*    offset :: The position in the data stream to start reading.        */
-  /*                                                                       */
-  /*    buffer :: The address of buffer to store the read data.            */
-  /*                                                                       */
-  /*    count  :: The number of bytes to read from the stream.             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The number of bytes actually read.  If `count' is zero (this is,   */
-  /*    the function is used for seeking), a non-zero return value         */
-  /*    indicates an error.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_ansi_stream_io
+   *
+   * @Description:
+   *   The function to open a stream.
+   *
+   * @Input:
+   *   stream ::
+   *     A pointer to the stream object.
+   *
+   *   offset ::
+   *     The position in the data stream to start reading.
+   *
+   *   buffer ::
+   *     The address of buffer to store the read data.
+   *
+   *   count ::
+   *     The number of bytes to read from the stream.
+   *
+   * @Return:
+   *   The number of bytes actually read.  If `count' is zero (this is,
+   *   the function is used for seeking), a non-zero return value
+   *   indicates an error.
+   */
   FT_CALLBACK_DEF( unsigned long )
   ft_ansi_stream_io( FT_Stream       stream,
                      unsigned long   offset,
diff --git a/src/base/fttrigon.c b/src/base/fttrigon.c
index d6dd098..d375bd7 100644
--- a/src/base/fttrigon.c
+++ b/src/base/fttrigon.c
@@ -1,33 +1,33 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttrigon.c                                                             */
-/*                                                                         */
-/*    FreeType trigonometric functions (body).                             */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttrigon.c
+ *
+ *   FreeType trigonometric functions (body).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This is a fixed-point CORDIC implementation of trigonometric          */
-  /* functions as well as transformations between Cartesian and polar      */
-  /* coordinates.  The angles are represented as 16.16 fixed-point values  */
-  /* in degrees, i.e., the angular resolution is 2^-16 degrees.  Note that */
-  /* only vectors longer than 2^16*180/pi (or at least 22 bits) on a       */
-  /* discrete Cartesian grid can have the same or better angular           */
-  /* resolution.  Therefore, to maintain this precision, some functions    */
-  /* require an interim upscaling of the vectors, whereas others operate   */
-  /* with 24-bit long vectors directly.                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This is a fixed-point CORDIC implementation of trigonometric
+   * functions as well as transformations between Cartesian and polar
+   * coordinates.  The angles are represented as 16.16 fixed-point values
+   * in degrees, i.e., the angular resolution is 2^-16 degrees.  Note that
+   * only vectors longer than 2^16*180/pi (or at least 22 bits) on a
+   * discrete Cartesian grid can have the same or better angular
+   * resolution.  Therefore, to maintain this precision, some functions
+   * require an interim upscaling of the vectors, whereas others operate
+   * with 24-bit long vectors directly.
+   *
+   */
 
 #include <ft2build.h>
 #include FT_INTERNAL_OBJECTS_H
@@ -325,10 +325,10 @@
   FT_EXPORT_DEF( FT_Fixed )
   FT_Tan( FT_Angle  angle )
   {
-    FT_Vector  v;
+    FT_Vector  v = { 1 << 24, 0 };
 
 
-    FT_Vector_Unit( &v, angle );
+    ft_trig_pseudo_rotate( &v, angle );
 
     return FT_DivFix( v.y, v.x );
   }
@@ -372,14 +372,6 @@
   }
 
 
-  /* these macros return 0 for positive numbers,
-     and -1 for negative ones */
-#define FT_SIGN_LONG( x )   ( (x) >> ( FT_SIZEOF_LONG * 8 - 1 ) )
-#define FT_SIGN_INT( x )    ( (x) >> ( FT_SIZEOF_INT * 8 - 1 ) )
-#define FT_SIGN_INT32( x )  ( (x) >> 31 )
-#define FT_SIGN_INT16( x )  ( (x) >> 15 )
-
-
   /* documentation is in fttrigon.h */
 
   FT_EXPORT_DEF( void )
@@ -408,8 +400,8 @@
       FT_Int32  half = (FT_Int32)1L << ( shift - 1 );
 
 
-      vec->x = ( v.x + half + FT_SIGN_LONG( v.x ) ) >> shift;
-      vec->y = ( v.y + half + FT_SIGN_LONG( v.y ) ) >> shift;
+      vec->x = ( v.x + half - ( v.x < 0 ) ) >> shift;
+      vec->y = ( v.y + half - ( v.y < 0 ) ) >> shift;
     }
     else
     {
diff --git a/src/base/fttype1.c b/src/base/fttype1.c
index aa8f8cc..229b0ac 100644
--- a/src/base/fttype1.c
+++ b/src/base/fttype1.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttype1.c                                                              */
-/*                                                                         */
-/*    FreeType utility file for PS names support (body).                   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttype1.c
+ *
+ *   FreeType utility file for PS names support (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/ftutil.c b/src/base/ftutil.c
index 4de5f2c..eced7bb 100644
--- a/src/base/ftutil.c
+++ b/src/base/ftutil.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftutil.c                                                               */
-/*                                                                         */
-/*    FreeType utility file for memory and list management (body).         */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftutil.c
+ *
+ *   FreeType utility file for memory and list management (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -23,12 +23,12 @@
 #include FT_LIST_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_memory
 
@@ -54,7 +54,7 @@
     FT_Error    error;
     FT_Pointer  block = ft_mem_qalloc( memory, size, &error );
 
-    if ( !error && size > 0 )
+    if ( !error && block && size > 0 )
       FT_MEM_ZERO( block, size );
 
     *p_error = error;
@@ -101,7 +101,7 @@
 
     block = ft_mem_qrealloc( memory, item_size,
                              cur_count, new_count, block, &error );
-    if ( !error && new_count > cur_count )
+    if ( !error && block && new_count > cur_count )
       FT_MEM_ZERO( (char*)block + cur_count * item_size,
                    ( new_count - cur_count ) * item_size );
 
@@ -185,7 +185,7 @@
     FT_Pointer  p = ft_mem_qalloc( memory, (FT_Long)size, &error );
 
 
-    if ( !error && address )
+    if ( !error && address && size > 0 )
       ft_memcpy( p, address, size );
 
     *p_error = error;
diff --git a/src/base/ftver.rc b/src/base/ftver.rc
index cdff99f..b0b6e00 100644
--- a/src/base/ftver.rc
+++ b/src/base/ftver.rc
@@ -18,8 +18,8 @@
 
 #include<windows.h>
 
-#define FT_VERSION      2,9,0,0
-#define FT_VERSION_STR  "2.9.0"
+#define FT_VERSION      2,9,1,0
+#define FT_VERSION_STR  "2.9.1"
 
 VS_VERSION_INFO      VERSIONINFO
 FILEVERSION          FT_VERSION
@@ -28,7 +28,7 @@
 #ifdef _DEBUG
 FILEFLAGS            VS_FF_DEBUG
 #endif
-#ifdef _DLL
+#ifdef DLL_EXPORT
 FILETYPE             VFT_DLL
 #define FT_FILENAME  "freetype.dll"
 #else
diff --git a/src/base/ftwinfnt.c b/src/base/ftwinfnt.c
index 11bd28a..bd6548f 100644
--- a/src/base/ftwinfnt.c
+++ b/src/base/ftwinfnt.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftwinfnt.c                                                             */
-/*                                                                         */
-/*    FreeType API for accessing Windows FNT specific info (body).         */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftwinfnt.c
+ *
+ *   FreeType API for accessing Windows FNT specific info (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/base/rules.mk b/src/base/rules.mk
index 6491f5d..214fd77 100644
--- a/src/base/rules.mk
+++ b/src/base/rules.mk
@@ -36,15 +36,16 @@
 # All files listed here should be included in `ftbase.c' (for a `single'
 # build).
 #
-BASE_SRC := $(BASE_DIR)/basepic.c  \
-            $(BASE_DIR)/ftadvanc.c \
+BASE_SRC := $(BASE_DIR)/ftadvanc.c \
             $(BASE_DIR)/ftcalc.c   \
+            $(BASE_DIR)/ftcolor.c  \
             $(BASE_DIR)/ftdbgmem.c \
+            $(BASE_DIR)/ftfntfmt.c \
             $(BASE_DIR)/ftgloadr.c \
             $(BASE_DIR)/fthash.c   \
+            $(BASE_DIR)/ftlcdfil.c \
             $(BASE_DIR)/ftobjs.c   \
             $(BASE_DIR)/ftoutln.c  \
-            $(BASE_DIR)/ftpic.c    \
             $(BASE_DIR)/ftpsprop.c \
             $(BASE_DIR)/ftrfork.c  \
             $(BASE_DIR)/ftsnames.c \
@@ -58,8 +59,7 @@
 endif
 
 # for simplicity, we also handle `md5.c' (which gets included by `ftobjs.h')
-BASE_H := $(BASE_DIR)/basepic.h \
-          $(BASE_DIR)/ftbase.h  \
+BASE_H := $(BASE_DIR)/ftbase.h  \
           $(BASE_DIR)/md5.c     \
           $(BASE_DIR)/md5.h
 
diff --git a/src/bdf/bdf.h b/src/bdf/bdf.h
index 9012727..a6ba82e 100644
--- a/src/bdf/bdf.h
+++ b/src/bdf/bdf.h
@@ -51,11 +51,11 @@
 /* end of bdfP.h */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* BDF font options macros and types.                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * BDF font options macros and types.
+   *
+   */
 
 
 #define BDF_CORRECT_METRICS  0x01 /* Correct invalid metrics when loading. */
@@ -93,11 +93,11 @@
                              void*           client_data );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* BDF font property macros and types.                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * BDF font property macros and types.
+   *
+   */
 
 
 #define BDF_ATOM      1
@@ -123,11 +123,11 @@
   } bdf_property_t;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* BDF font metric and glyph types.                                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * BDF font metric and glyph types.
+   *
+   */
 
 
   typedef struct  bdf_bbx_t_
@@ -226,11 +226,11 @@
   } bdf_font_t;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Types for load/save callbacks.                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Types for load/save callbacks.
+   *
+   */
 
 
   /* Error codes. */
@@ -247,11 +247,11 @@
 #define BDF_INVALID_LINE      -100
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* BDF font API.                                                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * BDF font API.
+   *
+   */
 
   FT_LOCAL( FT_Error )
   bdf_load_font( FT_Stream       stream,
diff --git a/src/bdf/bdfdrivr.c b/src/bdf/bdfdrivr.c
index ca937f8..1e272b0 100644
--- a/src/bdf/bdfdrivr.c
+++ b/src/bdf/bdfdrivr.c
@@ -41,12 +41,12 @@
 #include "bdferror.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_bdfdriver
 
@@ -401,8 +401,7 @@
       bdfface->face_index = 0;
 
       bdfface->face_flags |= FT_FACE_FLAG_FIXED_SIZES |
-                             FT_FACE_FLAG_HORIZONTAL  |
-                             FT_FACE_FLAG_FAST_GLYPHS;
+                             FT_FACE_FLAG_HORIZONTAL;
 
       prop = bdf_get_font_property( font, "SPACING" );
       if ( prop && prop->format == BDF_ATOM                             &&
@@ -863,7 +862,7 @@
 
  /*
   *
-  *  BDF SERVICE
+  * BDF SERVICE
   *
   */
 
@@ -939,7 +938,7 @@
 
  /*
   *
-  *  SERVICES LIST
+  * SERVICES LIST
   *
   */
 
diff --git a/src/bdf/bdfdrivr.h b/src/bdf/bdfdrivr.h
index 9455081..4857316 100644
--- a/src/bdf/bdfdrivr.h
+++ b/src/bdf/bdfdrivr.h
@@ -36,10 +36,6 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
 
   typedef struct  BDF_encoding_el_
   {
diff --git a/src/bdf/bdferror.h b/src/bdf/bdferror.h
index b462c7d..dbe41c0 100644
--- a/src/bdf/bdferror.h
+++ b/src/bdf/bdferror.h
@@ -20,11 +20,11 @@
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the BDF error enumeration constants.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the BDF error enumeration constants.
+   *
+   */
 
 #ifndef BDFERROR_H_
 #define BDFERROR_H_
diff --git a/src/bdf/bdflib.c b/src/bdf/bdflib.c
index 2f5c99d..5c09591 100644
--- a/src/bdf/bdflib.c
+++ b/src/bdf/bdflib.c
@@ -22,13 +22,13 @@
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  This file is based on bdf.c,v 1.22 2000/03/16 20:08:50               */
-  /*                                                                       */
-  /*  taken from Mark Leisher's xmbdfed package                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is based on bdf.c,v 1.22 2000/03/16 20:08:50
+   *
+   * taken from Mark Leisher's xmbdfed package
+   *
+   */
 
 
 #include <ft2build.h>
@@ -42,21 +42,21 @@
 #include "bdferror.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_bdflib
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Default BDF font options.                                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Default BDF font options.
+   *
+   */
 
 
   static const bdf_options_t  _bdf_opts =
@@ -68,11 +68,11 @@
   };
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Builtin BDF font properties.                                          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Builtin BDF font properties.
+   *
+   */
 
   /* List of most properties that might appear in a font.  Doesn't include */
   /* the RAW_* and AXIS_* properties in X11R6 polymorphic fonts.           */
@@ -219,11 +219,11 @@
 #define DBGMSG2  " (0x%lX)\n"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Utility types and functions.                                          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Utility types and functions.
+   *
+   */
 
 
   /* Function type for parsing lines of a BDF font. */
@@ -900,11 +900,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* BDF font file parsing flags and functions.                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * BDF font file parsing flags and functions.
+   *
+   */
 
 
   /* Parse flags. */
@@ -1556,6 +1556,9 @@
       goto Exit;
     }
 
+    if ( !( p->flags & BDF_ENCODING_ ) )
+      goto Missing_Encoding;
+
     /* Point at the glyph being constructed. */
     if ( p->glyph_enc == -1 )
       glyph = font->unencoded + ( font->unencoded_used - 1 );
@@ -1626,9 +1629,6 @@
     /* Expect the SWIDTH (scalable width) field next. */
     if ( _bdf_strncmp( line, "SWIDTH", 6 ) == 0 )
     {
-      if ( !( p->flags & BDF_ENCODING_ ) )
-        goto Missing_Encoding;
-
       error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
       if ( error )
         goto Exit;
@@ -1642,9 +1642,6 @@
     /* Expect the DWIDTH (scalable width) field next. */
     if ( _bdf_strncmp( line, "DWIDTH", 6 ) == 0 )
     {
-      if ( !( p->flags & BDF_ENCODING_ ) )
-        goto Missing_Encoding;
-
       error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
       if ( error )
         goto Exit;
@@ -1670,9 +1667,6 @@
     /* Expect the BBX field next. */
     if ( _bdf_strncmp( line, "BBX", 3 ) == 0 )
     {
-      if ( !( p->flags & BDF_ENCODING_ ) )
-        goto Missing_Encoding;
-
       error = _bdf_list_split( &p->list, (char *)" +", line, linelen );
       if ( error )
         goto Exit;
@@ -2196,11 +2190,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* API.                                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * API.
+   *
+   */
 
 
   FT_LOCAL_DEF( FT_Error )
diff --git a/src/bzip2/ftbzip2.c b/src/bzip2/ftbzip2.c
index 1601948..0f6ab15 100644
--- a/src/bzip2/ftbzip2.c
+++ b/src/bzip2/ftbzip2.c
@@ -1,25 +1,25 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbzip2.c                                                              */
-/*                                                                         */
-/*    FreeType support for .bz2 compressed files.                          */
-/*                                                                         */
-/*  This optional component relies on libbz2.  It should mainly be used to */
-/*  parse compressed PCF fonts, as found with many X11 server              */
-/*  distributions.                                                         */
-/*                                                                         */
-/*  Copyright 2010-2018 by                                                 */
-/*  Joel Klinghed.                                                         */
-/*                                                                         */
-/*  based on `src/gzip/ftgzip.c'                                           */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbzip2.c
+ *
+ *   FreeType support for .bz2 compressed files.
+ *
+ * This optional component relies on libbz2.  It should mainly be used to
+ * parse compressed PCF fonts, as found with many X11 server
+ * distributions.
+ *
+ * Copyright 2010-2018 by
+ * Joel Klinghed.
+ *
+ * based on `src/gzip/ftgzip.c'
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -43,10 +43,6 @@
 
 #ifdef FT_CONFIG_OPTION_USE_BZIP2
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "bzip2 code does not support PIC yet"
-#endif
-
 #define BZ_NO_STDIO /* Do not need FILE */
 #include <bzlib.h>
 
@@ -475,8 +471,8 @@
     memory = source->memory;
 
     /*
-     *  check the header right now; this prevents allocating unnecessary
-     *  objects when we don't need them
+     * check the header right now; this prevents allocating unnecessary
+     * objects when we don't need them
      */
     error = ft_bzip2_check_header( source );
     if ( error )
diff --git a/src/cache/ftcache.c b/src/cache/ftcache.c
index 1b425af..fb78b81 100644
--- a/src/cache/ftcache.c
+++ b/src/cache/ftcache.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcache.c                                                              */
-/*                                                                         */
-/*    The FreeType Caching sub-system (body only).                         */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcache.c
+ *
+ *   The FreeType Caching sub-system (body only).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
diff --git a/src/cache/ftcbasic.c b/src/cache/ftcbasic.c
index 994aa12..f2b75ee 100644
--- a/src/cache/ftcbasic.c
+++ b/src/cache/ftcbasic.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcbasic.c                                                             */
-/*                                                                         */
-/*    The FreeType basic cache interface (body).                           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcbasic.c
+ *
+ *   The FreeType basic cache interface (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -31,7 +31,7 @@
 
 
   /*
-   *  Basic Families
+   * Basic Families
    *
    */
   typedef struct  FTC_BasicAttrRec_
diff --git a/src/cache/ftccache.c b/src/cache/ftccache.c
index 12ec585..a9aa5d4 100644
--- a/src/cache/ftccache.c
+++ b/src/cache/ftccache.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftccache.c                                                             */
-/*                                                                         */
-/*    The FreeType internal cache interface (body).                        */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftccache.c
+ *
+ *   The FreeType internal cache interface (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/cache/ftccache.h b/src/cache/ftccache.h
index 859c547..c1f8c29 100644
--- a/src/cache/ftccache.h
+++ b/src/cache/ftccache.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftccache.h                                                             */
-/*                                                                         */
-/*    FreeType internal cache interface (specification).                   */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftccache.h
+ *
+ *   FreeType internal cache interface (specification).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTCCACHE_H_
@@ -42,17 +42,17 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Each cache controls one or more cache nodes.  Each node is part of    */
-  /* the global_lru list of the manager.  Its `data' field however is used */
-  /* as a reference count for now.                                         */
-  /*                                                                       */
-  /* A node can be anything, depending on the type of information held by  */
-  /* the cache.  It can be an individual glyph image, a set of bitmaps     */
-  /* glyphs for a given size, some metrics, etc.                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Each cache controls one or more cache nodes.  Each node is part of
+   * the global_lru list of the manager.  Its `data' field however is used
+   * as a reference count for now.
+   *
+   * A node can be anything, depending on the type of information held by
+   * the cache.  It can be an individual glyph image, a set of bitmaps
+   * glyphs for a given size, some metrics, etc.
+   *
+   */
 
   /* structure size should be 20 bytes on 32-bits machines */
   typedef struct  FTC_NodeRec_
@@ -302,11 +302,11 @@
    *
    * Example:
    *
-   *   {
-   *     FTC_CACHE_TRYLOOP( cache )
-   *       error = load_data( ... );
-   *     FTC_CACHE_TRYLOOP_END()
-   *   }
+   * {
+   *   FTC_CACHE_TRYLOOP( cache )
+   *     error = load_data( ... );
+   *   FTC_CACHE_TRYLOOP_END()
+   * }
    *
    */
 #define FTC_CACHE_TRYLOOP( cache )                           \
diff --git a/src/cache/ftccback.h b/src/cache/ftccback.h
index e51d8d6..1e414aa 100644
--- a/src/cache/ftccback.h
+++ b/src/cache/ftccback.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftccback.h                                                             */
-/*                                                                         */
-/*    Callback functions of the caching sub-system (specification only).   */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftccback.h
+ *
+ *   Callback functions of the caching sub-system (specification only).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #ifndef FTCCBACK_H_
 #define FTCCBACK_H_
diff --git a/src/cache/ftccmap.c b/src/cache/ftccmap.c
index d20b0f4..47b8b76 100644
--- a/src/cache/ftccmap.c
+++ b/src/cache/ftccmap.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftccmap.c                                                              */
-/*                                                                         */
-/*    FreeType CharMap cache (body)                                        */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftccmap.c
+ *
+ *   FreeType CharMap cache (body)
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -31,18 +31,18 @@
 #define FT_COMPONENT  trace_cache
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Each FTC_CMapNode contains a simple array to map a range of character */
-  /* codes to equivalent glyph indices.                                    */
-  /*                                                                       */
-  /* For now, the implementation is very basic: Each node maps a range of  */
-  /* 128 consecutive character codes to their corresponding glyph indices. */
-  /*                                                                       */
-  /* We could do more complex things, but I don't think it is really very  */
-  /* useful.                                                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Each FTC_CMapNode contains a simple array to map a range of character
+   * codes to equivalent glyph indices.
+   *
+   * For now, the implementation is very basic: Each node maps a range of
+   * 128 consecutive character codes to their corresponding glyph indices.
+   *
+   * We could do more complex things, but I don't think it is really very
+   * useful.
+   *
+   */
 
 
   /* number of glyph indices / character code per node */
diff --git a/src/cache/ftcerror.h b/src/cache/ftcerror.h
index a26cd59..6ed9e9e 100644
--- a/src/cache/ftcerror.h
+++ b/src/cache/ftcerror.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcerror.h                                                             */
-/*                                                                         */
-/*    Caching sub-system error codes (specification only).                 */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcerror.h
+ *
+ *   Caching sub-system error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the caching sub-system error enumeration  */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the caching sub-system error enumeration
+   * constants.
+   *
+   */
 
 #ifndef FTCERROR_H_
 #define FTCERROR_H_
diff --git a/src/cache/ftcglyph.c b/src/cache/ftcglyph.c
index 782cc0e..1b86429 100644
--- a/src/cache/ftcglyph.c
+++ b/src/cache/ftcglyph.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcglyph.c                                                             */
-/*                                                                         */
-/*    FreeType Glyph Image (FT_Glyph) cache (body).                        */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcglyph.c
+ *
+ *   FreeType Glyph Image (FT_Glyph) cache (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/cache/ftcglyph.h b/src/cache/ftcglyph.h
index 23c24d2..234ec89 100644
--- a/src/cache/ftcglyph.h
+++ b/src/cache/ftcglyph.h
@@ -1,101 +1,101 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcglyph.h                                                             */
-/*                                                                         */
-/*    FreeType abstract glyph cache (specification).                       */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcglyph.h
+ *
+ *   FreeType abstract glyph cache (specification).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /*
    *
-   *  FTC_GCache is an _abstract_ cache object optimized to store glyph
-   *  data.  It works as follows:
+   * FTC_GCache is an _abstract_ cache object optimized to store glyph
+   * data.  It works as follows:
    *
-   *   - It manages FTC_GNode objects. Each one of them can hold one or more
-   *     glyph `items'.  Item types are not specified in the FTC_GCache but
-   *     in classes that extend it.
+   * - It manages FTC_GNode objects. Each one of them can hold one or more
+   *   glyph `items'.  Item types are not specified in the FTC_GCache but
+   *   in classes that extend it.
    *
-   *   - Glyph attributes, like face ID, character size, render mode, etc.,
-   *     can be grouped into abstract `glyph families'.  This avoids storing
-   *     the attributes within the FTC_GCache, since it is likely that many
-   *     FTC_GNodes will belong to the same family in typical uses.
+   * - Glyph attributes, like face ID, character size, render mode, etc.,
+   *   can be grouped into abstract `glyph families'.  This avoids storing
+   *   the attributes within the FTC_GCache, since it is likely that many
+   *   FTC_GNodes will belong to the same family in typical uses.
    *
-   *   - Each FTC_GNode is thus an FTC_Node with two additional fields:
+   * - Each FTC_GNode is thus an FTC_Node with two additional fields:
    *
-   *       * gindex: A glyph index, or the first index in a glyph range.
-   *       * family: A pointer to a glyph `family'.
+   *   * gindex: A glyph index, or the first index in a glyph range.
+   *   * family: A pointer to a glyph `family'.
    *
-   *   - Family types are not fully specific in the FTC_Family type, but
-   *     by classes that extend it.
+   * - Family types are not fully specific in the FTC_Family type, but
+   *   by classes that extend it.
    *
-   *  Note that both FTC_ImageCache and FTC_SBitCache extend FTC_GCache.
-   *  They share an FTC_Family sub-class called FTC_BasicFamily which is
-   *  used to store the following data: face ID, pixel/point sizes, load
-   *  flags.  For more details see the file `src/cache/ftcbasic.c'.
+   * Note that both FTC_ImageCache and FTC_SBitCache extend FTC_GCache.
+   * They share an FTC_Family sub-class called FTC_BasicFamily which is
+   * used to store the following data: face ID, pixel/point sizes, load
+   * flags.  For more details see the file `src/cache/ftcbasic.c'.
    *
-   *  Client applications can extend FTC_GNode with their own FTC_GNode
-   *  and FTC_Family sub-classes to implement more complex caches (e.g.,
-   *  handling automatic synthesis, like obliquing & emboldening, colored
-   *  glyphs, etc.).
+   * Client applications can extend FTC_GNode with their own FTC_GNode
+   * and FTC_Family sub-classes to implement more complex caches (e.g.,
+   * handling automatic synthesis, like obliquing & emboldening, colored
+   * glyphs, etc.).
    *
-   *  See also the FTC_ICache & FTC_SCache classes in `ftcimage.h' and
-   *  `ftcsbits.h', which both extend FTC_GCache with additional
-   *  optimizations.
+   * See also the FTC_ICache & FTC_SCache classes in `ftcimage.h' and
+   * `ftcsbits.h', which both extend FTC_GCache with additional
+   * optimizations.
    *
-   *  A typical FTC_GCache implementation must provide at least the
-   *  following:
+   * A typical FTC_GCache implementation must provide at least the
+   * following:
    *
-   *  - FTC_GNode sub-class, e.g. MyNode, with relevant methods:
-   *        my_node_new            (must call FTC_GNode_Init)
-   *        my_node_free           (must call FTC_GNode_Done)
-   *        my_node_compare        (must call FTC_GNode_Compare)
-   *        my_node_remove_faceid  (must call ftc_gnode_unselect in case
-   *                                of match)
+   * - FTC_GNode sub-class, e.g. MyNode, with relevant methods:
+   *     my_node_new            (must call FTC_GNode_Init)
+   *     my_node_free           (must call FTC_GNode_Done)
+   *     my_node_compare        (must call FTC_GNode_Compare)
+   *     my_node_remove_faceid  (must call ftc_gnode_unselect in case
+   *                             of match)
    *
-   *  - FTC_Family sub-class, e.g. MyFamily, with relevant methods:
-   *        my_family_compare
-   *        my_family_init
-   *        my_family_reset (optional)
-   *        my_family_done
+   * - FTC_Family sub-class, e.g. MyFamily, with relevant methods:
+   *     my_family_compare
+   *     my_family_init
+   *     my_family_reset (optional)
+   *     my_family_done
    *
-   *  - FTC_GQuery sub-class, e.g. MyQuery, to hold cache-specific query
-   *    data.
+   * - FTC_GQuery sub-class, e.g. MyQuery, to hold cache-specific query
+   *   data.
    *
-   *  - Constant structures for a FTC_GNodeClass.
+   * - Constant structures for a FTC_GNodeClass.
    *
-   *  - MyCacheNew() can be implemented easily as a call to the convenience
-   *    function FTC_GCache_New.
+   * - MyCacheNew() can be implemented easily as a call to the convenience
+   *   function FTC_GCache_New.
    *
-   *  - MyCacheLookup with a call to FTC_GCache_Lookup.  This function will
-   *    automatically:
+   * - MyCacheLookup with a call to FTC_GCache_Lookup.  This function will
+   *   automatically:
    *
-   *    - Search for the corresponding family in the cache, or create
-   *      a new one if necessary.  Put it in FTC_GQUERY(myquery).family
+   *   - Search for the corresponding family in the cache, or create
+   *     a new one if necessary.  Put it in FTC_GQUERY(myquery).family
    *
-   *    - Call FTC_Cache_Lookup.
+   *   - Call FTC_Cache_Lookup.
    *
-   *    If it returns NULL, you should create a new node, then call
-   *    ftc_cache_add as usual.
+   *   If it returns NULL, you should create a new node, then call
+   *   ftc_cache_add as usual.
    */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Important: The functions defined in this file are only used to        */
-  /*            implement an abstract glyph cache class.  You need to      */
-  /*            provide additional logic to implement a complete cache.    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Important: The functions defined in this file are only used to
+   *            implement an abstract glyph cache class.  You need to
+   *            provide additional logic to implement a complete cache.
+   *
+   */
 
 
   /*************************************************************************/
@@ -125,11 +125,11 @@
 
 
  /*
-  *  We can group glyphs into `families'.  Each family correspond to a
-  *  given face ID, character size, transform, etc.
+  * We can group glyphs into `families'.  Each family correspond to a
+  * given face ID, character size, transform, etc.
   *
-  *  Families are implemented as MRU list nodes.  They are
-  *  reference-counted.
+  * Families are implemented as MRU list nodes.  They are
+  * reference-counted.
   */
 
   typedef struct  FTC_FamilyRec_
@@ -167,12 +167,12 @@
 #define FTC_GQUERY( x )  ( (FTC_GQuery)(x) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* These functions are exported so that they can be called from          */
-  /* user-provided cache classes; otherwise, they are really part of the   */
-  /* cache sub-system internals.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * These functions are exported so that they can be called from
+   * user-provided cache classes; otherwise, they are really part of the
+   * cache sub-system internals.
+   */
 
   /* must be called by derived FTC_Node_InitFunc routines */
   FT_LOCAL( void )
diff --git a/src/cache/ftcimage.c b/src/cache/ftcimage.c
index 77a1001..597e341 100644
--- a/src/cache/ftcimage.c
+++ b/src/cache/ftcimage.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcimage.c                                                             */
-/*                                                                         */
-/*    FreeType Image cache (body).                                         */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcimage.c
+ *
+ *   FreeType Image cache (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/cache/ftcimage.h b/src/cache/ftcimage.h
index 24a2210..ad47f8d 100644
--- a/src/cache/ftcimage.h
+++ b/src/cache/ftcimage.h
@@ -1,35 +1,35 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcimage.h                                                             */
-/*                                                                         */
-/*    FreeType Generic Image cache (specification)                         */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcimage.h
+ *
+ *   FreeType Generic Image cache (specification)
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
  /*
-  *  FTC_ICache is an _abstract_ cache used to store a single FT_Glyph
-  *  image per cache node.
+  * FTC_ICache is an _abstract_ cache used to store a single FT_Glyph
+  * image per cache node.
   *
-  *  FTC_ICache extends FTC_GCache.  For an implementation example,
-  *  see FTC_ImageCache in `src/cache/ftbasic.c'.
+  * FTC_ICache extends FTC_GCache.  For an implementation example,
+  * see FTC_ImageCache in `src/cache/ftbasic.c'.
   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Each image cache really manages FT_Glyph objects.                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Each image cache really manages FT_Glyph objects.
+   *
+   */
 
 
 #ifndef FTCIMAGE_H_
diff --git a/src/cache/ftcmanag.c b/src/cache/ftcmanag.c
index 2bcd9df..9be1773 100644
--- a/src/cache/ftcmanag.c
+++ b/src/cache/ftcmanag.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcmanag.c                                                             */
-/*                                                                         */
-/*    FreeType Cache Manager (body).                                       */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcmanag.c
+ *
+ *   FreeType Cache Manager (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -26,10 +26,6 @@
 #include "ftccback.h"
 #include "ftcerror.h"
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "cache system does not support PIC yet"
-#endif
-
 
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cache
diff --git a/src/cache/ftcmanag.h b/src/cache/ftcmanag.h
index b4b4755..8d0a1e1 100644
--- a/src/cache/ftcmanag.h
+++ b/src/cache/ftcmanag.h
@@ -1,47 +1,47 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcmanag.h                                                             */
-/*                                                                         */
-/*    FreeType Cache Manager (specification).                              */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcmanag.h
+ *
+ *   FreeType Cache Manager (specification).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* A cache manager is in charge of the following:                        */
-  /*                                                                       */
-  /*  - Maintain a mapping between generic FTC_FaceIDs and live FT_Face    */
-  /*    objects.  The mapping itself is performed through a user-provided  */
-  /*    callback.  However, the manager maintains a small cache of FT_Face */
-  /*    and FT_Size objects in order to speed up things considerably.      */
-  /*                                                                       */
-  /*  - Manage one or more cache objects.  Each cache is in charge of      */
-  /*    holding a varying number of `cache nodes'.  Each cache node        */
-  /*    represents a minimal amount of individually accessible cached      */
-  /*    data.  For example, a cache node can be an FT_Glyph image          */
-  /*    containing a vector outline, or some glyph metrics, or anything    */
-  /*    else.                                                              */
-  /*                                                                       */
-  /*    Each cache node has a certain size in bytes that is added to the   */
-  /*    total amount of `cache memory' within the manager.                 */
-  /*                                                                       */
-  /*    All cache nodes are located in a global LRU list, where the oldest */
-  /*    node is at the tail of the list.                                   */
-  /*                                                                       */
-  /*    Each node belongs to a single cache, and includes a reference      */
-  /*    count to avoid destroying it (due to caching).                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * A cache manager is in charge of the following:
+   *
+   * - Maintain a mapping between generic FTC_FaceIDs and live FT_Face
+   *   objects.  The mapping itself is performed through a user-provided
+   *   callback.  However, the manager maintains a small cache of FT_Face
+   *   and FT_Size objects in order to speed up things considerably.
+   *
+   * - Manage one or more cache objects.  Each cache is in charge of
+   *   holding a varying number of `cache nodes'.  Each cache node
+   *   represents a minimal amount of individually accessible cached
+   *   data.  For example, a cache node can be an FT_Glyph image
+   *   containing a vector outline, or some glyph metrics, or anything
+   *   else.
+   *
+   *   Each cache node has a certain size in bytes that is added to the
+   *   total amount of `cache memory' within the manager.
+   *
+   *   All cache nodes are located in a global LRU list, where the oldest
+   *   node is at the tail of the list.
+   *
+   *   Each node belongs to a single cache, and includes a reference
+   *   count to avoid destroying it (due to caching).
+   *
+   */
 
 
   /*************************************************************************/
@@ -72,12 +72,12 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    cache_subsystem                                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @Section:
+   *   cache_subsystem
+   *
+   */
 
 
 #define FTC_MAX_FACES_DEFAULT  2
@@ -110,27 +110,28 @@
   } FTC_ManagerRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FTC_Manager_Compress                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used to check the state of the cache manager if   */
-  /*    its `num_bytes' field is greater than its `max_bytes' field.  It   */
-  /*    will flush as many old cache nodes as possible (ignoring cache     */
-  /*    nodes with a non-zero reference count).                            */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    manager :: A handle to the cache manager.                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Client applications should not call this function directly.  It is */
-  /*    normally invoked by specific cache implementations.                */
-  /*                                                                       */
-  /*    The reason this function is exported is to allow client-specific   */
-  /*    cache classes.                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   FTC_Manager_Compress
+   *
+   * @Description:
+   *   This function is used to check the state of the cache manager if
+   *   its `num_bytes' field is greater than its `max_bytes' field.  It
+   *   will flush as many old cache nodes as possible (ignoring cache
+   *   nodes with a non-zero reference count).
+   *
+   * @InOut:
+   *   manager ::
+   *     A handle to the cache manager.
+   *
+   * @Note:
+   *   Client applications should not call this function directly.  It is
+   *   normally invoked by specific cache implementations.
+   *
+   *   The reason this function is exported is to allow client-specific
+   *   cache classes.
+   */
   FT_LOCAL( void )
   FTC_Manager_Compress( FTC_Manager  manager );
 
diff --git a/src/cache/ftcmru.c b/src/cache/ftcmru.c
index 1087be4..c704f4e 100644
--- a/src/cache/ftcmru.c
+++ b/src/cache/ftcmru.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcmru.c                                                               */
-/*                                                                         */
-/*    FreeType MRU support (body).                                         */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcmru.c
+ *
+ *   FreeType MRU support (body).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/cache/ftcmru.h b/src/cache/ftcmru.h
index 82396b9..936c66e 100644
--- a/src/cache/ftcmru.h
+++ b/src/cache/ftcmru.h
@@ -1,43 +1,43 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcmru.h                                                               */
-/*                                                                         */
-/*    Simple MRU list-cache (specification).                               */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcmru.h
+ *
+ *   Simple MRU list-cache (specification).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* An MRU is a list that cannot hold more than a certain number of       */
-  /* elements (`max_elements').  All elements in the list are sorted in    */
-  /* least-recently-used order, i.e., the `oldest' element is at the tail  */
-  /* of the list.                                                          */
-  /*                                                                       */
-  /* When doing a lookup (either through `Lookup()' or `Lookup_Node()'),   */
-  /* the list is searched for an element with the corresponding key.  If   */
-  /* it is found, the element is moved to the head of the list and is      */
-  /* returned.                                                             */
-  /*                                                                       */
-  /* If no corresponding element is found, the lookup routine will try to  */
-  /* obtain a new element with the relevant key.  If the list is already   */
-  /* full, the oldest element from the list is discarded and replaced by a */
-  /* new one; a new element is added to the list otherwise.                */
-  /*                                                                       */
-  /* Note that it is possible to pre-allocate the element list nodes.      */
-  /* This is handy if `max_elements' is sufficiently small, as it saves    */
-  /* allocations/releases during the lookup process.                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * An MRU is a list that cannot hold more than a certain number of
+   * elements (`max_elements').  All elements in the list are sorted in
+   * least-recently-used order, i.e., the `oldest' element is at the tail
+   * of the list.
+   *
+   * When doing a lookup (either through `Lookup()' or `Lookup_Node()'),
+   * the list is searched for an element with the corresponding key.  If
+   * it is found, the element is moved to the head of the list and is
+   * returned.
+   *
+   * If no corresponding element is found, the lookup routine will try to
+   * obtain a new element with the relevant key.  If the list is already
+   * full, the oldest element from the list is discarded and replaced by a
+   * new one; a new element is added to the list otherwise.
+   *
+   * Note that it is possible to pre-allocate the element list nodes.
+   * This is handy if `max_elements' is sufficiently small, as it saves
+   * allocations/releases during the lookup process.
+   *
+   */
 
 
 #ifndef FTCMRU_H_
diff --git a/src/cache/ftcsbits.c b/src/cache/ftcsbits.c
index 018f1ec..c802bf0 100644
--- a/src/cache/ftcsbits.c
+++ b/src/cache/ftcsbits.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcsbits.c                                                             */
-/*                                                                         */
-/*    FreeType sbits manager (body).                                       */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcsbits.c
+ *
+ *   FreeType sbits manager (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -91,14 +91,14 @@
 
 
   /*
-   *  This function tries to load a small bitmap within a given FTC_SNode.
-   *  Note that it returns a non-zero error code _only_ in the case of
-   *  out-of-memory condition.  For all other errors (e.g., corresponding
-   *  to a bad font file), this function will mark the sbit as `unavailable'
-   *  and return a value of 0.
+   * This function tries to load a small bitmap within a given FTC_SNode.
+   * Note that it returns a non-zero error code _only_ in the case of
+   * out-of-memory condition.  For all other errors (e.g., corresponding
+   * to a bad font file), this function will mark the sbit as `unavailable'
+   * and return a value of 0.
    *
-   *  You should also read the comment within the @ftc_snode_compare
-   *  function below to see how out-of-memory is handled during a lookup.
+   * You should also read the comment within the @ftc_snode_compare
+   * function below to see how out-of-memory is handled during a lookup.
    */
   static FT_Error
   ftc_snode_load( FTC_SNode    snode,
@@ -347,34 +347,34 @@
 
 
       /*
-       *  The following code illustrates what to do when you want to
-       *  perform operations that may fail within a lookup function.
+       * The following code illustrates what to do when you want to
+       * perform operations that may fail within a lookup function.
        *
-       *  Here, we want to load a small bitmap on-demand; we thus
-       *  need to call the `ftc_snode_load' function which may return
-       *  a non-zero error code only when we are out of memory (OOM).
+       * Here, we want to load a small bitmap on-demand; we thus
+       * need to call the `ftc_snode_load' function which may return
+       * a non-zero error code only when we are out of memory (OOM).
        *
-       *  The correct thing to do is to use @FTC_CACHE_TRYLOOP and
-       *  @FTC_CACHE_TRYLOOP_END in order to implement a retry loop
-       *  that is capable of flushing the cache incrementally when
-       *  an OOM errors occur.
+       * The correct thing to do is to use @FTC_CACHE_TRYLOOP and
+       * @FTC_CACHE_TRYLOOP_END in order to implement a retry loop
+       * that is capable of flushing the cache incrementally when
+       * an OOM errors occur.
        *
-       *  However, we need to `lock' the node before this operation to
-       *  prevent it from being flushed within the loop.
+       * However, we need to `lock' the node before this operation to
+       * prevent it from being flushed within the loop.
        *
-       *  When we exit the loop, we unlock the node, then check the `error'
-       *  variable.  If it is non-zero, this means that the cache was
-       *  completely flushed and that no usable memory was found to load
-       *  the bitmap.
+       * When we exit the loop, we unlock the node, then check the `error'
+       * variable.  If it is non-zero, this means that the cache was
+       * completely flushed and that no usable memory was found to load
+       * the bitmap.
        *
-       *  We then prefer to return a value of 0 (i.e., NO MATCH).  This
-       *  ensures that the caller will try to allocate a new node.
-       *  This operation consequently _fail_ and the lookup function
-       *  returns the appropriate OOM error code.
+       * We then prefer to return a value of 0 (i.e., NO MATCH).  This
+       * ensures that the caller will try to allocate a new node.
+       * This operation consequently _fail_ and the lookup function
+       * returns the appropriate OOM error code.
        *
-       *  Note that `buffer == NULL && width == 255' is a hack used to
-       *  tag `unavailable' bitmaps in the array.  We should never try
-       *  to load these.
+       * Note that `buffer == NULL && width == 255' is a hack used to
+       * tag `unavailable' bitmaps in the array.  We should never try
+       * to load these.
        *
        */
 
diff --git a/src/cache/ftcsbits.h b/src/cache/ftcsbits.h
index 206a1bb..e698e35 100644
--- a/src/cache/ftcsbits.h
+++ b/src/cache/ftcsbits.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcsbits.h                                                             */
-/*                                                                         */
-/*    A small-bitmap cache (specification).                                */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcsbits.h
+ *
+ *   A small-bitmap cache (specification).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTCSBITS_H_
diff --git a/src/cff/cff.c b/src/cff/cff.c
index 1a755d5..6c7e2c9 100644
--- a/src/cff/cff.c
+++ b/src/cff/cff.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cff.c                                                                  */
-/*                                                                         */
-/*    FreeType OpenType driver component (body only).                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cff.c
+ *
+ *   FreeType OpenType driver component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
@@ -23,7 +23,6 @@
 #include "cffdrivr.c"
 #include "cffgload.c"
 #include "cffparse.c"
-#include "cffpic.c"
 #include "cffload.c"
 #include "cffobjs.c"
 
diff --git a/src/cff/cffcmap.c b/src/cff/cffcmap.c
index e45ae11..f7316e1 100644
--- a/src/cff/cffcmap.c
+++ b/src/cff/cffcmap.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffcmap.c                                                              */
-/*                                                                         */
-/*    CFF character mapping table (cmap) support (body).                   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffcmap.c
+ *
+ *   CFF character mapping table (cmap) support (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/cff/cffcmap.h b/src/cff/cffcmap.h
index 856a43d..5cf86ac 100644
--- a/src/cff/cffcmap.h
+++ b/src/cff/cffcmap.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffcmap.h                                                              */
-/*                                                                         */
-/*    CFF character mapping table (cmap) support (specification).          */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffcmap.h
+ *
+ *   CFF character mapping table (cmap) support (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFCMAP_H_
diff --git a/src/cff/cffdrivr.c b/src/cff/cffdrivr.c
index df89684..997a734 100644
--- a/src/cff/cffdrivr.c
+++ b/src/cff/cffdrivr.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffdrivr.c                                                             */
-/*                                                                         */
-/*    OpenType font driver implementation (body).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffdrivr.c
+ *
+ *   OpenType font driver implementation (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -42,7 +42,6 @@
 #endif
 
 #include "cfferrs.h"
-#include "cffpic.h"
 
 #include FT_SERVICE_FONT_FORMAT_H
 #include FT_SERVICE_GLYPH_DICT_H
@@ -50,12 +49,12 @@
 #include FT_DRIVER_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cffdriver
 
@@ -73,38 +72,42 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_get_kerning                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A driver method used to return the kerning vector between two      */
-  /*    glyphs of the same face.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: A handle to the source face object.                 */
-  /*                                                                       */
-  /*    left_glyph  :: The index of the left glyph in the kern pair.       */
-  /*                                                                       */
-  /*    right_glyph :: The index of the right glyph in the kern pair.      */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    kerning     :: The kerning vector.  This is in font units for      */
-  /*                   scalable formats, and in pixels for fixed-sizes     */
-  /*                   formats.                                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only horizontal layouts (left-to-right & right-to-left) are        */
-  /*    supported by this function.  Other layouts, or more sophisticated  */
-  /*    kernings, are out of scope of this method (the basic driver        */
-  /*    interface is meant to be simple).                                  */
-  /*                                                                       */
-  /*    They can be implemented by format-specific interfaces.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_get_kerning
+   *
+   * @Description:
+   *   A driver method used to return the kerning vector between two
+   *   glyphs of the same face.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   left_glyph ::
+   *     The index of the left glyph in the kern pair.
+   *
+   *   right_glyph ::
+   *     The index of the right glyph in the kern pair.
+   *
+   * @Output:
+   *   kerning ::
+   *     The kerning vector.  This is in font units for
+   *     scalable formats, and in pixels for fixed-sizes
+   *     formats.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   *
+   * @Note:
+   *   Only horizontal layouts (left-to-right & right-to-left) are
+   *   supported by this function.  Other layouts, or more sophisticated
+   *   kernings, are out of scope of this method (the basic driver
+   *   interface is meant to be simple).
+   *
+   *   They can be implemented by format-specific interfaces.
+   */
   FT_CALLBACK_DEF( FT_Error )
   cff_get_kerning( FT_Face     ttface,          /* TT_Face */
                    FT_UInt     left_glyph,
@@ -125,32 +128,36 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_glyph_load                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A driver method used to load a glyph within a given glyph slot.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    slot        :: A handle to the target slot object where the glyph  */
-  /*                   will be loaded.                                     */
-  /*                                                                       */
-  /*    size        :: A handle to the source face size at which the glyph */
-  /*                   must be scaled, loaded, etc.                        */
-  /*                                                                       */
-  /*    glyph_index :: The index of the glyph in the font file.            */
-  /*                                                                       */
-  /*    load_flags  :: A flag indicating what to load for this glyph.  The */
-  /*                   FT_LOAD_??? constants can be used to control the    */
-  /*                   glyph loading process (e.g., whether the outline    */
-  /*                   should be scaled, whether to load bitmaps or not,   */
-  /*                   whether to hint the outline, etc).                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_glyph_load
+   *
+   * @Description:
+   *   A driver method used to load a glyph within a given glyph slot.
+   *
+   * @Input:
+   *   slot ::
+   *     A handle to the target slot object where the glyph
+   *     will be loaded.
+   *
+   *   size ::
+   *     A handle to the source face size at which the glyph
+   *     must be scaled, loaded, etc.
+   *
+   *   glyph_index ::
+   *     The index of the glyph in the font file.
+   *
+   *   load_flags ::
+   *     A flag indicating what to load for this glyph.  The
+   *     FT_LOAD_??? constants can be used to control the
+   *     glyph loading process (e.g., whether the outline
+   *     should be scaled, whether to load bitmaps or not,
+   *     whether to hint the outline, etc).
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_CALLBACK_DEF( FT_Error )
   cff_glyph_load( FT_GlyphSlot  cffslot,      /* CFF_GlyphSlot */
                   FT_Size       cffsize,      /* CFF_Size      */
@@ -302,7 +309,7 @@
 
 
   /*
-   *  GLYPH DICT SERVICE
+   * GLYPH DICT SERVICE
    *
    */
 
@@ -446,7 +453,7 @@
 
 
   /*
-   *  POSTSCRIPT INFO SERVICE
+   * POSTSCRIPT INFO SERVICE
    *
    */
 
@@ -593,7 +600,7 @@
 
 
   /*
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -654,8 +661,8 @@
     FT_Library  library = FT_FACE_LIBRARY( face );
 
 
-    if ( cmap->clazz != &CFF_CMAP_ENCODING_CLASS_REC_GET &&
-         cmap->clazz != &CFF_CMAP_UNICODE_CLASS_REC_GET  )
+    if ( cmap->clazz != &cff_cmap_encoding_class_rec &&
+         cmap->clazz != &cff_cmap_unicode_class_rec  )
     {
       FT_Module           sfnt    = FT_Get_Module( library, "sfnt" );
       FT_Service_TTCMaps  service =
@@ -682,7 +689,7 @@
 
 
   /*
-   *  CID INFO SERVICE
+   * CID INFO SERVICE
    *
    */
   static FT_Error
@@ -788,7 +795,7 @@
         goto Fail;
       }
 
-      if ( glyph_index > cff->num_glyphs )
+      if ( glyph_index >= cff->num_glyphs )
       {
         error = FT_THROW( Invalid_Argument );
         goto Fail;
@@ -818,7 +825,7 @@
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
 
@@ -832,7 +839,7 @@
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
   /*
-   *  MULTIPLE MASTER SERVICE
+   * MULTIPLE MASTER SERVICE
    *
    */
 
@@ -924,7 +931,7 @@
 
 
   /*
-   *  METRICS VARIATIONS SERVICE
+   * METRICS VARIATIONS SERVICE
    *
    */
 
@@ -968,7 +975,7 @@
 
 
   /*
-   *  CFFLOAD SERVICE
+   * CFFLOAD SERVICE
    *
    */
 
@@ -1001,54 +1008,54 @@
     cff_services,
 
     FT_SERVICE_ID_FONT_FORMAT,          FT_FONT_FORMAT_CFF,
-    FT_SERVICE_ID_MULTI_MASTERS,        &CFF_SERVICE_MULTI_MASTERS_GET,
-    FT_SERVICE_ID_METRICS_VARIATIONS,   &CFF_SERVICE_METRICS_VAR_GET,
-    FT_SERVICE_ID_POSTSCRIPT_INFO,      &CFF_SERVICE_PS_INFO_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_GLYPH_DICT,           &CFF_SERVICE_GLYPH_DICT_GET,
-    FT_SERVICE_ID_TT_CMAP,              &CFF_SERVICE_GET_CMAP_INFO_GET,
-    FT_SERVICE_ID_CID,                  &CFF_SERVICE_CID_INFO_GET,
-    FT_SERVICE_ID_PROPERTIES,           &CFF_SERVICE_PROPERTIES_GET,
-    FT_SERVICE_ID_CFF_LOAD,             &CFF_SERVICE_CFF_LOAD_GET
+    FT_SERVICE_ID_MULTI_MASTERS,        &cff_service_multi_masters,
+    FT_SERVICE_ID_METRICS_VARIATIONS,   &cff_service_metrics_variations,
+    FT_SERVICE_ID_POSTSCRIPT_INFO,      &cff_service_ps_info,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
+    FT_SERVICE_ID_GLYPH_DICT,           &cff_service_glyph_dict,
+    FT_SERVICE_ID_TT_CMAP,              &cff_service_get_cmap_info,
+    FT_SERVICE_ID_CID,                  &cff_service_cid_info,
+    FT_SERVICE_ID_PROPERTIES,           &cff_service_properties,
+    FT_SERVICE_ID_CFF_LOAD,             &cff_service_cff_load
   )
 #elif !defined FT_CONFIG_OPTION_NO_GLYPH_NAMES
   FT_DEFINE_SERVICEDESCREC8(
     cff_services,
 
     FT_SERVICE_ID_FONT_FORMAT,          FT_FONT_FORMAT_CFF,
-    FT_SERVICE_ID_POSTSCRIPT_INFO,      &CFF_SERVICE_PS_INFO_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_GLYPH_DICT,           &CFF_SERVICE_GLYPH_DICT_GET,
-    FT_SERVICE_ID_TT_CMAP,              &CFF_SERVICE_GET_CMAP_INFO_GET,
-    FT_SERVICE_ID_CID,                  &CFF_SERVICE_CID_INFO_GET,
-    FT_SERVICE_ID_PROPERTIES,           &CFF_SERVICE_PROPERTIES_GET,
-    FT_SERVICE_ID_CFF_LOAD,             &CFF_SERVICE_CFF_LOAD_GET
+    FT_SERVICE_ID_POSTSCRIPT_INFO,      &cff_service_ps_info,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
+    FT_SERVICE_ID_GLYPH_DICT,           &cff_service_glyph_dict,
+    FT_SERVICE_ID_TT_CMAP,              &cff_service_get_cmap_info,
+    FT_SERVICE_ID_CID,                  &cff_service_cid_info,
+    FT_SERVICE_ID_PROPERTIES,           &cff_service_properties,
+    FT_SERVICE_ID_CFF_LOAD,             &cff_service_cff_load
   )
 #elif defined TT_CONFIG_OPTION_GX_VAR_SUPPORT
   FT_DEFINE_SERVICEDESCREC9(
     cff_services,
 
     FT_SERVICE_ID_FONT_FORMAT,          FT_FONT_FORMAT_CFF,
-    FT_SERVICE_ID_MULTI_MASTERS,        &CFF_SERVICE_MULTI_MASTERS_GET,
-    FT_SERVICE_ID_METRICS_VARIATIONS,   &CFF_SERVICE_METRICS_VAR_GET,
-    FT_SERVICE_ID_POSTSCRIPT_INFO,      &CFF_SERVICE_PS_INFO_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_TT_CMAP,              &CFF_SERVICE_GET_CMAP_INFO_GET,
-    FT_SERVICE_ID_CID,                  &CFF_SERVICE_CID_INFO_GET,
-    FT_SERVICE_ID_PROPERTIES,           &CFF_SERVICE_PROPERTIES_GET,
-    FT_SERVICE_ID_CFF_LOAD,             &CFF_SERVICE_CFF_LOAD_GET
+    FT_SERVICE_ID_MULTI_MASTERS,        &cff_service_multi_masters,
+    FT_SERVICE_ID_METRICS_VARIATIONS,   &cff_service_metrics_var,
+    FT_SERVICE_ID_POSTSCRIPT_INFO,      &cff_service_ps_info,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
+    FT_SERVICE_ID_TT_CMAP,              &cff_service_get_cmap_info,
+    FT_SERVICE_ID_CID,                  &cff_service_cid_info,
+    FT_SERVICE_ID_PROPERTIES,           &cff_service_properties,
+    FT_SERVICE_ID_CFF_LOAD,             &cff_service_cff_load
   )
 #else
   FT_DEFINE_SERVICEDESCREC7(
     cff_services,
 
     FT_SERVICE_ID_FONT_FORMAT,          FT_FONT_FORMAT_CFF,
-    FT_SERVICE_ID_POSTSCRIPT_INFO,      &CFF_SERVICE_PS_INFO_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_TT_CMAP,              &CFF_SERVICE_GET_CMAP_INFO_GET,
-    FT_SERVICE_ID_CID,                  &CFF_SERVICE_CID_INFO_GET,
-    FT_SERVICE_ID_PROPERTIES,           &CFF_SERVICE_PROPERTIES_GET,
-    FT_SERVICE_ID_CFF_LOAD,             &CFF_SERVICE_CFF_LOAD_GET
+    FT_SERVICE_ID_POSTSCRIPT_INFO,      &cff_service_ps_info,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
+    FT_SERVICE_ID_TT_CMAP,              &cff_service_get_cmap_info,
+    FT_SERVICE_ID_CID,                  &cff_service_cid_info,
+    FT_SERVICE_ID_PROPERTIES,           &cff_service_properties,
+    FT_SERVICE_ID_CFF_LOAD,             &cff_service_cff_load
   )
 #endif
 
@@ -1062,27 +1069,16 @@
     FT_Module_Interface  result;
 
 
-    /* CFF_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    if ( !driver )
-      return NULL;
-    library = driver->library;
-    if ( !library )
-      return NULL;
-#endif
-
-    result = ft_service_list_lookup( CFF_SERVICES_GET, module_interface );
+    result = ft_service_list_lookup( cff_services, module_interface );
     if ( result )
       return result;
 
-    /* `driver' is not yet evaluated in non-PIC mode */
-#ifndef FT_CONFIG_OPTION_PIC
+    /* `driver' is not yet evaluated */
     if ( !driver )
       return NULL;
     library = driver->library;
     if ( !library )
       return NULL;
-#endif
 
     /* we pass our request to the `sfnt' module */
     sfnt = FT_Get_Module( library, "sfnt" );
diff --git a/src/cff/cffdrivr.h b/src/cff/cffdrivr.h
index ad7c3ad..30d3e13 100644
--- a/src/cff/cffdrivr.h
+++ b/src/cff/cffdrivr.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffdrivr.h                                                             */
-/*                                                                         */
-/*    High-level OpenType driver interface (specification).                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffdrivr.h
+ *
+ *   High-level OpenType driver interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFDRIVER_H_
@@ -26,10 +26,8 @@
 
 FT_BEGIN_HEADER
 
-
   FT_DECLARE_DRIVER( cff_driver_class )
 
-
 FT_END_HEADER
 
 #endif /* CFFDRIVER_H_ */
diff --git a/src/cff/cfferrs.h b/src/cff/cfferrs.h
index b2e1bfa..b5ccc67 100644
--- a/src/cff/cfferrs.h
+++ b/src/cff/cfferrs.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cfferrs.h                                                              */
-/*                                                                         */
-/*    CFF error codes (specification only).                                */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cfferrs.h
+ *
+ *   CFF error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the CFF error enumeration constants.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the CFF error enumeration constants.
+   *
+   */
 
 #ifndef CFFERRS_H_
 #define CFFERRS_H_
diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c
index c58471c..88f5689 100644
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffgload.c                                                             */
-/*                                                                         */
-/*    OpenType Glyph Loader (body).                                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffgload.c
+ *
+ *   OpenType Glyph Loader (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -31,12 +31,12 @@
 #include "cfferrs.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cffgload
 
@@ -280,16 +280,16 @@
           glyph->root.outline.n_points   = 0;
           glyph->root.outline.n_contours = 0;
 
-          glyph->root.metrics.width  = (FT_Pos)metrics.width  << 6;
-          glyph->root.metrics.height = (FT_Pos)metrics.height << 6;
+          glyph->root.metrics.width  = (FT_Pos)metrics.width  * 64;
+          glyph->root.metrics.height = (FT_Pos)metrics.height * 64;
 
-          glyph->root.metrics.horiBearingX = (FT_Pos)metrics.horiBearingX << 6;
-          glyph->root.metrics.horiBearingY = (FT_Pos)metrics.horiBearingY << 6;
-          glyph->root.metrics.horiAdvance  = (FT_Pos)metrics.horiAdvance  << 6;
+          glyph->root.metrics.horiBearingX = (FT_Pos)metrics.horiBearingX * 64;
+          glyph->root.metrics.horiBearingY = (FT_Pos)metrics.horiBearingY * 64;
+          glyph->root.metrics.horiAdvance  = (FT_Pos)metrics.horiAdvance  * 64;
 
-          glyph->root.metrics.vertBearingX = (FT_Pos)metrics.vertBearingX << 6;
-          glyph->root.metrics.vertBearingY = (FT_Pos)metrics.vertBearingY << 6;
-          glyph->root.metrics.vertAdvance  = (FT_Pos)metrics.vertAdvance  << 6;
+          glyph->root.metrics.vertBearingX = (FT_Pos)metrics.vertBearingX * 64;
+          glyph->root.metrics.vertBearingY = (FT_Pos)metrics.vertBearingY * 64;
+          glyph->root.metrics.vertAdvance  = (FT_Pos)metrics.vertAdvance  * 64;
 
           glyph->root.format = FT_GLYPH_FORMAT_BITMAP;
 
diff --git a/src/cff/cffgload.h b/src/cff/cffgload.h
index 803f397..5a486cd 100644
--- a/src/cff/cffgload.h
+++ b/src/cff/cffgload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffgload.h                                                             */
-/*                                                                         */
-/*    OpenType Glyph Loader (specification).                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffgload.h
+ *
+ *   OpenType Glyph Loader (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFGLOAD_H_
diff --git a/src/cff/cffload.c b/src/cff/cffload.c
index ba49793..015b2c8 100644
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffload.c                                                              */
-/*                                                                         */
-/*    OpenType and CFF data/program tables loader (body).                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffload.c
+ *
+ *   OpenType and CFF data/program tables loader (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -196,12 +196,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cffload
 
@@ -1398,7 +1398,14 @@
     FT_UInt       master;
 
 
-    FT_ASSERT( lenNDV == 0 || NDV );
+    /* protect against malformed fonts */
+    if ( !( lenNDV == 0 || NDV ) )
+    {
+      FT_TRACE4(( " cff_blend_build_vector:"
+                  " Malformed Normalize Design Vector data\n" ));
+      error = FT_THROW( Invalid_File_Format );
+      goto Exit;
+    }
 
     blend->builtBV = FALSE;
 
@@ -1933,6 +1940,24 @@
     else if ( priv->initial_random_seed == 0 )
       priv->initial_random_seed = 987654321;
 
+    /* some sanitizing to avoid overflows later on; */
+    /* the upper limits are ad-hoc values           */
+    if ( priv->blue_shift > 1000 || priv->blue_shift < 0 )
+    {
+      FT_TRACE2(( "cff_load_private_dict:"
+                  " setting unlikely BlueShift value %d to default (7)\n",
+                  priv->blue_shift ));
+      priv->blue_shift = 7;
+    }
+
+    if ( priv->blue_fuzz > 1000 || priv->blue_fuzz < 0 )
+    {
+      FT_TRACE2(( "cff_load_private_dict:"
+                  " setting unlikely BlueFuzz value %d to default (1)\n",
+                  priv->blue_fuzz ));
+      priv->blue_fuzz = 1;
+    }
+
   Exit:
     /* clean up */
     cff_blend_clear( subfont ); /* clear blend stack */
@@ -2062,13 +2087,13 @@
       /*
        * Initialize the random number generator.
        *
-       * . If we have a face-specific seed, use it.
+       * - If we have a face-specific seed, use it.
        *   If non-zero, update it to a positive value.
        *
-       * . Otherwise, use the seed from the CFF driver.
+       * - Otherwise, use the seed from the CFF driver.
        *   If non-zero, update it to a positive value.
        *
-       * . If the random value is zero, use the seed given by the subfont's
+       * - If the random value is zero, use the seed given by the subfont's
        *   `initialRandomSeed' value.
        *
        */
diff --git a/src/cff/cffload.h b/src/cff/cffload.h
index 14d14e2..7ba9e45 100644
--- a/src/cff/cffload.h
+++ b/src/cff/cffload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffload.h                                                              */
-/*                                                                         */
-/*    OpenType & CFF data/program tables loader (specification).           */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffload.h
+ *
+ *   OpenType & CFF data/program tables loader (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFLOAD_H_
diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c
index a2d7aec..b3f0f99 100644
--- a/src/cff/cffobjs.c
+++ b/src/cff/cffobjs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffobjs.c                                                              */
-/*                                                                         */
-/*    OpenType objects manager (body).                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffobjs.c
+ *
+ *   OpenType objects manager (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -37,7 +37,6 @@
 #include "cffobjs.h"
 #include "cffload.h"
 #include "cffcmap.h"
-#include "cffpic.h"
 
 #include "cfferrs.h"
 
@@ -45,21 +44,21 @@
 #include FT_SERVICE_CFF_TABLE_LOAD_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cffobjs
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SIZE FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SIZE FUNCTIONS
+   *
+   */
 
 
   static PSH_Globals_Funcs
@@ -341,11 +340,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SLOT  FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SLOT  FUNCTIONS
+   *
+   */
 
   FT_LOCAL_DEF( void )
   cff_slot_done( FT_GlyphSlot  slot )
@@ -383,11 +382,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                           FACE  FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                          FACE  FUNCTIONS
+   *
+   */
 
   static FT_String*
   cff_strcpy( FT_Memory         memory,
@@ -965,10 +964,10 @@
           /* assume "Regular" style if we don't know better */
           cffface->style_name = cff_strcpy( memory, (char *)"Regular" );
 
-        /*******************************************************************/
-        /*                                                                 */
-        /* Compute face flags.                                             */
-        /*                                                                 */
+        /********************************************************************
+         *
+         * Compute face flags.
+         */
         flags = FT_FACE_FLAG_SCALABLE   | /* scalable outlines */
                 FT_FACE_FLAG_HORIZONTAL | /* horizontal data   */
                 FT_FACE_FLAG_HINTER;      /* has native hinter */
@@ -989,10 +988,10 @@
 
         cffface->face_flags |= flags;
 
-        /*******************************************************************/
-        /*                                                                 */
-        /* Compute style flags.                                            */
-        /*                                                                 */
+        /********************************************************************
+         *
+         * Compute style flags.
+         */
         flags = 0;
 
         if ( dict->italic_angle )
@@ -1028,10 +1027,10 @@
       if ( dict->cid_registry != 0xFFFFU && pure_cff )
         cffface->face_flags |= FT_FACE_FLAG_CID_KEYED;
 
-      /*******************************************************************/
-      /*                                                                 */
-      /* Compute char maps.                                              */
-      /*                                                                 */
+      /********************************************************************
+       *
+       * Compute char maps.
+       */
 
       /* Try to synthesize a Unicode charmap if there is none available */
       /* already.  If an OpenType font contains a Unicode "cmap", we    */
@@ -1070,7 +1069,7 @@
 
         nn = (FT_UInt)cffface->num_charmaps;
 
-        error = FT_CMap_New( &CFF_CMAP_UNICODE_CLASS_REC_GET, NULL,
+        error = FT_CMap_New( &cff_cmap_unicode_class_rec, NULL,
                              &cmaprec, NULL );
         if ( error                                      &&
              FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
@@ -1094,19 +1093,19 @@
           {
             cmaprec.encoding_id = TT_ADOBE_ID_STANDARD;
             cmaprec.encoding    = FT_ENCODING_ADOBE_STANDARD;
-            clazz               = &CFF_CMAP_ENCODING_CLASS_REC_GET;
+            clazz               = &cff_cmap_encoding_class_rec;
           }
           else if ( encoding->offset == 1 )
           {
             cmaprec.encoding_id = TT_ADOBE_ID_EXPERT;
             cmaprec.encoding    = FT_ENCODING_ADOBE_EXPERT;
-            clazz               = &CFF_CMAP_ENCODING_CLASS_REC_GET;
+            clazz               = &cff_cmap_encoding_class_rec;
           }
           else
           {
             cmaprec.encoding_id = TT_ADOBE_ID_CUSTOM;
             cmaprec.encoding    = FT_ENCODING_ADOBE_CUSTOM;
-            clazz               = &CFF_CMAP_ENCODING_CLASS_REC_GET;
+            clazz               = &cff_cmap_encoding_class_rec;
           }
 
           error = FT_CMap_New( clazz, NULL, &cmaprec, NULL );
diff --git a/src/cff/cffobjs.h b/src/cff/cffobjs.h
index 616a25b..2beb11b 100644
--- a/src/cff/cffobjs.h
+++ b/src/cff/cffobjs.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffobjs.h                                                              */
-/*                                                                         */
-/*    OpenType objects manager (specification).                            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffobjs.h
+ *
+ *   OpenType objects manager (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFOBJS_H_
@@ -51,10 +51,10 @@
   cff_slot_init( FT_GlyphSlot  slot );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Face functions                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Face functions
+   */
   FT_LOCAL( FT_Error )
   cff_face_init( FT_Stream      stream,
                  FT_Face        face,           /* CFF_Face */
@@ -66,10 +66,10 @@
   cff_face_done( FT_Face  face );               /* CFF_Face */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Driver functions                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Driver functions
+   */
   FT_LOCAL( FT_Error )
   cff_driver_init( FT_Module  module );         /* PS_Driver */
 
diff --git a/src/cff/cffparse.c b/src/cff/cffparse.c
index b9611cf..b6f5dae 100644
--- a/src/cff/cffparse.c
+++ b/src/cff/cffparse.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffparse.c                                                             */
-/*                                                                         */
-/*    CFF token stream parser (body)                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffparse.c
+ *
+ *   CFF token stream parser (body)
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -24,16 +24,15 @@
 #include FT_INTERNAL_POSTSCRIPT_AUX_H
 
 #include "cfferrs.h"
-#include "cffpic.h"
 #include "cffload.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cffparse
 
@@ -605,7 +604,6 @@
     FT_Vector*       offset = &dict->font_offset;
     FT_ULong*        upm    = &dict->units_per_em;
     FT_Byte**        data   = parser->stack;
-    FT_Error         error  = FT_ERR( Stack_Underflow );
 
 
     if ( parser->top >= parser->stack + 6 )
@@ -617,8 +615,6 @@
       int      i;
 
 
-      error = FT_Err_Ok;
-
       dict->has_font_matrix = TRUE;
 
       /* We expect a well-formed font matrix, this is, the matrix elements */
@@ -647,22 +643,11 @@
            ( max_scaling - min_scaling ) < 0 ||
            ( max_scaling - min_scaling ) > 9 )
       {
-        /* Return default matrix in case of unlikely values. */
-
         FT_TRACE1(( "cff_parse_font_matrix:"
                     " strange scaling values (minimum %d, maximum %d),\n"
                     "                      "
                     " using default matrix\n", min_scaling, max_scaling ));
-
-        matrix->xx = 0x10000L;
-        matrix->yx = 0;
-        matrix->xy = 0;
-        matrix->yy = 0x10000L;
-        offset->x  = 0;
-        offset->y  = 0;
-        *upm       = 1;
-
-        goto Exit;
+        goto Unlikely;
       }
 
       for ( i = 0; i < 6; i++ )
@@ -709,10 +694,31 @@
                   (double)matrix->yy / *upm / 65536,
                   (double)offset->x  / *upm / 65536,
                   (double)offset->y  / *upm / 65536 ));
-    }
 
-  Exit:
-    return error;
+      if ( !FT_Matrix_Check( matrix ) )
+      {
+        FT_TRACE1(( "cff_parse_font_matrix:"
+                    " degenerate values, using default matrix\n" ));
+        goto Unlikely;
+      }
+
+      return FT_Err_Ok;
+    }
+    else
+      return FT_THROW( Stack_Underflow );
+
+  Unlikely:
+    /* Return default matrix in case of unlikely values. */
+
+    matrix->xx = 0x10000L;
+    matrix->yx = 0;
+    matrix->xy = 0;
+    matrix->yy = 0x10000L;
+    offset->x  = 0;
+    offset->y  = 0;
+    *upm       = 1;
+
+    return FT_Err_Ok;
   }
 
 
@@ -1003,9 +1009,6 @@
           CFF_FIELD( code, name, id, cff_kind_bool )
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
-
 #undef  CFF_FIELD
 #undef  CFF_FIELD_DELTA
 
@@ -1118,184 +1121,6 @@
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-
-  void
-  FT_Destroy_Class_cff_field_handlers( FT_Library          library,
-                                       CFF_Field_Handler*  clazz )
-  {
-    FT_Memory  memory = library->memory;
-
-
-    if ( clazz )
-      FT_FREE( clazz );
-  }
-
-
-  FT_Error
-  FT_Create_Class_cff_field_handlers( FT_Library           library,
-                                      CFF_Field_Handler**  output_class )
-  {
-    CFF_Field_Handler*  clazz  = NULL;
-    FT_Error            error;
-    FT_Memory           memory = library->memory;
-
-    int  i = 0;
-
-
-#undef CFF_FIELD
-#define CFF_FIELD( code, name, id, kind ) i++;
-#undef CFF_FIELD_DELTA
-#define CFF_FIELD_DELTA( code, name, max, id ) i++;
-#undef CFF_FIELD_CALLBACK
-#define CFF_FIELD_CALLBACK( code, name, id ) i++;
-#undef CFF_FIELD_BLEND
-#define CFF_FIELD_BLEND( code, id ) i++;
-
-#include "cfftoken.h"
-
-    i++; /* { 0, 0, 0, 0, 0, 0, 0 } */
-
-    if ( FT_ALLOC( clazz, sizeof ( CFF_Field_Handler ) * i ) )
-      return error;
-
-    i = 0;
-
-
-#ifndef FT_DEBUG_LEVEL_TRACE
-
-
-#undef CFF_FIELD_CALLBACK
-#define CFF_FIELD_CALLBACK( code_, name_, id_ )        \
-          clazz[i].kind         = cff_kind_callback;   \
-          clazz[i].code         = code_ | CFFCODE;     \
-          clazz[i].offset       = 0;                   \
-          clazz[i].size         = 0;                   \
-          clazz[i].reader       = cff_parse_ ## name_; \
-          clazz[i].array_max    = 0;                   \
-          clazz[i].count_offset = 0;                   \
-          i++;
-
-#undef  CFF_FIELD
-#define CFF_FIELD( code_, name_, id_, kind_ )               \
-          clazz[i].kind         = kind_;                    \
-          clazz[i].code         = code_ | CFFCODE;          \
-          clazz[i].offset       = FT_FIELD_OFFSET( name_ ); \
-          clazz[i].size         = FT_FIELD_SIZE( name_ );   \
-          clazz[i].reader       = 0;                        \
-          clazz[i].array_max    = 0;                        \
-          clazz[i].count_offset = 0;                        \
-          i++;                                              \
-
-#undef  CFF_FIELD_DELTA
-#define CFF_FIELD_DELTA( code_, name_, max_, id_ )                  \
-          clazz[i].kind         = cff_kind_delta;                   \
-          clazz[i].code         = code_ | CFFCODE;                  \
-          clazz[i].offset       = FT_FIELD_OFFSET( name_ );         \
-          clazz[i].size         = FT_FIELD_SIZE_DELTA( name_ );     \
-          clazz[i].reader       = 0;                                \
-          clazz[i].array_max    = max_;                             \
-          clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
-          i++;
-
-#undef  CFF_FIELD_BLEND
-#define CFF_FIELD_BLEND( code_, id_ )              \
-          clazz[i].kind         = cff_kind_blend;  \
-          clazz[i].code         = code_ | CFFCODE; \
-          clazz[i].offset       = 0;               \
-          clazz[i].size         = 0;               \
-          clazz[i].reader       = cff_parse_blend; \
-          clazz[i].array_max    = 0;               \
-          clazz[i].count_offset = 0;               \
-          i++;
-
-#include "cfftoken.h"
-
-    clazz[i].kind         = 0;
-    clazz[i].code         = 0;
-    clazz[i].offset       = 0;
-    clazz[i].size         = 0;
-    clazz[i].reader       = 0;
-    clazz[i].array_max    = 0;
-    clazz[i].count_offset = 0;
-
-
-#else /* FT_DEBUG_LEVEL_TRACE */
-
-
-#undef CFF_FIELD_CALLBACK
-#define CFF_FIELD_CALLBACK( code_, name_, id_ )        \
-          clazz[i].kind         = cff_kind_callback;   \
-          clazz[i].code         = code_ | CFFCODE;     \
-          clazz[i].offset       = 0;                   \
-          clazz[i].size         = 0;                   \
-          clazz[i].reader       = cff_parse_ ## name_; \
-          clazz[i].array_max    = 0;                   \
-          clazz[i].count_offset = 0;                   \
-          clazz[i].id           = id_;                 \
-          i++;
-
-#undef  CFF_FIELD
-#define CFF_FIELD( code_, name_, id_, kind_ )               \
-          clazz[i].kind         = kind_;                    \
-          clazz[i].code         = code_ | CFFCODE;          \
-          clazz[i].offset       = FT_FIELD_OFFSET( name_ ); \
-          clazz[i].size         = FT_FIELD_SIZE( name_ );   \
-          clazz[i].reader       = 0;                        \
-          clazz[i].array_max    = 0;                        \
-          clazz[i].count_offset = 0;                        \
-          clazz[i].id           = id_;                      \
-          i++;                                              \
-
-#undef  CFF_FIELD_DELTA
-#define CFF_FIELD_DELTA( code_, name_, max_, id_ )                  \
-          clazz[i].kind         = cff_kind_delta;                   \
-          clazz[i].code         = code_ | CFFCODE;                  \
-          clazz[i].offset       = FT_FIELD_OFFSET( name_ );         \
-          clazz[i].size         = FT_FIELD_SIZE_DELTA( name_ );     \
-          clazz[i].reader       = 0;                                \
-          clazz[i].array_max    = max_;                             \
-          clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
-          clazz[i].id           = id_;                              \
-          i++;
-
-#undef  CFF_FIELD_BLEND
-#define CFF_FIELD_BLEND( code_, id_ )              \
-          clazz[i].kind         = cff_kind_blend;  \
-          clazz[i].code         = code_ | CFFCODE; \
-          clazz[i].offset       = 0;               \
-          clazz[i].size         = 0;               \
-          clazz[i].reader       = cff_parse_blend; \
-          clazz[i].array_max    = 0;               \
-          clazz[i].count_offset = 0;               \
-          clazz[i].id           = id_;             \
-          i++;
-
-#include "cfftoken.h"
-
-    clazz[i].kind         = 0;
-    clazz[i].code         = 0;
-    clazz[i].offset       = 0;
-    clazz[i].size         = 0;
-    clazz[i].reader       = 0;
-    clazz[i].array_max    = 0;
-    clazz[i].count_offset = 0;
-    clazz[i].id           = 0;
-
-
-#endif /* FT_DEBUG_LEVEL_TRACE */
-
-
-    *output_class = clazz;
-
-    return FT_Err_Ok;
-  }
-
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
   FT_LOCAL_DEF( FT_Error )
   cff_parser_run( CFF_Parser  parser,
                   FT_Byte*    start,
@@ -1321,6 +1146,7 @@
     {
       FT_UInt  v = *p;
 
+
       /* Opcode 31 is legacy MM T2 operator, not a number.      */
       /* Opcode 255 is reserved and should not appear in fonts; */
       /* it is used internally for CFF2 blends.                 */
@@ -1523,7 +1349,7 @@
         }
         code = code | parser->object_code;
 
-        for ( field = CFF_FIELD_HANDLERS_GET; field->kind; field++ )
+        for ( field = cff_field_handlers; field->kind; field++ )
         {
           if ( field->code == (FT_Int)code )
           {
diff --git a/src/cff/cffparse.h b/src/cff/cffparse.h
index 8a8caec..9cefab7 100644
--- a/src/cff/cffparse.h
+++ b/src/cff/cffparse.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffparse.h                                                             */
-/*                                                                         */
-/*    CFF token stream parser (specification)                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffparse.h
+ *
+ *   CFF token stream parser (specification)
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFPARSE_H_
@@ -33,11 +33,11 @@
 #define CFF_MAX_STACK_DEPTH  96
 
   /*
-   *  There are plans to remove the `maxstack' operator in a forthcoming
-   *  revision of the CFF2 specification, increasing the (then static) stack
-   *  size to 513.  By making the default stack size equal to the maximum
-   *  stack size, the operator is essentially disabled, which has the
-   *  desired effect in FreeType.
+   * There are plans to remove the `maxstack' operator in a forthcoming
+   * revision of the CFF2 specification, increasing the (then static) stack
+   * size to 513.  By making the default stack size equal to the maximum
+   * stack size, the operator is essentially disabled, which has the
+   * desired effect in FreeType.
    */
 #define CFF2_MAX_STACK      513
 #define CFF2_DEFAULT_STACK  513
diff --git a/src/cff/cffpic.c b/src/cff/cffpic.c
deleted file mode 100644
index 08b74c7..0000000
--- a/src/cff/cffpic.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffpic.c                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for cff module.      */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "cffcmap.h"
-#include "cffpic.h"
-#include "cfferrs.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from cffdrivr.c */
-  FT_Error
-  FT_Create_Class_cff_services( FT_Library           library,
-                                FT_ServiceDescRec**  output_class );
-  void
-  FT_Destroy_Class_cff_services( FT_Library          library,
-                                 FT_ServiceDescRec*  clazz );
-  void
-  FT_Init_Class_cff_service_ps_info( FT_Library             library,
-                                     FT_Service_PsInfoRec*  clazz );
-  void
-  FT_Init_Class_cff_service_glyph_dict( FT_Library                library,
-                                        FT_Service_GlyphDictRec*  clazz );
-  void
-  FT_Init_Class_cff_service_ps_name( FT_Library                 library,
-                                     FT_Service_PsFontNameRec*  clazz );
-  void
-  FT_Init_Class_cff_service_get_cmap_info( FT_Library              library,
-                                           FT_Service_TTCMapsRec*  clazz );
-  void
-  FT_Init_Class_cff_service_cid_info( FT_Library          library,
-                                      FT_Service_CIDRec*  clazz );
-
-  /* forward declaration of PIC init functions from cffparse.c */
-  FT_Error
-  FT_Create_Class_cff_field_handlers( FT_Library           library,
-                                      CFF_Field_Handler**  output_class );
-  void
-  FT_Destroy_Class_cff_field_handlers( FT_Library          library,
-                                       CFF_Field_Handler*  clazz );
-
-
-  void
-  cff_driver_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->cff )
-    {
-      CffModulePIC*  container = (CffModulePIC*)pic_container->cff;
-
-
-      if ( container->cff_services )
-        FT_Destroy_Class_cff_services( library,
-                                       container->cff_services );
-      container->cff_services = NULL;
-      if ( container->cff_field_handlers )
-        FT_Destroy_Class_cff_field_handlers(
-          library, container->cff_field_handlers );
-      container->cff_field_handlers = NULL;
-      FT_FREE( container );
-      pic_container->cff = NULL;
-    }
-  }
-
-
-  FT_Error
-  cff_driver_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    CffModulePIC*      container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC ( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->cff = container;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    error = FT_Create_Class_cff_services( library,
-                                          &container->cff_services );
-    if ( error )
-      goto Exit;
-
-    error = FT_Create_Class_cff_field_handlers(
-              library, &container->cff_field_handlers );
-    if ( error )
-      goto Exit;
-
-    FT_Init_Class_cff_service_ps_info(
-      library, &container->cff_service_ps_info );
-    FT_Init_Class_cff_service_glyph_dict(
-      library, &container->cff_service_glyph_dict );
-    FT_Init_Class_cff_service_ps_name(
-      library, &container->cff_service_ps_name );
-    FT_Init_Class_cff_service_get_cmap_info(
-      library, &container->cff_service_get_cmap_info );
-    FT_Init_Class_cff_service_cid_info(
-      library, &container->cff_service_cid_info );
-    FT_Init_Class_cff_cmap_encoding_class_rec(
-      library, &container->cff_cmap_encoding_class_rec );
-    FT_Init_Class_cff_cmap_unicode_class_rec(
-      library, &container->cff_cmap_unicode_class_rec );
-
-  Exit:
-    if ( error )
-      cff_driver_class_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/cff/cffpic.h b/src/cff/cffpic.h
deleted file mode 100644
index 8ba4203..0000000
--- a/src/cff/cffpic.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffpic.h                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for cff module.      */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef CFFPIC_H_
-#define CFFPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define CFF_SERVICE_PS_INFO_GET          cff_service_ps_info
-#define CFF_SERVICE_GLYPH_DICT_GET       cff_service_glyph_dict
-#define CFF_SERVICE_PS_NAME_GET          cff_service_ps_name
-#define CFF_SERVICE_GET_CMAP_INFO_GET    cff_service_get_cmap_info
-#define CFF_SERVICE_CID_INFO_GET         cff_service_cid_info
-#define CFF_SERVICE_PROPERTIES_GET       cff_service_properties
-#define CFF_SERVICES_GET                 cff_services
-#define CFF_SERVICE_MULTI_MASTERS_GET    cff_service_multi_masters
-#define CFF_SERVICE_METRICS_VAR_GET      cff_service_metrics_variations
-#define CFF_SERVICE_CFF_LOAD_GET         cff_service_cff_load
-#define CFF_CMAP_ENCODING_CLASS_REC_GET  cff_cmap_encoding_class_rec
-#define CFF_CMAP_UNICODE_CLASS_REC_GET   cff_cmap_unicode_class_rec
-#define CFF_FIELD_HANDLERS_GET           cff_field_handlers
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_SERVICE_GLYPH_DICT_H
-#include "cffparse.h"
-#include FT_SERVICE_POSTSCRIPT_INFO_H
-#include FT_SERVICE_POSTSCRIPT_NAME_H
-#include FT_SERVICE_TT_CMAP_H
-#include FT_SERVICE_CID_H
-#include FT_SERVICE_PROPERTIES_H
-#include FT_SERVICE_MULTIPLE_MASTERS_H
-#include FT_SERVICE_METRICS_VARIATIONS_H
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  CffModulePIC_
-  {
-    FT_ServiceDescRec*               cff_services;
-    CFF_Field_Handler*               cff_field_handlers;
-    FT_Service_PsInfoRec             cff_service_ps_info;
-    FT_Service_GlyphDictRec          cff_service_glyph_dict;
-    FT_Service_PsFontNameRec         cff_service_ps_name;
-    FT_Service_TTCMapsRec            cff_service_get_cmap_info;
-    FT_Service_CIDRec                cff_service_cid_info;
-    FT_Service_PropertiesRec         cff_service_properties;
-    FT_Service_MultiMastersRec       cff_service_multi_masters;
-    FT_Service_MetricsVariationsRec  cff_service_metrics_variations;
-    FT_Service_CFFLoadRec            cff_service_cff_load;
-    FT_CMap_ClassRec                 cff_cmap_encoding_class_rec;
-    FT_CMap_ClassRec                 cff_cmap_unicode_class_rec;
-
-  } CffModulePIC;
-
-
-#define GET_PIC( lib )                                    \
-          ( (CffModulePIC*)( (lib)->pic_container.cff ) )
-
-#define CFF_SERVICE_PS_INFO_GET                       \
-          ( GET_PIC( library )->cff_service_ps_info )
-#define CFF_SERVICE_GLYPH_DICT_GET                       \
-          ( GET_PIC( library )->cff_service_glyph_dict )
-#define CFF_SERVICE_PS_NAME_GET                       \
-          ( GET_PIC( library )->cff_service_ps_name )
-#define CFF_SERVICE_GET_CMAP_INFO_GET                       \
-          ( GET_PIC( library )->cff_service_get_cmap_info )
-#define CFF_SERVICE_CID_INFO_GET                       \
-          ( GET_PIC( library )->cff_service_cid_info )
-#define CFF_SERVICE_PROPERTIES_GET                       \
-          ( GET_PIC( library )->cff_service_properties )
-#define CFF_SERVICES_GET                       \
-          ( GET_PIC( library )->cff_services )
-#define CFF_SERVICE_MULTI_MASTERS_GET                       \
-          ( GET_PIC( library )->cff_service_multi_masters )
-#define CFF_SERVICE_METRICS_VAR_GET                              \
-          ( GET_PIC( library )->cff_service_metrics_variations )
-#define CFF_SERVICE_CFF_LOAD_GET                       \
-          ( GET_PIC( library )->cff_service_cff_load )
-#define CFF_CMAP_ENCODING_CLASS_REC_GET                       \
-          ( GET_PIC( library )->cff_cmap_encoding_class_rec )
-#define CFF_CMAP_UNICODE_CLASS_REC_GET                       \
-          ( GET_PIC( library )->cff_cmap_unicode_class_rec )
-#define CFF_FIELD_HANDLERS_GET                       \
-          ( GET_PIC( library )->cff_field_handlers )
-
-  /* see cffpic.c for the implementation */
-  void
-  cff_driver_class_pic_free( FT_Library  library );
-
-  FT_Error
-  cff_driver_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* CFFPIC_H_ */
-
-
-/* END */
diff --git a/src/cff/cfftoken.h b/src/cff/cfftoken.h
index fec1ca2..a7ccea8 100644
--- a/src/cff/cfftoken.h
+++ b/src/cff/cfftoken.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cfftoken.h                                                             */
-/*                                                                         */
-/*    CFF token definitions (specification only).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cfftoken.h
+ *
+ *   CFF token definitions (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #undef  FT_STRUCTURE
diff --git a/src/cff/rules.mk b/src/cff/rules.mk
index bce6729..0157a99 100644
--- a/src/cff/rules.mk
+++ b/src/cff/rules.mk
@@ -31,8 +31,7 @@
                $(CFF_DIR)/cffgload.c \
                $(CFF_DIR)/cffload.c  \
                $(CFF_DIR)/cffobjs.c  \
-               $(CFF_DIR)/cffparse.c \
-               $(CFF_DIR)/cffpic.c
+               $(CFF_DIR)/cffparse.c
 
 
 # CFF driver headers
diff --git a/src/cid/ciderrs.h b/src/cid/ciderrs.h
index a5a86e3..673b099 100644
--- a/src/cid/ciderrs.h
+++ b/src/cid/ciderrs.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ciderrs.h                                                              */
-/*                                                                         */
-/*    CID error codes (specification only).                                */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ciderrs.h
+ *
+ *   CID error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the CID error enumeration constants.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the CID error enumeration constants.
+   *
+   */
 
 #ifndef CIDERRS_H_
 #define CIDERRS_H_
diff --git a/src/cid/cidgload.c b/src/cid/cidgload.c
index d14f9a2..e47cd99 100644
--- a/src/cid/cidgload.c
+++ b/src/cid/cidgload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidgload.c                                                             */
-/*                                                                         */
-/*    CID-keyed Type1 Glyph Loader (body).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidgload.c
+ *
+ *   CID-keyed Type1 Glyph Loader (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -31,12 +31,12 @@
 #include "ciderrs.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cidgload
 
diff --git a/src/cid/cidgload.h b/src/cid/cidgload.h
index 4811852..21c5e16 100644
--- a/src/cid/cidgload.h
+++ b/src/cid/cidgload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidgload.h                                                             */
-/*                                                                         */
-/*    OpenType Glyph Loader (specification).                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidgload.h
+ *
+ *   OpenType Glyph Loader (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CIDGLOAD_H_
diff --git a/src/cid/cidload.c b/src/cid/cidload.c
index 27cd09b..1546926 100644
--- a/src/cid/cidload.c
+++ b/src/cid/cidload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidload.c                                                              */
-/*                                                                         */
-/*    CID-keyed Type1 font loader (body).                                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidload.c
+ *
+ *   CID-keyed Type1 font loader (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -21,18 +21,19 @@
 #include FT_CONFIG_CONFIG_H
 #include FT_MULTIPLE_MASTERS_H
 #include FT_INTERNAL_TYPE1_TYPES_H
+#include FT_INTERNAL_POSTSCRIPT_AUX_H
 
 #include "cidload.h"
 
 #include "ciderrs.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cidload
 
@@ -81,6 +82,8 @@
     /* if the keyword has a dedicated callback, call it */
     if ( keyword->type == T1_FIELD_TYPE_CALLBACK )
     {
+      FT_TRACE4(( "  %s", keyword->ident ));
+
       keyword->reader( (FT_Face)face, parser );
       error = parser->root.error;
       goto Exit;
@@ -131,6 +134,8 @@
       }
     }
 
+    FT_TRACE4(( "  %s", keyword->ident ));
+
     dummy_object = object;
 
     /* now, load the keyword data in the object's field(s) */
@@ -141,6 +146,9 @@
     else
       error = cid_parser_load_field( &loader->parser,
                                      keyword, &dummy_object );
+
+    FT_TRACE4(( "\n" ));
+
   Exit:
     return error;
   }
@@ -173,6 +181,14 @@
       if ( result < 6 )
         return FT_THROW( Invalid_File_Format );
 
+      FT_TRACE4(( " [%f %f %f %f %f %f]\n",
+                  (double)temp[0] / 65536 / 1000,
+                  (double)temp[1] / 65536 / 1000,
+                  (double)temp[2] / 65536 / 1000,
+                  (double)temp[3] / 65536 / 1000,
+                  (double)temp[4] / 65536 / 1000,
+                  (double)temp[5] / 65536 / 1000 ));
+
       temp_scale = FT_ABS( temp[3] );
 
       if ( temp_scale == 0 )
@@ -200,6 +216,13 @@
       matrix->xy = temp[2];
       matrix->yy = temp[3];
 
+      if ( !FT_Matrix_Check( matrix ) )
+      {
+        FT_ERROR(( "t1_parse_font_matrix: invalid font matrix\n" ));
+        parser->root.error = FT_THROW( Invalid_File_Format );
+        return FT_THROW( Invalid_File_Format );
+      }
+
       /* note that the font offsets are expressed in integer font units */
       offset->x  = temp[4] >> 16;
       offset->y  = temp[5] >> 16;
@@ -228,6 +251,8 @@
       goto Exit;
     }
 
+    FT_TRACE4(( " %d\n", num_dicts ));
+
     /*
      * A single entry in the FDArray must (at least) contain the following
      * structure elements.
@@ -263,14 +288,18 @@
 
       cid->num_dicts = num_dicts;
 
-      /* don't forget to set a few defaults */
+      /* set some default values (the same as for Type 1 fonts) */
       for ( n = 0; n < cid->num_dicts; n++ )
       {
         CID_FaceDict  dict = cid->font_dicts + n;
 
 
-        /* default value for lenIV */
-        dict->private_dict.lenIV = 4;
+        dict->private_dict.blue_shift       = 7;
+        dict->private_dict.blue_fuzz        = 1;
+        dict->private_dict.lenIV            = 4;
+        dict->private_dict.expansion_factor = (FT_Fixed)( 0.06 * 0x10000L );
+        dict->private_dict.blue_scale       = (FT_Fixed)(
+                                                0.039625 * 0x10000L * 1000 );
       }
     }
 
@@ -279,9 +308,9 @@
   }
 
 
-  /* by mistake, `expansion_factor' appears both in PS_PrivateRec */
+  /* By mistake, `expansion_factor' appears both in PS_PrivateRec */
   /* and CID_FaceDictRec (both are public header files and can't  */
-  /* changed); we simply copy the value                           */
+  /* changed).  We simply copy the value.                         */
 
   FT_CALLBACK_DEF( FT_Error )
   parse_expansion_factor( CID_Face     face,
@@ -296,12 +325,46 @@
 
       dict->expansion_factor              = cid_parser_to_fixed( parser, 0 );
       dict->private_dict.expansion_factor = dict->expansion_factor;
+
+      FT_TRACE4(( "%d\n", dict->expansion_factor ));
     }
 
     return FT_Err_Ok;
   }
 
 
+  /* By mistake, `CID_FaceDictRec' doesn't contain a field for the */
+  /* `FontName' keyword.  FreeType doesn't need it, but it is nice */
+  /* to catch it for producing better trace output.                */
+
+  FT_CALLBACK_DEF( FT_Error )
+  parse_font_name( CID_Face     face,
+                   CID_Parser*  parser )
+  {
+#ifdef FT_DEBUG_LEVEL_TRACE
+    if ( parser->num_dict >= 0 && parser->num_dict < face->cid.num_dicts )
+    {
+      T1_TokenRec  token;
+      FT_UInt      len;
+
+
+      cid_parser_to_token( parser, &token );
+
+      len = (FT_UInt)( token.limit - token.start );
+      if ( len )
+        FT_TRACE4(( " %.*s\n", len, token.start ));
+      else
+        FT_TRACE4(( " <no value>\n" ));
+    }
+#else
+    FT_UNUSED( face );
+    FT_UNUSED( parser );
+#endif
+
+    return FT_Err_Ok;
+  }
+
+
   static
   const T1_FieldRec  cid_field_records[] =
   {
@@ -311,6 +374,7 @@
     T1_FIELD_CALLBACK( "FDArray",         parse_fd_array, 0 )
     T1_FIELD_CALLBACK( "FontMatrix",      cid_parse_font_matrix, 0 )
     T1_FIELD_CALLBACK( "ExpansionFactor", parse_expansion_factor, 0 )
+    T1_FIELD_CALLBACK( "FontName",        parse_font_name, 0 )
 
     { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0, 0 }
   };
@@ -356,7 +420,16 @@
             /* if /FDArray was found, then cid->num_dicts is > 0, and */
             /* we can start increasing parser->num_dict               */
             if ( face->cid.num_dicts > 0 )
+            {
               parser->num_dict++;
+
+#ifdef FT_DEBUG_LEVEL_TRACE
+              FT_TRACE4(( " FontDict %d", parser->num_dict ));
+              if ( parser->num_dict > face->cid.num_dicts )
+                FT_TRACE4(( " (ignored)" ));
+              FT_TRACE4(( "\n" ));
+#endif
+            }
           }
         }
 
@@ -757,7 +830,7 @@
 
     if ( cid->fd_bytes < 0 || cid->gd_bytes < 1 )
     {
-      FT_ERROR(( "cid_parse_dict:"
+      FT_ERROR(( "cid_face_open:"
                  " Invalid `FDBytes' or `GDBytes' value\n" ));
       error = FT_THROW( Invalid_File_Format );
       goto Exit;
@@ -766,7 +839,7 @@
     /* allow at most 32bit offsets */
     if ( cid->fd_bytes > 4 || cid->gd_bytes > 4 )
     {
-      FT_ERROR(( "cid_parse_dict:"
+      FT_ERROR(( "cid_face_open:"
                  " Values of `FDBytes' or `GDBytes' larger than 4\n"
                  "               "
                  " are not supported\n" ));
@@ -782,17 +855,36 @@
       CID_FaceDict  dict = cid->font_dicts + n;
 
 
+      /* the upper limits are ad-hoc values */
+      if ( dict->private_dict.blue_shift > 1000 ||
+           dict->private_dict.blue_shift < 0    )
+      {
+        FT_TRACE2(( "cid_face_open:"
+                    " setting unlikely BlueShift value %d to default (7)\n",
+                    dict->private_dict.blue_shift ));
+        dict->private_dict.blue_shift = 7;
+      }
+
+      if ( dict->private_dict.blue_fuzz > 1000 ||
+           dict->private_dict.blue_fuzz < 0    )
+      {
+        FT_TRACE2(( "cid_face_open:"
+                    " setting unlikely BlueFuzz value %d to default (1)\n",
+                    dict->private_dict.blue_fuzz ));
+        dict->private_dict.blue_fuzz = 1;
+      }
+
       if ( dict->sd_bytes < 0                        ||
            ( dict->num_subrs && dict->sd_bytes < 1 ) )
       {
-        FT_ERROR(( "cid_parse_dict: Invalid `SDBytes' value\n" ));
+        FT_ERROR(( "cid_face_open: Invalid `SDBytes' value\n" ));
         error = FT_THROW( Invalid_File_Format );
         goto Exit;
       }
 
       if ( dict->sd_bytes > 4 )
       {
-        FT_ERROR(( "cid_parse_dict:"
+        FT_ERROR(( "cid_face_open:"
                    " Values of `SDBytes' larger than 4"
                    " are not supported\n" ));
         error = FT_THROW( Invalid_File_Format );
@@ -801,7 +893,7 @@
 
       if ( dict->subrmap_offset > binary_length )
       {
-        FT_ERROR(( "cid_parse_dict: Invalid `SubrMapOffset' value\n" ));
+        FT_ERROR(( "cid_face_open: Invalid `SubrMapOffset' value\n" ));
         error = FT_THROW( Invalid_File_Format );
         goto Exit;
       }
@@ -812,7 +904,7 @@
              dict->num_subrs > ( binary_length - dict->subrmap_offset ) /
                                  (FT_UInt)dict->sd_bytes                 ) )
       {
-        FT_ERROR(( "cid_parse_dict: Invalid `SubrCount' value\n" ));
+        FT_ERROR(( "cid_face_open: Invalid `SubrCount' value\n" ));
         error = FT_THROW( Invalid_File_Format );
         goto Exit;
       }
@@ -820,7 +912,7 @@
 
     if ( cid->cidmap_offset > binary_length )
     {
-      FT_ERROR(( "cid_parse_dict: Invalid `CIDMapOffset' value\n" ));
+      FT_ERROR(( "cid_face_open: Invalid `CIDMapOffset' value\n" ));
       error = FT_THROW( Invalid_File_Format );
       goto Exit;
     }
@@ -829,7 +921,7 @@
          cid->cid_count >
            ( binary_length - cid->cidmap_offset ) / entry_len )
     {
-      FT_ERROR(( "cid_parse_dict: Invalid `CIDCount' value\n" ));
+      FT_ERROR(( "cid_face_open: Invalid `CIDCount' value\n" ));
       error = FT_THROW( Invalid_File_Format );
       goto Exit;
     }
diff --git a/src/cid/cidload.h b/src/cid/cidload.h
index 3f8bd08..a3e6e28 100644
--- a/src/cid/cidload.h
+++ b/src/cid/cidload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidload.h                                                              */
-/*                                                                         */
-/*    CID-keyed Type1 font loader (specification).                         */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidload.h
+ *
+ *   CID-keyed Type1 font loader (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CIDLOAD_H_
diff --git a/src/cid/cidobjs.c b/src/cid/cidobjs.c
index 77afe1c..91c4ed9 100644
--- a/src/cid/cidobjs.c
+++ b/src/cid/cidobjs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidobjs.c                                                              */
-/*                                                                         */
-/*    CID objects manager (body).                                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidobjs.c
+ *
+ *   CID objects manager (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -31,21 +31,21 @@
 #include "ciderrs.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cidobjs
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SLOT  FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SLOT  FUNCTIONS
+   *
+   */
 
   FT_LOCAL_DEF( void )
   cid_slot_done( FT_GlyphSlot  slot )
@@ -85,11 +85,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                           SIZE  FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                          SIZE  FUNCTIONS
+   *
+   */
 
 
   static PSH_Globals_Funcs
@@ -174,23 +174,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                           FACE  FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                          FACE  FUNCTIONS
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cid_face_done                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given face object.                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A pointer to the face object to destroy.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cid_face_done
+   *
+   * @Description:
+   *   Finalizes a given face object.
+   *
+   * @Input:
+   *   face ::
+   *     A pointer to the face object to destroy.
+   */
   FT_LOCAL_DEF( void )
   cid_face_done( FT_Face  cidface )         /* CID_Face */
   {
@@ -252,29 +253,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cid_face_init                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a given CID face object.                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream     :: The source font stream.                              */
-  /*                                                                       */
-  /*    face_index :: The index of the font face in the resource.          */
-  /*                                                                       */
-  /*    num_params :: Number of additional generic parameters.  Ignored.   */
-  /*                                                                       */
-  /*    params     :: Additional generic parameters.  Ignored.             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The newly built face object.                         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cid_face_init
+   *
+   * @Description:
+   *   Initializes a given CID face object.
+   *
+   * @Input:
+   *   stream ::
+   *     The source font stream.
+   *
+   *   face_index ::
+   *     The index of the font face in the resource.
+   *
+   *   num_params ::
+   *     Number of additional generic parameters.  Ignored.
+   *
+   *   params ::
+   *     Additional generic parameters.  Ignored.
+   *
+   * @InOut:
+   *   face ::
+   *     The newly built face object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   cid_face_init( FT_Stream      stream,
                  FT_Face        cidface,        /* CID_Face */
@@ -449,20 +455,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cid_driver_init                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a given CID driver object.                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target driver object.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cid_driver_init
+   *
+   * @Description:
+   *   Initializes a given CID driver object.
+   *
+   * @Input:
+   *   driver ::
+   *     A handle to the target driver object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   cid_driver_init( FT_Module  module )
   {
@@ -505,17 +512,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cid_driver_done                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given CID driver.                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target CID driver.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cid_driver_done
+   *
+   * @Description:
+   *   Finalizes a given CID driver.
+   *
+   * @Input:
+   *   driver ::
+   *     A handle to the target CID driver.
+   */
   FT_LOCAL_DEF( void )
   cid_driver_done( FT_Module  driver )
   {
diff --git a/src/cid/cidobjs.h b/src/cid/cidobjs.h
index 0221f01..33a2e7a 100644
--- a/src/cid/cidobjs.h
+++ b/src/cid/cidobjs.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidobjs.h                                                              */
-/*                                                                         */
-/*    CID objects manager (specification).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidobjs.h
+ *
+ *   CID objects manager (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CIDOBJS_H_
@@ -34,60 +34,60 @@
   typedef struct CID_Glyph_Hints_  CID_Glyph_Hints;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CID_Driver                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 driver object.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   CID_Driver
+   *
+   * @Description:
+   *   A handle to a Type 1 driver object.
+   */
   typedef struct CID_DriverRec_*  CID_Driver;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CID_Size                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 size object.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   CID_Size
+   *
+   * @Description:
+   *   A handle to a Type 1 size object.
+   */
   typedef struct CID_SizeRec_*  CID_Size;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CID_GlyphSlot                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 glyph slot object.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   CID_GlyphSlot
+   *
+   * @Description:
+   *   A handle to a Type 1 glyph slot object.
+   */
   typedef struct CID_GlyphSlotRec_*  CID_GlyphSlot;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CID_CharMap                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 character mapping object.                     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The Type 1 format doesn't use a charmap but an encoding table.     */
-  /*    The driver is responsible for making up charmap objects            */
-  /*    corresponding to these tables.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   CID_CharMap
+   *
+   * @Description:
+   *   A handle to a Type 1 character mapping object.
+   *
+   * @Note:
+   *   The Type 1 format doesn't use a charmap but an encoding table.
+   *   The driver is responsible for making up charmap objects
+   *   corresponding to these tables.
+   */
   typedef struct CID_CharMapRec_*  CID_CharMap;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* HERE BEGINS THE TYPE 1 SPECIFIC STUFF                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * HERE BEGINS THE TYPE 1 SPECIFIC STUFF
+   *
+   */
 
 
   typedef struct  CID_SizeRec_
diff --git a/src/cid/cidparse.c b/src/cid/cidparse.c
index b1c7f3c..861c157 100644
--- a/src/cid/cidparse.c
+++ b/src/cid/cidparse.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidparse.c                                                             */
-/*                                                                         */
-/*    CID-keyed Type1 parser (body).                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidparse.c
+ *
+ *   CID-keyed Type1 parser (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -26,12 +26,12 @@
 #include "ciderrs.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cidparse
 
diff --git a/src/cid/cidparse.h b/src/cid/cidparse.h
index 61602f7..029c6ae 100644
--- a/src/cid/cidparse.h
+++ b/src/cid/cidparse.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidparse.h                                                             */
-/*                                                                         */
-/*    CID-keyed Type1 parser (specification).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidparse.h
+ *
+ *   CID-keyed Type1 parser (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CIDPARSE_H_
@@ -29,35 +29,43 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_Parser                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A CID_Parser is an object used to parse a Type 1 fonts very        */
-  /*    quickly.                                                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root           :: The root PS_ParserRec fields.                    */
-  /*                                                                       */
-  /*    stream         :: The current input stream.                        */
-  /*                                                                       */
-  /*    postscript     :: A pointer to the data to be parsed.              */
-  /*                                                                       */
-  /*    postscript_len :: The length of the data to be parsed.             */
-  /*                                                                       */
-  /*    data_offset    :: The start position of the binary data (i.e., the */
-  /*                      end of the data to be parsed.                    */
-  /*                                                                       */
-  /*    binary_length  :: The length of the data after the `StartData'     */
-  /*                      command if the data format is hexadecimal.       */
-  /*                                                                       */
-  /*    cid            :: A structure which holds the information about    */
-  /*                      the current font.                                */
-  /*                                                                       */
-  /*    num_dict       :: The number of font dictionaries.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   CID_Parser
+   *
+   * @Description:
+   *   A CID_Parser is an object used to parse a Type 1 fonts very
+   *   quickly.
+   *
+   * @Fields:
+   *   root ::
+   *     The root PS_ParserRec fields.
+   *
+   *   stream ::
+   *     The current input stream.
+   *
+   *   postscript ::
+   *     A pointer to the data to be parsed.
+   *
+   *   postscript_len ::
+   *     The length of the data to be parsed.
+   *
+   *   data_offset ::
+   *     The start position of the binary data (i.e., the
+   *     end of the data to be parsed.
+   *
+   *   binary_length ::
+   *     The length of the data after the `StartData'
+   *     command if the data format is hexadecimal.
+   *
+   *   cid ::
+   *     A structure which holds the information about
+   *     the current font.
+   *
+   *   num_dict ::
+   *     The number of font dictionaries.
+   */
   typedef struct  CID_Parser_
   {
     PS_ParserRec  root;
@@ -86,11 +94,11 @@
   cid_parser_done( CID_Parser*  parser );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            PARSING ROUTINES                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           PARSING ROUTINES
+   *
+   */
 
 #define cid_parser_skip_spaces( p )                 \
           (p)->root.funcs.skip_spaces( &(p)->root )
diff --git a/src/cid/cidriver.c b/src/cid/cidriver.c
index d9faf35..935c112 100644
--- a/src/cid/cidriver.c
+++ b/src/cid/cidriver.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidriver.c                                                             */
-/*                                                                         */
-/*    CID driver interface (body).                                         */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidriver.c
+ *
+ *   CID driver interface (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -34,18 +34,18 @@
 #include FT_INTERNAL_POSTSCRIPT_AUX_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ciddriver
 
 
   /*
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -69,7 +69,7 @@
 
 
   /*
-   *  POSTSCRIPT INFO SERVICE
+   * POSTSCRIPT INFO SERVICE
    *
    */
 
@@ -105,7 +105,7 @@
 
 
   /*
-   *  CID INFO SERVICE
+   * CID INFO SERVICE
    *
    */
   static FT_Error
@@ -173,7 +173,7 @@
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
 
@@ -185,7 +185,7 @@
 
 
   /*
-   *  SERVICE LIST
+   * SERVICE LIST
    *
    */
 
diff --git a/src/cid/cidriver.h b/src/cid/cidriver.h
index 59d9ded..2933808 100644
--- a/src/cid/cidriver.h
+++ b/src/cid/cidriver.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidriver.h                                                             */
-/*                                                                         */
-/*    High-level CID driver interface (specification).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidriver.h
+ *
+ *   High-level CID driver interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CIDRIVER_H_
@@ -26,15 +26,9 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
-
   FT_CALLBACK_TABLE
   const FT_Driver_ClassRec  t1cid_driver_class;
 
-
 FT_END_HEADER
 
 #endif /* CIDRIVER_H_ */
diff --git a/src/cid/cidtoken.h b/src/cid/cidtoken.h
index b0e2dac..d957e5a 100644
--- a/src/cid/cidtoken.h
+++ b/src/cid/cidtoken.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidtoken.h                                                             */
-/*                                                                         */
-/*    CID token definitions (specification only).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidtoken.h
+ *
+ *   CID token definitions (specification only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #undef  FT_STRUCTURE
@@ -21,17 +21,20 @@
 #undef  T1CODE
 #define T1CODE        T1_FIELD_LOCATION_CID_INFO
 
-  T1_FIELD_KEY   ( "CIDFontName",    cid_font_name, 0 )
-  T1_FIELD_FIXED ( "CIDFontVersion", cid_version,   0 )
-  T1_FIELD_NUM   ( "CIDFontType",    cid_font_type, 0 )
-  T1_FIELD_STRING( "Registry",       registry,      0 )
-  T1_FIELD_STRING( "Ordering",       ordering,      0 )
-  T1_FIELD_NUM   ( "Supplement",     supplement,    0 )
-  T1_FIELD_NUM   ( "UIDBase",        uid_base,      0 )
-  T1_FIELD_NUM   ( "CIDMapOffset",   cidmap_offset, 0 )
-  T1_FIELD_NUM   ( "FDBytes",        fd_bytes,      0 )
-  T1_FIELD_NUM   ( "GDBytes",        gd_bytes,      0 )
-  T1_FIELD_NUM   ( "CIDCount",       cid_count,     0 )
+  T1_FIELD_KEY      ( "CIDFontName",    cid_font_name, 0 )
+  T1_FIELD_FIXED    ( "CIDFontVersion", cid_version,   0 )
+  T1_FIELD_NUM      ( "CIDFontType",    cid_font_type, 0 )
+  T1_FIELD_STRING   ( "Registry",       registry,      0 )
+  T1_FIELD_STRING   ( "Ordering",       ordering,      0 )
+  T1_FIELD_NUM      ( "Supplement",     supplement,    0 )
+  T1_FIELD_NUM      ( "UIDBase",        uid_base,      0 )
+
+  T1_FIELD_NUM_TABLE( "XUID",           xuid,          16, 0 )
+
+  T1_FIELD_NUM      ( "CIDMapOffset",   cidmap_offset, 0 )
+  T1_FIELD_NUM      ( "FDBytes",        fd_bytes,      0 )
+  T1_FIELD_NUM      ( "GDBytes",        gd_bytes,      0 )
+  T1_FIELD_NUM      ( "CIDCount",       cid_count,     0 )
 
 
 #undef  FT_STRUCTURE
diff --git a/src/cid/type1cid.c b/src/cid/type1cid.c
index 61770e3..02d9400 100644
--- a/src/cid/type1cid.c
+++ b/src/cid/type1cid.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  type1cid.c                                                             */
-/*                                                                         */
-/*    FreeType OpenType driver component (body only).                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * type1cid.c
+ *
+ *   FreeType OpenType driver component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
diff --git a/src/gxvalid/gxvalid.c b/src/gxvalid/gxvalid.c
index d0577a2..f49e8b7 100644
--- a/src/gxvalid/gxvalid.c
+++ b/src/gxvalid/gxvalid.c
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvalid.c                                                              */
-/*                                                                         */
-/*    FreeType validator for TrueTypeGX/AAT tables (body only).            */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid.c
+ *
+ *   FreeType validator for TrueTypeGX/AAT tables (body only).
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
diff --git a/src/gxvalid/gxvalid.h b/src/gxvalid/gxvalid.h
index 19f0379..cf02fcb 100644
--- a/src/gxvalid/gxvalid.h
+++ b/src/gxvalid/gxvalid.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvalid.h                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT table validation (specification only).                */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid.h
+ *
+ *   TrueTypeGX/AAT table validation (specification only).
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #ifndef GXVALID_H_
diff --git a/src/gxvalid/gxvbsln.c b/src/gxvalid/gxvbsln.c
index c367d38..8b554fd 100644
--- a/src/gxvalid/gxvbsln.c
+++ b/src/gxvalid/gxvbsln.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvbsln.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT bsln table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvbsln.c
+ *
+ *   TrueTypeGX/AAT bsln table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvalid.h"
 #include "gxvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvbsln
 
diff --git a/src/gxvalid/gxvcommn.c b/src/gxvalid/gxvcommn.c
index b966011..4d8a4a2 100644
--- a/src/gxvalid/gxvcommn.c
+++ b/src/gxvalid/gxvcommn.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvcommn.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT common tables validation (body).                      */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvcommn.c
+ *
+ *   TrueTypeGX/AAT common tables validation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvcommon
 
@@ -384,8 +384,8 @@
           ( P += 2, gxv_lookup_value_load( P - 2, SIGNSPEC ) )
 
   static GXV_LookupValueDesc
-  gxv_lookup_value_load( FT_Bytes  p,
-                         int       signspec )
+  gxv_lookup_value_load( FT_Bytes                  p,
+                         GXV_LookupValue_SignSpec  signspec )
   {
     GXV_LookupValueDesc  v;
 
diff --git a/src/gxvalid/gxvcommn.h b/src/gxvalid/gxvcommn.h
index 8e4ff9c..9834c57 100644
--- a/src/gxvalid/gxvcommn.h
+++ b/src/gxvalid/gxvcommn.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvcommn.h                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT common tables validation (specification).             */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvcommn.h
+ *
+ *   TrueTypeGX/AAT common tables validation (specification).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
   /*
    * keywords in variable naming
    * ---------------------------
-   *  table: Of type FT_Bytes, pointing to the start of this table/subtable.
-   *  limit: Of type FT_Bytes, pointing to the end of this table/subtable,
+   * table:  Of type FT_Bytes, pointing to the start of this table/subtable.
+   * limit:  Of type FT_Bytes, pointing to the end of this table/subtable,
    *         including padding for alignment.
-   *  offset: Of type FT_UInt, the number of octets from the start to target.
-   *  length: Of type FT_UInt, the number of octets from the start to the
-   *          end in this table/subtable, including padding for alignment.
+   * offset: Of type FT_UInt, the number of octets from the start to target.
+   * length: Of type FT_UInt, the number of octets from the start to the
+   *         end in this table/subtable, including padding for alignment.
    *
    *  _MIN, _MAX: Should be added to the tail of macros, as INT_MIN, etc.
    */
diff --git a/src/gxvalid/gxverror.h b/src/gxvalid/gxverror.h
index d115125..e36b076 100644
--- a/src/gxvalid/gxverror.h
+++ b/src/gxvalid/gxverror.h
@@ -1,36 +1,36 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxverror.h                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT validation module error codes (specification only).   */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxverror.h
+ *
+ *   TrueTypeGX/AAT validation module error codes (specification only).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the OpenType validation module error      */
-  /* enumeration constants.                                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the OpenType validation module error
+   * enumeration constants.
+   *
+   */
 
 #ifndef GXVERROR_H_
 #define GXVERROR_H_
diff --git a/src/gxvalid/gxvfeat.c b/src/gxvalid/gxvfeat.c
index 2c805d1..91500bd 100644
--- a/src/gxvalid/gxvfeat.c
+++ b/src/gxvalid/gxvfeat.c
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvfeat.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT feat table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvfeat.c
+ *
+ *   TrueTypeGX/AAT feat table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvalid.h"
@@ -30,12 +30,12 @@
 #include "gxvfeat.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvfeat
 
diff --git a/src/gxvalid/gxvfeat.h b/src/gxvalid/gxvfeat.h
index 2d94380..715791d 100644
--- a/src/gxvalid/gxvfeat.h
+++ b/src/gxvalid/gxvfeat.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvfeat.h                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT feat table validation (specification).                */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvfeat.h
+ *
+ *   TrueTypeGX/AAT feat table validation (specification).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #ifndef GXVFEAT_H_
diff --git a/src/gxvalid/gxvfgen.c b/src/gxvalid/gxvfgen.c
index 840c0f3..c95aebd 100644
--- a/src/gxvalid/gxvfgen.c
+++ b/src/gxvalid/gxvfgen.c
@@ -1,62 +1,62 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxfgen.c                                                               */
-/*                                                                         */
-/*    Generate feature registry data for gxv `feat' validator.             */
-/*    This program is derived from gxfeatreg.c in gxlayout.                */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  Masatake YAMATO and Redhat K.K.                                        */
-/*                                                                         */
-/*  This file may only be used,                                            */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxfgen.c
+ *
+ *   Generate feature registry data for gxv `feat' validator.
+ *   This program is derived from gxfeatreg.c in gxlayout.
+ *
+ * Copyright 2004-2018 by
+ * Masatake YAMATO and Redhat K.K.
+ *
+ * This file may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/*  gxfeatreg.c                                                            */
-/*                                                                         */
-/*    Database of font features pre-defined by Apple Computer, Inc.        */
-/*    https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html */
-/*    (body).                                                              */
-/*                                                                         */
-/*  Copyright 2003 by                                                      */
-/*  Masatake YAMATO and Redhat K.K.                                        */
-/*                                                                         */
-/*  This file may only be used,                                            */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxfeatreg.c
+ *
+ *   Database of font features pre-defined by Apple Computer, Inc.
+ *   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html
+ *   (body).
+ *
+ * Copyright 2003 by
+ * Masatake YAMATO and Redhat K.K.
+ *
+ * This file may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* Development of gxfeatreg.c is supported by                              */
-/* Information-technology Promotion Agency, Japan.                         */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * Development of gxfeatreg.c is supported by
+ * Information-technology Promotion Agency, Japan.
+ *
+ */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* This file is compiled as a stand-alone executable.                      */
-/* This file is never compiled into `libfreetype2'.                        */
-/* The output of this file is used in `gxvfeat.c'.                         */
-/* ----------------------------------------------------------------------- */
-/* Compile: gcc `pkg-config --cflags freetype2` gxvfgen.c -o gxvfgen       */
-/* Run: ./gxvfgen > tmp.c                                                  */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * This file is compiled as a stand-alone executable.
+ * This file is never compiled into `libfreetype2'.
+ * The output of this file is used in `gxvfeat.c'.
+ * -----------------------------------------------------------------------
+ * Compile: gcc `pkg-config --cflags freetype2` gxvfgen.c -o gxvfgen
+ * Run: ./gxvfgen > tmp.c
+ *
+ */
 
-  /*******************************************************************/
-  /* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */
-  /*******************************************************************/
+  /********************************************************************
+   * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
+   */
 
   /*
    * If you add a new setting to a feature, check the number of settings
@@ -65,9 +65,9 @@
    */
 #define FEATREG_MAX_SETTING  12
 
-  /*******************************************************************/
-  /* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING */
-  /*******************************************************************/
+  /********************************************************************
+   * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
+   */
 
 
 #include <stdio.h>
diff --git a/src/gxvalid/gxvjust.c b/src/gxvalid/gxvjust.c
index 00c4293..c8a9ab6 100644
--- a/src/gxvalid/gxvjust.c
+++ b/src/gxvalid/gxvjust.c
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvjust.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT just table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvjust.c
+ *
+ *   TrueTypeGX/AAT just table validation (body).
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvalid.h"
@@ -31,12 +31,12 @@
 #include FT_SFNT_NAMES_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvjust
 
diff --git a/src/gxvalid/gxvkern.c b/src/gxvalid/gxvkern.c
index 9c0efd7..df9f10e 100644
--- a/src/gxvalid/gxvkern.c
+++ b/src/gxvalid/gxvkern.c
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvkern.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT kern table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvkern.c
+ *
+ *   TrueTypeGX/AAT kern table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvalid.h"
@@ -32,12 +32,12 @@
 #include FT_SERVICE_GX_VALIDATE_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvkern
 
diff --git a/src/gxvalid/gxvlcar.c b/src/gxvalid/gxvlcar.c
index 0f261a9..fd167f6 100644
--- a/src/gxvalid/gxvlcar.c
+++ b/src/gxvalid/gxvlcar.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvlcar.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT lcar table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvlcar.c
+ *
+ *   TrueTypeGX/AAT lcar table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvalid.h"
 #include "gxvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvlcar
 
diff --git a/src/gxvalid/gxvmod.c b/src/gxvalid/gxvmod.c
index 1a3c862..847e0f1 100644
--- a/src/gxvalid/gxvmod.c
+++ b/src/gxvalid/gxvmod.c
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmod.c                                                               */
-/*                                                                         */
-/*    FreeType's TrueTypeGX/AAT validation module implementation (body).   */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmod.c
+ *
+ *   FreeType's TrueTypeGX/AAT validation module implementation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -37,12 +37,12 @@
 #include "gxvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmodule
 
diff --git a/src/gxvalid/gxvmod.h b/src/gxvalid/gxvmod.h
index 745c62e..f6a2502 100644
--- a/src/gxvalid/gxvmod.h
+++ b/src/gxvalid/gxvmod.h
@@ -1,29 +1,29 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmod.h                                                               */
-/*                                                                         */
-/*    FreeType's TrueTypeGX/AAT validation module implementation           */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmod.h
+ *
+ *   FreeType's TrueTypeGX/AAT validation module implementation
+ *   (specification).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #ifndef GXVMOD_H_
@@ -35,10 +35,6 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
 
   FT_EXPORT_VAR( const FT_Module_Class )  gxv_module_class;
 
diff --git a/src/gxvalid/gxvmort.c b/src/gxvalid/gxvmort.c
index b361cb2..1dfa5a3 100644
--- a/src/gxvalid/gxvmort.c
+++ b/src/gxvalid/gxvmort.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmort.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT mort table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmort.c
+ *
+ *   TrueTypeGX/AAT mort table validation (body).
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmort.h"
 #include "gxvfeat.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmort
 
diff --git a/src/gxvalid/gxvmort.h b/src/gxvalid/gxvmort.h
index d803064..c2dc657 100644
--- a/src/gxvalid/gxvmort.h
+++ b/src/gxvalid/gxvmort.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmort.h                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT common definition for mort table (specification).     */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmort.h
+ *
+ *   TrueTypeGX/AAT common definition for mort table (specification).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #ifndef GXVMORT_H_
diff --git a/src/gxvalid/gxvmort0.c b/src/gxvalid/gxvmort0.c
index 95cf53d..c7901cb 100644
--- a/src/gxvalid/gxvmort0.c
+++ b/src/gxvalid/gxvmort0.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmort0.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT mort table validation                                 */
-/*    body for type0 (Indic Script Rearrangement) subtable.                */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmort0.c
+ *
+ *   TrueTypeGX/AAT mort table validation
+ *   body for type0 (Indic Script Rearrangement) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmort.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmort
 
diff --git a/src/gxvalid/gxvmort1.c b/src/gxvalid/gxvmort1.c
index a7683a1..f2f4f57 100644
--- a/src/gxvalid/gxvmort1.c
+++ b/src/gxvalid/gxvmort1.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmort1.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT mort table validation                                 */
-/*    body for type1 (Contextual Substitution) subtable.                   */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmort1.c
+ *
+ *   TrueTypeGX/AAT mort table validation
+ *   body for type1 (Contextual Substitution) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmort.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmort
 
diff --git a/src/gxvalid/gxvmort2.c b/src/gxvalid/gxvmort2.c
index c23c277..33fea0f 100644
--- a/src/gxvalid/gxvmort2.c
+++ b/src/gxvalid/gxvmort2.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmort2.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT mort table validation                                 */
-/*    body for type2 (Ligature Substitution) subtable.                     */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmort2.c
+ *
+ *   TrueTypeGX/AAT mort table validation
+ *   body for type2 (Ligature Substitution) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmort.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmort
 
diff --git a/src/gxvalid/gxvmort4.c b/src/gxvalid/gxvmort4.c
index 9d21a5f..6cf1e80 100644
--- a/src/gxvalid/gxvmort4.c
+++ b/src/gxvalid/gxvmort4.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmort4.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT mort table validation                                 */
-/*    body for type4 (Non-Contextual Glyph Substitution) subtable.         */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmort4.c
+ *
+ *   TrueTypeGX/AAT mort table validation
+ *   body for type4 (Non-Contextual Glyph Substitution) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmort.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmort
 
diff --git a/src/gxvalid/gxvmort5.c b/src/gxvalid/gxvmort5.c
index 42cb428..ae94e22 100644
--- a/src/gxvalid/gxvmort5.c
+++ b/src/gxvalid/gxvmort5.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmort5.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT mort table validation                                 */
-/*    body for type5 (Contextual Glyph Insertion) subtable.                */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmort5.c
+ *
+ *   TrueTypeGX/AAT mort table validation
+ *   body for type5 (Contextual Glyph Insertion) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmort.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmort
 
diff --git a/src/gxvalid/gxvmorx.c b/src/gxvalid/gxvmorx.c
index 9fd6e6b..f02ff54 100644
--- a/src/gxvalid/gxvmorx.c
+++ b/src/gxvalid/gxvmorx.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmorx.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT morx table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmorx.c
+ *
+ *   TrueTypeGX/AAT morx table validation (body).
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmorx.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmorx
 
diff --git a/src/gxvalid/gxvmorx.h b/src/gxvalid/gxvmorx.h
index 6d9925e..1ded623 100644
--- a/src/gxvalid/gxvmorx.h
+++ b/src/gxvalid/gxvmorx.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmorx.h                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT common definition for morx table (specification).     */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmorx.h
+ *
+ *   TrueTypeGX/AAT common definition for morx table (specification).
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #ifndef GXVMORX_H_
diff --git a/src/gxvalid/gxvmorx0.c b/src/gxvalid/gxvmorx0.c
index 302261b..d65ced5 100644
--- a/src/gxvalid/gxvmorx0.c
+++ b/src/gxvalid/gxvmorx0.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmorx0.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT morx table validation                                 */
-/*    body for type0 (Indic Script Rearrangement) subtable.                */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmorx0.c
+ *
+ *   TrueTypeGX/AAT morx table validation
+ *   body for type0 (Indic Script Rearrangement) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmorx.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmorx
 
diff --git a/src/gxvalid/gxvmorx1.c b/src/gxvalid/gxvmorx1.c
index 890ca74..1c8da1b 100644
--- a/src/gxvalid/gxvmorx1.c
+++ b/src/gxvalid/gxvmorx1.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmorx1.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT morx table validation                                 */
-/*    body for type1 (Contextual Substitution) subtable.                   */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmorx1.c
+ *
+ *   TrueTypeGX/AAT morx table validation
+ *   body for type1 (Contextual Substitution) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmorx.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmorx
 
diff --git a/src/gxvalid/gxvmorx2.c b/src/gxvalid/gxvmorx2.c
index 3135031..d20fc57 100644
--- a/src/gxvalid/gxvmorx2.c
+++ b/src/gxvalid/gxvmorx2.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmorx2.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT morx table validation                                 */
-/*    body for type2 (Ligature Substitution) subtable.                     */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmorx2.c
+ *
+ *   TrueTypeGX/AAT morx table validation
+ *   body for type2 (Ligature Substitution) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmorx.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmorx
 
diff --git a/src/gxvalid/gxvmorx4.c b/src/gxvalid/gxvmorx4.c
index 1e2397b..fce219c 100644
--- a/src/gxvalid/gxvmorx4.c
+++ b/src/gxvalid/gxvmorx4.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmorx4.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT morx table validation                                 */
-/*    body for "morx" type4 (Non-Contextual Glyph Substitution) subtable.  */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmorx4.c
+ *
+ *   TrueTypeGX/AAT morx table validation
+ *   body for "morx" type4 (Non-Contextual Glyph Substitution) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmorx.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmorx
 
diff --git a/src/gxvalid/gxvmorx5.c b/src/gxvalid/gxvmorx5.c
index db4f929..8826954 100644
--- a/src/gxvalid/gxvmorx5.c
+++ b/src/gxvalid/gxvmorx5.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvmorx5.c                                                             */
-/*                                                                         */
-/*    TrueTypeGX/AAT morx table validation                                 */
-/*    body for type5 (Contextual Glyph Insertion) subtable.                */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvmorx5.c
+ *
+ *   TrueTypeGX/AAT morx table validation
+ *   body for type5 (Contextual Glyph Insertion) subtable.
+ *
+ * Copyright 2005-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvmorx.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvmorx
 
diff --git a/src/gxvalid/gxvopbd.c b/src/gxvalid/gxvopbd.c
index e2c167e..76b6961 100644
--- a/src/gxvalid/gxvopbd.c
+++ b/src/gxvalid/gxvopbd.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvopbd.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT opbd table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvopbd.c
+ *
+ *   TrueTypeGX/AAT opbd table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvalid.h"
 #include "gxvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvopbd
 
diff --git a/src/gxvalid/gxvprop.c b/src/gxvalid/gxvprop.c
index a67b6bd..856dd10 100644
--- a/src/gxvalid/gxvprop.c
+++ b/src/gxvalid/gxvprop.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvprop.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT prop table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvprop.c
+ *
+ *   TrueTypeGX/AAT prop table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvalid.h"
 #include "gxvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvprop
 
diff --git a/src/gxvalid/gxvtrak.c b/src/gxvalid/gxvtrak.c
index d501b50..d2ceb66 100644
--- a/src/gxvalid/gxvtrak.c
+++ b/src/gxvalid/gxvtrak.c
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  gxvtrak.c                                                              */
-/*                                                                         */
-/*    TrueTypeGX/AAT trak table validation (body).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  suzuki toshiya, Masatake YAMATO, Red Hat K.K.,                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvtrak.c
+ *
+ *   TrueTypeGX/AAT trak table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * suzuki toshiya, Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #include "gxvalid.h"
 #include "gxvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_gxvtrak
 
diff --git a/src/gzip/ftgzip.c b/src/gzip/ftgzip.c
index f8011c2..91b343b 100644
--- a/src/gzip/ftgzip.c
+++ b/src/gzip/ftgzip.c
@@ -1,23 +1,23 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgzip.c                                                               */
-/*                                                                         */
-/*    FreeType support for .gz compressed files.                           */
-/*                                                                         */
-/*  This optional component relies on zlib.  It should mainly be used to   */
-/*  parse compressed PCF fonts, as found with many X11 server              */
-/*  distributions.                                                         */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgzip.c
+ *
+ *   FreeType support for .gz compressed files.
+ *
+ * This optional component relies on zlib.  It should mainly be used to
+ * parse compressed PCF fonts, as found with many X11 server
+ * distributions.
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -41,10 +41,6 @@
 
 #ifdef FT_CONFIG_OPTION_USE_ZLIB
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "gzip code does not support PIC yet"
-#endif
-
 #ifdef FT_CONFIG_OPTION_SYSTEM_ZLIB
 
 #include <zlib.h>
@@ -637,8 +633,8 @@
     memory = source->memory;
 
     /*
-     *  check the header right now; this prevents allocating un-necessary
-     *  objects when we don't need them
+     * check the header right now; this prevents allocating un-necessary
+     * objects when we don't need them
      */
     error = ft_gzip_check_header( source );
     if ( error )
@@ -660,12 +656,12 @@
     }
 
     /*
-     *  We use the following trick to try to dramatically improve the
-     *  performance while dealing with small files.  If the original stream
-     *  size is less than a certain threshold, we try to load the whole font
-     *  file into memory.  This saves us from using the 32KB buffer needed
-     *  to inflate the file, plus the two 4KB intermediate input/output
-     *  buffers used in the `FT_GZipFile' structure.
+     * We use the following trick to try to dramatically improve the
+     * performance while dealing with small files.  If the original stream
+     * size is less than a certain threshold, we try to load the whole font
+     * file into memory.  This saves us from using the 32KB buffer needed
+     * to inflate the file, plus the two 4KB intermediate input/output
+     * buffers used in the `FT_GZipFile' structure.
      */
     {
       FT_ULong  zip_size = ft_gzip_get_uncompressed_size( source );
diff --git a/src/lzw/ftlzw.c b/src/lzw/ftlzw.c
index cb46f93..4a3d70b 100644
--- a/src/lzw/ftlzw.c
+++ b/src/lzw/ftlzw.c
@@ -1,25 +1,25 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftlzw.c                                                                */
-/*                                                                         */
-/*    FreeType support for .Z compressed files.                            */
-/*                                                                         */
-/*  This optional component relies on NetBSD's zopen().  It should mainly  */
-/*  be used to parse compressed PCF fonts, as found with many X11 server   */
-/*  distributions.                                                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  Albert Chin-A-Young.                                                   */
-/*                                                                         */
-/*  based on code in `src/gzip/ftgzip.c'                                   */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftlzw.c
+ *
+ *   FreeType support for .Z compressed files.
+ *
+ * This optional component relies on NetBSD's zopen().  It should mainly
+ * be used to parse compressed PCF fonts, as found with many X11 server
+ * distributions.
+ *
+ * Copyright 2004-2018 by
+ * Albert Chin-A-Young.
+ *
+ * based on code in `src/gzip/ftgzip.c'
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #include <ft2build.h>
 #include FT_INTERNAL_MEMORY_H
@@ -42,10 +42,6 @@
 
 #ifdef FT_CONFIG_OPTION_USE_LZW
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "lzw code does not support PIC yet"
-#endif
-
 #include "ftzopen.h"
 
 
@@ -361,11 +357,11 @@
     memory = source->memory;
 
     /*
-     *  Check the header right now; this prevents allocation of a huge
-     *  LZWFile object (400 KByte of heap memory) if not necessary.
+     * Check the header right now; this prevents allocation of a huge
+     * LZWFile object (400 KByte of heap memory) if not necessary.
      *
-     *  Did I mention that you should never use .Z compressed font
-     *  files?
+     * Did I mention that you should never use .Z compressed font
+     * files?
      */
     error = ft_lzw_check_header( source );
     if ( error )
diff --git a/src/lzw/ftzopen.c b/src/lzw/ftzopen.c
index 2b868ba..b699b2e 100644
--- a/src/lzw/ftzopen.c
+++ b/src/lzw/ftzopen.c
@@ -1,23 +1,23 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftzopen.c                                                              */
-/*                                                                         */
-/*    FreeType support for .Z compressed files.                            */
-/*                                                                         */
-/*  This optional component relies on NetBSD's zopen().  It should mainly  */
-/*  be used to parse compressed PCF fonts, as found with many X11 server   */
-/*  distributions.                                                         */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner.                                                          */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftzopen.c
+ *
+ *   FreeType support for .Z compressed files.
+ *
+ * This optional component relies on NetBSD's zopen().  It should mainly
+ * be used to parse compressed PCF fonts, as found with many X11 server
+ * distributions.
+ *
+ * Copyright 2005-2018 by
+ * David Turner.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #include "ftzopen.h"
 #include FT_INTERNAL_MEMORY_H
@@ -167,11 +167,11 @@
       new_size += new_size >> 2;  /* don't grow too fast */
 
     /*
-     *  Note that the `suffix' array is located in the same memory block
-     *  pointed to by `prefix'.
+     * Note that the `suffix' array is located in the same memory block
+     * pointed to by `prefix'.
      *
-     *  I know that sizeof(FT_Byte) == 1 by definition, but it is clearer
-     *  to write it literally.
+     * I know that sizeof(FT_Byte) == 1 by definition, but it is clearer
+     * to write it literally.
      *
      */
     if ( FT_REALLOC_MULT( state->prefix, old_size, new_size,
diff --git a/src/lzw/ftzopen.h b/src/lzw/ftzopen.h
index 4fd267e..4fbe257 100644
--- a/src/lzw/ftzopen.h
+++ b/src/lzw/ftzopen.h
@@ -1,23 +1,23 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftzopen.h                                                              */
-/*                                                                         */
-/*    FreeType support for .Z compressed files.                            */
-/*                                                                         */
-/*  This optional component relies on NetBSD's zopen().  It should mainly  */
-/*  be used to parse compressed PCF fonts, as found with many X11 server   */
-/*  distributions.                                                         */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner.                                                          */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftzopen.h
+ *
+ *   FreeType support for .Z compressed files.
+ *
+ * This optional component relies on NetBSD's zopen().  It should mainly
+ * be used to parse compressed PCF fonts, as found with many X11 server
+ * distributions.
+ *
+ * Copyright 2005-2018 by
+ * David Turner.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #ifndef FTZOPEN_H_
 #define FTZOPEN_H_
@@ -27,9 +27,9 @@
 
 
   /*
-   *  This is a complete re-implementation of the LZW file reader,
-   *  since the old one was incredibly badly written, using
-   *  400 KByte of heap memory before decompressing anything.
+   * This is a complete re-implementation of the LZW file reader,
+   * since the old one was incredibly badly written, using
+   * 400 KByte of heap memory before decompressing anything.
    *
    */
 
@@ -58,56 +58,56 @@
 
 
   /*
-   *  state of LZW decompressor
+   * state of LZW decompressor
    *
-   *  small technical note
-   *  --------------------
+   * small technical note
+   * --------------------
    *
-   *  We use a few tricks in this implementation that are explained here to
-   *  ease debugging and maintenance.
+   * We use a few tricks in this implementation that are explained here to
+   * ease debugging and maintenance.
    *
-   *  - First of all, the `prefix' and `suffix' arrays contain the suffix
-   *    and prefix for codes over 256; this means that
+   * - First of all, the `prefix' and `suffix' arrays contain the suffix
+   *   and prefix for codes over 256; this means that
    *
-   *      prefix_of(code) == state->prefix[code-256]
-   *      suffix_of(code) == state->suffix[code-256]
+   *     prefix_of(code) == state->prefix[code-256]
+   *     suffix_of(code) == state->suffix[code-256]
    *
-   *    Each prefix is a 16-bit code, and each suffix an 8-bit byte.
+   *   Each prefix is a 16-bit code, and each suffix an 8-bit byte.
    *
-   *    Both arrays are stored in a single memory block, pointed to by
-   *    `state->prefix'.  This means that the following equality is always
-   *    true:
+   *   Both arrays are stored in a single memory block, pointed to by
+   *   `state->prefix'.  This means that the following equality is always
+   *   true:
    *
-   *      state->suffix == (FT_Byte*)(state->prefix + state->prefix_size)
+   *     state->suffix == (FT_Byte*)(state->prefix + state->prefix_size)
    *
-   *    Of course, state->prefix_size is the number of prefix/suffix slots
-   *    in the arrays, corresponding to codes 256..255+prefix_size.
+   *   Of course, state->prefix_size is the number of prefix/suffix slots
+   *   in the arrays, corresponding to codes 256..255+prefix_size.
    *
-   *  - `free_ent' is the index of the next free entry in the `prefix'
-   *    and `suffix' arrays.  This means that the corresponding `next free
-   *    code' is really `256+free_ent'.
+   * - `free_ent' is the index of the next free entry in the `prefix'
+   *   and `suffix' arrays.  This means that the corresponding `next free
+   *   code' is really `256+free_ent'.
    *
-   *    Moreover, `max_free' is the maximum value that `free_ent' can reach.
+   *   Moreover, `max_free' is the maximum value that `free_ent' can reach.
    *
-   *    `max_free' corresponds to `(1 << max_bits) - 256'.  Note that this
-   *    value is always <= 0xFF00, which means that both `free_ent' and
-   *    `max_free' can be stored in an FT_UInt variable, even on 16-bit
-   *    machines.
+   *   `max_free' corresponds to `(1 << max_bits) - 256'.  Note that this
+   *   value is always <= 0xFF00, which means that both `free_ent' and
+   *   `max_free' can be stored in an FT_UInt variable, even on 16-bit
+   *   machines.
    *
-   *    If `free_ent == max_free', you cannot add new codes to the
-   *    prefix/suffix table.
+   *   If `free_ent == max_free', you cannot add new codes to the
+   *   prefix/suffix table.
    *
-   *  - `num_bits' is the current number of code bits, starting at 9 and
-   *    growing each time `free_ent' reaches the value of `free_bits'.  The
-   *    latter is computed as follows
+   * - `num_bits' is the current number of code bits, starting at 9 and
+   *   growing each time `free_ent' reaches the value of `free_bits'.  The
+   *   latter is computed as follows
    *
-   *      if num_bits < max_bits:
-   *         free_bits = (1 << num_bits)-256
-   *      else:
-   *         free_bits = max_free + 1
+   *     if num_bits < max_bits:
+   *        free_bits = (1 << num_bits)-256
+   *     else:
+   *        free_bits = max_free + 1
    *
-   *    Since the value of `max_free + 1' can never be reached by
-   *    `free_ent', `num_bits' cannot grow larger than `max_bits'.
+   *   Since the value of `max_free + 1' can never be reached by
+   *   `free_ent', `num_bits' cannot grow larger than `max_bits'.
    */
 
   typedef struct  FT_LzwStateRec_
diff --git a/src/otvalid/otvalid.c b/src/otvalid/otvalid.c
index 4423ca1..144be58 100644
--- a/src/otvalid/otvalid.c
+++ b/src/otvalid/otvalid.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvalid.c                                                              */
-/*                                                                         */
-/*    FreeType validator for OpenType tables (body only).                  */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvalid.c
+ *
+ *   FreeType validator for OpenType tables (body only).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
diff --git a/src/otvalid/otvalid.h b/src/otvalid/otvalid.h
index d7801ab..1ccdbbf 100644
--- a/src/otvalid/otvalid.h
+++ b/src/otvalid/otvalid.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvalid.h                                                              */
-/*                                                                         */
-/*    OpenType table validation (specification only).                      */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvalid.h
+ *
+ *   OpenType table validation (specification only).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef OTVALID_H_
diff --git a/src/otvalid/otvbase.c b/src/otvalid/otvbase.c
index a01d45c..918e383 100644
--- a/src/otvalid/otvbase.c
+++ b/src/otvalid/otvbase.c
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvbase.c                                                              */
-/*                                                                         */
-/*    OpenType BASE table validation (body).                               */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvbase.c
+ *
+ *   OpenType BASE table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "otvalid.h"
 #include "otvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_otvbase
 
diff --git a/src/otvalid/otvcommn.c b/src/otvalid/otvcommn.c
index 0ccfb03..4a2c95e 100644
--- a/src/otvalid/otvcommn.c
+++ b/src/otvalid/otvcommn.c
@@ -1,30 +1,30 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvcommn.c                                                             */
-/*                                                                         */
-/*    OpenType common tables validation (body).                            */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvcommn.c
+ *
+ *   OpenType common tables validation (body).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "otvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_otvcommon
 
diff --git a/src/otvalid/otvcommn.h b/src/otvalid/otvcommn.h
index a392784..3cd6d86 100644
--- a/src/otvalid/otvcommn.h
+++ b/src/otvalid/otvcommn.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvcommn.h                                                             */
-/*                                                                         */
-/*    OpenType common tables validation (specification).                   */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvcommn.h
+ *
+ *   OpenType common tables validation (specification).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef OTVCOMMN_H_
diff --git a/src/otvalid/otverror.h b/src/otvalid/otverror.h
index 2fcf42e..24e8d1d 100644
--- a/src/otvalid/otverror.h
+++ b/src/otvalid/otverror.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otverror.h                                                             */
-/*                                                                         */
-/*    OpenType validation module error codes (specification only).         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otverror.h
+ *
+ *   OpenType validation module error codes (specification only).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the OpenType validation module error      */
-  /* enumeration constants.                                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the OpenType validation module error
+   * enumeration constants.
+   *
+   */
 
 #ifndef OTVERROR_H_
 #define OTVERROR_H_
diff --git a/src/otvalid/otvgdef.c b/src/otvalid/otvgdef.c
index 08f3171..68c00a5 100644
--- a/src/otvalid/otvgdef.c
+++ b/src/otvalid/otvgdef.c
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvgdef.c                                                              */
-/*                                                                         */
-/*    OpenType GDEF table validation (body).                               */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvgdef.c
+ *
+ *   OpenType GDEF table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "otvalid.h"
 #include "otvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_otvgdef
 
diff --git a/src/otvalid/otvgpos.c b/src/otvalid/otvgpos.c
index 696b35c..17f2437 100644
--- a/src/otvalid/otvgpos.c
+++ b/src/otvalid/otvgpos.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvgpos.c                                                              */
-/*                                                                         */
-/*    OpenType GPOS table validation (body).                               */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvgpos.c
+ *
+ *   OpenType GPOS table validation (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "otvalid.h"
@@ -21,12 +21,12 @@
 #include "otvgpos.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_otvgpos
 
diff --git a/src/otvalid/otvgpos.h b/src/otvalid/otvgpos.h
index 95f9ac3..c216609 100644
--- a/src/otvalid/otvgpos.h
+++ b/src/otvalid/otvgpos.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvgpos.h                                                              */
-/*                                                                         */
-/*    OpenType GPOS table validator (specification).                       */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvgpos.h
+ *
+ *   OpenType GPOS table validator (specification).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef OTVGPOS_H_
diff --git a/src/otvalid/otvgsub.c b/src/otvalid/otvgsub.c
index d35ea67..0180b1a 100644
--- a/src/otvalid/otvgsub.c
+++ b/src/otvalid/otvgsub.c
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvgsub.c                                                              */
-/*                                                                         */
-/*    OpenType GSUB table validation (body).                               */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvgsub.c
+ *
+ *   OpenType GSUB table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "otvalid.h"
 #include "otvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_otvgsub
 
diff --git a/src/otvalid/otvjstf.c b/src/otvalid/otvjstf.c
index 94d4af9..7a5769a 100644
--- a/src/otvalid/otvjstf.c
+++ b/src/otvalid/otvjstf.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvjstf.c                                                              */
-/*                                                                         */
-/*    OpenType JSTF table validation (body).                               */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvjstf.c
+ *
+ *   OpenType JSTF table validation (body).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "otvalid.h"
@@ -21,12 +21,12 @@
 #include "otvgpos.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_otvjstf
 
diff --git a/src/otvalid/otvmath.c b/src/otvalid/otvmath.c
index b9800f6..4a9f3b0 100644
--- a/src/otvalid/otvmath.c
+++ b/src/otvalid/otvmath.c
@@ -1,21 +1,21 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvmath.c                                                              */
-/*                                                                         */
-/*    OpenType MATH table validation (body).                               */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  Written by George Williams.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvmath.c
+ *
+ *   OpenType MATH table validation (body).
+ *
+ * Copyright 2007-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Written by George Williams.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "otvalid.h"
@@ -23,12 +23,12 @@
 #include "otvgpos.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_otvmath
 
diff --git a/src/otvalid/otvmod.c b/src/otvalid/otvmod.c
index 89ee449..5dd543b 100644
--- a/src/otvalid/otvmod.c
+++ b/src/otvalid/otvmod.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvmod.c                                                               */
-/*                                                                         */
-/*    FreeType's OpenType validation module implementation (body).         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvmod.c
+ *
+ *   FreeType's OpenType validation module implementation (body).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -28,12 +28,12 @@
 #include "otvcommn.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_otvmodule
 
diff --git a/src/otvalid/otvmod.h b/src/otvalid/otvmod.h
index 6917bcc..a08512f 100644
--- a/src/otvalid/otvmod.h
+++ b/src/otvalid/otvmod.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  otvmod.h                                                               */
-/*                                                                         */
-/*    FreeType's OpenType validation module implementation                 */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * otvmod.h
+ *
+ *   FreeType's OpenType validation module implementation
+ *   (specification).
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef OTVMOD_H_
@@ -27,10 +27,6 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
 
   FT_EXPORT_VAR( const FT_Module_Class )  otv_module_class;
 
diff --git a/src/pcf/pcf.h b/src/pcf/pcf.h
index f0390cb..3c4eb6a 100644
--- a/src/pcf/pcf.h
+++ b/src/pcf/pcf.h
@@ -124,10 +124,14 @@
   } PCF_AccelRec, *PCF_Accel;
 
 
+  /*
+   * This file uses X11 terminology for PCF data; an `encoding' in X11 speak
+   * is the same as a `character code' in FreeType speak.
+   */
   typedef struct  PCF_EncodingRec_
   {
-    FT_Long    enc;
-    FT_UShort  glyph;
+    FT_ULong   enc;
+    FT_UShort  glyph;  /* an index into PCF_Face's `metrics' array */
 
   } PCF_EncodingRec, *PCF_Encoding;
 
@@ -153,7 +157,7 @@
     FT_ULong       nencodings;
     PCF_Encoding   encodings;
 
-    FT_Short       defaultChar;
+    FT_UShort      defaultChar;
 
     FT_ULong       bitmapsFormat;
 
diff --git a/src/pcf/pcfdrivr.c b/src/pcf/pcfdrivr.c
index 0119d94..e2f7e7c 100644
--- a/src/pcf/pcfdrivr.c
+++ b/src/pcf/pcfdrivr.c
@@ -53,16 +53,20 @@
 #include FT_DRIVER_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_pcfdriver
 
 
+  /*
+   * This file uses X11 terminology for PCF data; an `encoding' in X11 speak
+   * is the same as a `character code' in FreeType speak.
+   */
   typedef struct  PCF_CMapRec_
   {
     FT_CMapRec    root;
@@ -119,11 +123,11 @@
 
 
       mid  = ( min + max ) >> 1;
-      code = (FT_ULong)encodings[mid].enc;
+      code = encodings[mid].enc;
 
       if ( charcode == code )
       {
-        result = encodings[mid].glyph + 1;
+        result = encodings[mid].glyph;
         break;
       }
 
@@ -157,11 +161,11 @@
 
 
       mid  = ( min + max ) >> 1;
-      code = (FT_ULong)encodings[mid].enc;
+      code = encodings[mid].enc;
 
       if ( charcode == code )
       {
-        result = encodings[mid].glyph + 1;
+        result = encodings[mid].glyph;
         goto Exit;
       }
 
@@ -174,8 +178,8 @@
     charcode = 0;
     if ( min < cmap->num_encodings )
     {
-      charcode = (FT_ULong)encodings[min].enc;
-      result   = encodings[min].glyph + 1;
+      charcode = encodings[min].enc;
+      result   = encodings[min].glyph;
     }
 
   Exit:
@@ -187,6 +191,7 @@
     }
     else
       *acharcode = (FT_UInt32)charcode;
+
     return result;
   }
 
@@ -512,9 +517,6 @@
 
     stream = face->root.stream;
 
-    if ( glyph_index > 0 )
-      glyph_index--;
-
     metric = face->metrics + glyph_index;
 
     bitmap->rows       = (unsigned int)( metric->ascent +
@@ -601,11 +603,11 @@
   }
 
 
- /*
-  *
-  *  BDF SERVICE
-  *
-  */
+  /*
+   *
+   * BDF SERVICE
+   *
+   */
 
   static FT_Error
   pcf_get_bdf_property( PCF_Face          face,
@@ -633,9 +635,9 @@
         }
 
         /*
-         *  The PCF driver loads all properties as signed integers.
-         *  This really doesn't seem to be a problem, because this is
-         *  sufficient for any meaningful values.
+         * The PCF driver loads all properties as signed integers.
+         * This really doesn't seem to be a problem, because this is
+         * sufficient for any meaningful values.
          */
         aproperty->type      = BDF_PROPERTY_TYPE_INTEGER;
         aproperty->u.integer = (FT_Int32)prop->value.l;
@@ -668,7 +670,7 @@
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
   static FT_Error
@@ -777,11 +779,11 @@
     (FT_Properties_GetFunc)pcf_property_get )     /* get_property */
 
 
- /*
-  *
-  *  SERVICE LIST
-  *
-  */
+  /*
+   *
+   * SERVICE LIST
+   *
+   */
 
   static const FT_ServiceDescRec  pcf_services[] =
   {
diff --git a/src/pcf/pcfdrivr.h b/src/pcf/pcfdrivr.h
index 29d3049..73db082 100644
--- a/src/pcf/pcfdrivr.h
+++ b/src/pcf/pcfdrivr.h
@@ -31,11 +31,8 @@
 #include <ft2build.h>
 #include FT_INTERNAL_DRIVER_H
 
-FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
+FT_BEGIN_HEADER
 
   FT_EXPORT_VAR( const FT_Driver_ClassRec )  pcf_driver_class;
 
diff --git a/src/pcf/pcferror.h b/src/pcf/pcferror.h
index add8ef2..2e69d1d 100644
--- a/src/pcf/pcferror.h
+++ b/src/pcf/pcferror.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pcferror.h                                                             */
-/*                                                                         */
-/*    PCF error codes (specification only).                                */
-/*                                                                         */
-/*  Copyright 2001, 2012 by                                                */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pcferror.h
+ *
+ *   PCF error codes (specification only).
+ *
+ * Copyright 2001, 2012 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the PCF error enumeration constants.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the PCF error enumeration constants.
+   *
+   */
 
 #ifndef PCFERROR_H_
 #define PCFERROR_H_
diff --git a/src/pcf/pcfread.c b/src/pcf/pcfread.c
index 537da0d..14cce67 100644
--- a/src/pcf/pcfread.c
+++ b/src/pcf/pcfread.c
@@ -37,12 +37,12 @@
 #include "pcferror.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_pcfread
 
@@ -178,23 +178,23 @@
     }
 
     /*
-     *  We now check whether the `size' and `offset' values are reasonable:
-     *  `offset' + `size' must not exceed the stream size.
+     * We now check whether the `size' and `offset' values are reasonable:
+     * `offset' + `size' must not exceed the stream size.
      *
-     *  Note, however, that X11's `pcfWriteFont' routine (used by the
-     *  `bdftopcf' program to create PDF font files) has two special
-     *  features.
+     * Note, however, that X11's `pcfWriteFont' routine (used by the
+     * `bdftopcf' program to create PCF font files) has two special
+     * features.
      *
-     *  - It always assigns the accelerator table a size of 100 bytes in the
-     *    TOC, regardless of its real size, which can vary between 34 and 72
-     *    bytes.
+     * - It always assigns the accelerator table a size of 100 bytes in the
+     *   TOC, regardless of its real size, which can vary between 34 and 72
+     *   bytes.
      *
-     *  - Due to the way the routine is designed, it ships out the last font
-     *    table with its real size, ignoring the TOC's size value.  Since
-     *    the TOC size values are always rounded up to a multiple of 4, the
-     *    difference can be up to three bytes for all tables except the
-     *    accelerator table, for which the difference can be as large as 66
-     *    bytes.
+     * - Due to the way the routine is designed, it ships out the last font
+     *   table with its real size, ignoring the TOC's size value.  Since
+     *   the TOC size values are always rounded up to a multiple of 4, the
+     *   difference can be up to three bytes for all tables except the
+     *   accelerator table, for which the difference can be as large as 66
+     *   bytes.
      *
      */
 
@@ -810,8 +810,8 @@
   {
     FT_Error   error;
     FT_Memory  memory  = FT_FACE( face )->memory;
-    FT_Long*   offsets = NULL;
-    FT_Long    bitmapSizes[GLYPHPADOPTIONS];
+    FT_ULong*  offsets = NULL;
+    FT_ULong   bitmapSizes[GLYPHPADOPTIONS];
     FT_ULong   format, size;
     FT_ULong   nbitmaps, orig_nbitmaps, i, sizebitmaps = 0;
 
@@ -878,11 +878,11 @@
     for ( i = 0; i < nbitmaps; i++ )
     {
       if ( PCF_BYTE_ORDER( format ) == MSBFirst )
-        (void)FT_READ_LONG( offsets[i] );
+        (void)FT_READ_ULONG( offsets[i] );
       else
-        (void)FT_READ_LONG_LE( offsets[i] );
+        (void)FT_READ_ULONG_LE( offsets[i] );
 
-      FT_TRACE5(( "  bitmap %ld: offset %ld (0x%lX)\n",
+      FT_TRACE5(( "  bitmap %lu: offset %lu (0x%lX)\n",
                   i, offsets[i], offsets[i] ));
     }
     if ( error )
@@ -891,22 +891,22 @@
     for ( i = 0; i < GLYPHPADOPTIONS; i++ )
     {
       if ( PCF_BYTE_ORDER( format ) == MSBFirst )
-        (void)FT_READ_LONG( bitmapSizes[i] );
+        (void)FT_READ_ULONG( bitmapSizes[i] );
       else
-        (void)FT_READ_LONG_LE( bitmapSizes[i] );
+        (void)FT_READ_ULONG_LE( bitmapSizes[i] );
       if ( error )
         goto Bail;
 
-      sizebitmaps = (FT_ULong)bitmapSizes[PCF_GLYPH_PAD_INDEX( format )];
+      sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX( format )];
 
-      FT_TRACE4(( "  %ld-bit padding implies a size of %ld\n",
+      FT_TRACE4(( "  %ld-bit padding implies a size of %lu\n",
                   8 << i, bitmapSizes[i] ));
     }
 
-    FT_TRACE4(( "  %ld bitmaps, using %ld-bit padding\n",
+    FT_TRACE4(( "  %lu bitmaps, using %ld-bit padding\n",
                 nbitmaps,
                 8 << PCF_GLYPH_PAD_INDEX( format ) ));
-    FT_TRACE4(( "  bitmap size: %ld\n", sizebitmaps ));
+    FT_TRACE4(( "  bitmap size: %lu\n", sizebitmaps ));
 
     FT_UNUSED( sizebitmaps );       /* only used for debugging */
 
@@ -915,14 +915,13 @@
     for ( i = 0; i < nbitmaps; i++ )
     {
       /* rough estimate */
-      if ( ( offsets[i] < 0 )              ||
-           ( (FT_ULong)offsets[i] > size ) )
+      if ( offsets[i] > size )
       {
         FT_TRACE0(( "pcf_get_bitmaps:"
-                    " invalid offset to bitmap data of glyph %ld\n", i ));
+                    " invalid offset to bitmap data of glyph %lu\n", i ));
       }
       else
-        face->metrics[i].bits = stream->pos + (FT_ULong)offsets[i];
+        face->metrics[i].bits = stream->pos + offsets[i];
     }
 
     face->bitmapsFormat = format;
@@ -933,6 +932,10 @@
   }
 
 
+  /*
+   * This file uses X11 terminology for PCF data; an `encoding' in X11 speak
+   * is the same as a character code in FreeType speak.
+   */
   static FT_Error
   pcf_get_encodings( FT_Stream  stream,
                      PCF_Face   face )
@@ -940,11 +943,13 @@
     FT_Error      error;
     FT_Memory     memory = FT_FACE( face )->memory;
     FT_ULong      format, size;
-    int           firstCol, lastCol;
-    int           firstRow, lastRow;
+    FT_UShort     firstCol, lastCol;
+    FT_UShort     firstRow, lastRow;
     FT_ULong      nencoding;
-    FT_UShort     encodingOffset;
-    int           i, j;
+    FT_UShort     defaultCharRow, defaultCharCol;
+    FT_UShort     encodingOffset, defaultCharEncodingOffset;
+    FT_UShort     i, j;
+    FT_Byte*      pos;
     FT_ULong      k;
     PCF_Encoding  encoding = NULL;
 
@@ -964,21 +969,24 @@
 
     format = FT_GET_ULONG_LE();
 
+    /* X11's reference implementation uses the equivalent to  */
+    /* `FT_GET_SHORT' for `defaultChar', however this doesn't */
+    /* make sense for most encodings.                         */
     if ( PCF_BYTE_ORDER( format ) == MSBFirst )
     {
-      firstCol          = FT_GET_SHORT();
-      lastCol           = FT_GET_SHORT();
-      firstRow          = FT_GET_SHORT();
-      lastRow           = FT_GET_SHORT();
-      face->defaultChar = FT_GET_SHORT();
+      firstCol          = FT_GET_USHORT();
+      lastCol           = FT_GET_USHORT();
+      firstRow          = FT_GET_USHORT();
+      lastRow           = FT_GET_USHORT();
+      face->defaultChar = FT_GET_USHORT();
     }
     else
     {
-      firstCol          = FT_GET_SHORT_LE();
-      lastCol           = FT_GET_SHORT_LE();
-      firstRow          = FT_GET_SHORT_LE();
-      lastRow           = FT_GET_SHORT_LE();
-      face->defaultChar = FT_GET_SHORT_LE();
+      firstCol          = FT_GET_USHORT_LE();
+      lastCol           = FT_GET_USHORT_LE();
+      firstRow          = FT_GET_USHORT_LE();
+      lastRow           = FT_GET_USHORT_LE();
+      face->defaultChar = FT_GET_USHORT_LE();
     }
 
     FT_Stream_ExitFrame( stream );
@@ -992,15 +1000,15 @@
       return FT_THROW( Invalid_File_Format );
 
     FT_TRACE4(( "  firstCol 0x%X, lastCol 0x%X\n"
-                "  firstRow 0x%X, lastRow 0x%X\n",
+                "  firstRow 0x%X, lastRow 0x%X\n"
+                "  defaultChar 0x%X\n",
                 firstCol, lastCol,
-                firstRow, lastRow ));
+                firstRow, lastRow,
+                face->defaultChar ));
 
     /* sanity checks; we limit numbers of rows and columns to 256 */
-    if ( firstCol < 0       ||
-         firstCol > lastCol ||
+    if ( firstCol > lastCol ||
          lastCol  > 0xFF    ||
-         firstRow < 0       ||
          firstRow > lastRow ||
          lastRow  > 0xFF    )
       return FT_THROW( Invalid_Table );
@@ -1017,6 +1025,58 @@
 
     FT_TRACE5(( "\n" ));
 
+    defaultCharRow = face->defaultChar >> 8;
+    defaultCharCol = face->defaultChar & 0xFF;
+
+    /* validate default character */
+    if ( defaultCharRow < firstRow ||
+         defaultCharRow > lastRow  ||
+         defaultCharCol < firstCol ||
+         defaultCharCol > lastCol  )
+    {
+      face->defaultChar = firstRow * 256U + firstCol;
+      FT_TRACE0(( "pcf_get_encodings:"
+                  " Invalid default character set to %u\n",
+                  face->defaultChar ));
+
+      defaultCharRow = face->defaultChar >> 8;
+      defaultCharCol = face->defaultChar & 0xFF;
+    }
+
+    /* FreeType mandates that glyph index 0 is the `undefined glyph',  */
+    /* which PCF calls the `default character'.  For this reason, we   */
+    /* swap the positions of glyph index 0 and the index corresponding */
+    /* to `defaultChar' in case they are different.                    */
+
+    /* `stream->cursor' still points at the beginning of the frame; */
+    /* we can thus easily get the offset to the default character   */
+    pos = stream->cursor +
+            2 * ( ( defaultCharRow - firstRow ) * ( lastCol - firstCol + 1 ) +
+                  defaultCharCol - firstCol );
+
+    if ( PCF_BYTE_ORDER( format ) == MSBFirst )
+      defaultCharEncodingOffset = FT_PEEK_USHORT( pos );
+    else
+      defaultCharEncodingOffset = FT_PEEK_USHORT_LE( pos );
+
+    if ( defaultCharEncodingOffset >= face->nmetrics )
+    {
+      FT_TRACE0(( "pcf_get_encodings:"
+                  " Invalid glyph index for default character,"
+                  " setting to zero\n" ));
+      defaultCharEncodingOffset = 0;
+    }
+
+    if ( defaultCharEncodingOffset )
+    {
+      /* do the swapping */
+      PCF_MetricRec  tmp = face->metrics[defaultCharEncodingOffset];
+
+
+      face->metrics[defaultCharEncodingOffset] = face->metrics[0];
+      face->metrics[0]                         = tmp;
+    }
+
     k = 0;
     for ( i = firstRow; i <= lastRow; i++ )
     {
@@ -1024,7 +1084,7 @@
       {
         /* X11's reference implementation uses the equivalent to  */
         /* `FT_GET_SHORT', however PCF fonts with more than 32768 */
-        /* characters (e.g. `unifont.pcf') clearly show that an   */
+        /* characters (e.g., `unifont.pcf') clearly show that an  */
         /* unsigned value is needed.                              */
         if ( PCF_BYTE_ORDER( format ) == MSBFirst )
           encodingOffset = FT_GET_USHORT();
@@ -1033,10 +1093,15 @@
 
         if ( encodingOffset != 0xFFFFU )
         {
-          encoding[k].enc   = i * 256 + j;
+          if ( encodingOffset == defaultCharEncodingOffset )
+            encodingOffset = 0;
+          else if ( encodingOffset == 0 )
+            encodingOffset = defaultCharEncodingOffset;
+
+          encoding[k].enc   = i * 256U + j;
           encoding[k].glyph = encodingOffset;
 
-          FT_TRACE5(( "  code %d (0x%04X): idx %d\n",
+          FT_TRACE5(( "  code %u (0x%04X): idx %u\n",
                       encoding[k].enc, encoding[k].enc, encoding[k].glyph ));
 
           k++;
@@ -1397,8 +1462,7 @@
 
 
       root->face_flags |= FT_FACE_FLAG_FIXED_SIZES |
-                          FT_FACE_FLAG_HORIZONTAL  |
-                          FT_FACE_FLAG_FAST_GLYPHS;
+                          FT_FACE_FLAG_HORIZONTAL;
 
       if ( face->accel.constantWidth )
         root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;
@@ -1482,14 +1546,7 @@
       else
         root->family_name = NULL;
 
-      /*
-       * Note: We shift all glyph indices by +1 since we must
-       * respect the convention that glyph 0 always corresponds
-       * to the `missing glyph'.
-       *
-       * This implies bumping the number of `available' glyphs by 1.
-       */
-      root->num_glyphs = (FT_Long)( face->nmetrics + 1 );
+      root->num_glyphs = (FT_Long)face->nmetrics;
 
       root->num_fixed_sizes = 1;
       if ( FT_NEW_ARRAY( root->available_sizes, 1 ) )
diff --git a/src/pcf/pcfutil.c b/src/pcf/pcfutil.c
index 0451ee8..045c42d 100644
--- a/src/pcf/pcfutil.c
+++ b/src/pcf/pcfutil.c
@@ -37,7 +37,7 @@
 
 
   /*
-   *  Invert bit order within each BYTE of an array.
+   * Invert bit order within each BYTE of an array.
    */
 
   FT_LOCAL_DEF( void )
@@ -59,7 +59,7 @@
 
 
   /*
-   *  Invert byte order within each 16-bits of an array.
+   * Invert byte order within each 16-bits of an array.
    */
 
   FT_LOCAL_DEF( void )
@@ -78,7 +78,7 @@
   }
 
   /*
-   *  Invert byte order within each 32-bits of an array.
+   * Invert byte order within each 32-bits of an array.
    */
 
   FT_LOCAL_DEF( void )
diff --git a/src/pfr/pfr.c b/src/pfr/pfr.c
index 1760882..2d34615 100644
--- a/src/pfr/pfr.c
+++ b/src/pfr/pfr.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfr.c                                                                  */
-/*                                                                         */
-/*    FreeType PFR driver component.                                       */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfr.c
+ *
+ *   FreeType PFR driver component.
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
diff --git a/src/pfr/pfrcmap.c b/src/pfr/pfrcmap.c
index 6064378..d83dc58 100644
--- a/src/pfr/pfrcmap.c
+++ b/src/pfr/pfrcmap.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrcmap.c                                                              */
-/*                                                                         */
-/*    FreeType PFR cmap handling (body).                                   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrcmap.c
+ *
+ *   FreeType PFR cmap handling (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/pfr/pfrcmap.h b/src/pfr/pfrcmap.h
index c70a0c8..6a43bdb 100644
--- a/src/pfr/pfrcmap.h
+++ b/src/pfr/pfrcmap.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrcmap.h                                                              */
-/*                                                                         */
-/*    FreeType PFR cmap handling (specification).                          */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrcmap.h
+ *
+ *   FreeType PFR cmap handling (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PFRCMAP_H_
diff --git a/src/pfr/pfrdrivr.c b/src/pfr/pfrdrivr.c
index 6c7e501..4b8707f 100644
--- a/src/pfr/pfrdrivr.c
+++ b/src/pfr/pfrdrivr.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrdrivr.c                                                             */
-/*                                                                         */
-/*    FreeType PFR driver interface (body).                                */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrdrivr.c
+ *
+ *   FreeType PFR driver interface (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -57,10 +57,10 @@
   }
 
 
- /*
-  *  PFR METRICS SERVICE
-  *
-  */
+  /*
+   * PFR METRICS SERVICE
+   *
+   */
 
   FT_CALLBACK_DEF( FT_Error )
   pfr_get_advance( FT_Face   pfrface,       /* PFR_Face */
@@ -145,10 +145,10 @@
   };
 
 
- /*
-  *  SERVICE LIST
-  *
-  */
+  /*
+   * SERVICE LIST
+   *
+   */
 
   static const FT_ServiceDescRec  pfr_services[] =
   {
diff --git a/src/pfr/pfrdrivr.h b/src/pfr/pfrdrivr.h
index cab8527..6adb2fd 100644
--- a/src/pfr/pfrdrivr.h
+++ b/src/pfr/pfrdrivr.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrdrivr.h                                                             */
-/*                                                                         */
-/*    High-level Type PFR driver interface (specification).                */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrdrivr.h
+ *
+ *   High-level Type PFR driver interface (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PFRDRIVR_H_
@@ -26,14 +26,8 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
-
   FT_EXPORT_VAR( const FT_Driver_ClassRec )  pfr_driver_class;
 
-
 FT_END_HEADER
 
 
diff --git a/src/pfr/pfrerror.h b/src/pfr/pfrerror.h
index 7027c81..f9fde3a 100644
--- a/src/pfr/pfrerror.h
+++ b/src/pfr/pfrerror.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrerror.h                                                             */
-/*                                                                         */
-/*    PFR error codes (specification only).                                */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrerror.h
+ *
+ *   PFR error codes (specification only).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the PFR error enumeration constants.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the PFR error enumeration constants.
+   *
+   */
 
 #ifndef PFRERROR_H_
 #define PFRERROR_H_
diff --git a/src/pfr/pfrgload.c b/src/pfr/pfrgload.c
index b799019..06723ff 100644
--- a/src/pfr/pfrgload.c
+++ b/src/pfr/pfrgload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrgload.c                                                             */
-/*                                                                         */
-/*    FreeType PFR glyph loader (body).                                    */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrgload.c
+ *
+ *   FreeType PFR glyph loader (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "pfrgload.h"
@@ -359,9 +359,9 @@
         FT_UInt  format, format_low, args_format = 0, args_count, n;
 
 
-        /***************************************************************/
-        /*  read instruction                                           */
-        /*                                                             */
+        /****************************************************************
+         * read instruction
+         */
         PFR_CHECK( 1 );
         format     = PFR_NEXT_BYTE( p );
         format_low = format & 15;
@@ -426,9 +426,9 @@
           args_format = format_low;
         }
 
-        /***********************************************************/
-        /*  now read arguments                                     */
-        /*                                                         */
+        /************************************************************
+         * now read arguments
+         */
         cur = pos;
         for ( n = 0; n < args_count; n++ )
         {
@@ -513,9 +513,9 @@
 
         FT_TRACE7(( "\n" ));
 
-        /***********************************************************/
-        /*  finally, execute instruction                           */
-        /*                                                         */
+        /************************************************************
+         * finally, execute instruction
+         */
         switch ( format >> 4 )
         {
         case 0:                                       /* end glyph => EXIT */
diff --git a/src/pfr/pfrgload.h b/src/pfr/pfrgload.h
index 01f48d7..6a5de29 100644
--- a/src/pfr/pfrgload.h
+++ b/src/pfr/pfrgload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrgload.h                                                             */
-/*                                                                         */
-/*    FreeType PFR glyph loader (specification).                           */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrgload.h
+ *
+ *   FreeType PFR glyph loader (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PFRGLOAD_H_
diff --git a/src/pfr/pfrload.c b/src/pfr/pfrload.c
index 2776da4..e9c0099 100644
--- a/src/pfr/pfrload.c
+++ b/src/pfr/pfrload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrload.c                                                              */
-/*                                                                         */
-/*    FreeType PFR loader (body).                                          */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrload.c
+ *
+ *   FreeType PFR loader (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "pfrload.h"
@@ -27,88 +27,88 @@
 
 
   /*
-   *  The overall structure of a PFR file is as follows.
+   * The overall structure of a PFR file is as follows.
    *
-   *    PFR header
-   *      58 bytes (contains nPhysFonts)
+   *   PFR header
+   *     58 bytes (contains nPhysFonts)
    *
-   *    Logical font directory (size at most 2^16 bytes)
-   *      2 bytes (nLogFonts)
-   *      + nLogFonts * 5 bytes
+   *   Logical font directory (size at most 2^16 bytes)
+   *     2 bytes (nLogFonts)
+   *     + nLogFonts * 5 bytes
    *
-   *         ==>   nLogFonts <= 13106
+   *        ==>  nLogFonts <= 13106
    *
-   *    Logical font section (size at most 2^24 bytes)
-   *      nLogFonts * logFontRecord
+   *   Logical font section (size at most 2^24 bytes)
+   *     nLogFonts * logFontRecord
    *
-   *      logFontRecord (size at most 2^16 bytes)
-   *        12 bytes (fontMatrix)
-   *        + 1 byte (flags)
-   *        + 0-5 bytes (depending on `flags')
-   *        + 0-(1+255*(2+255)) = 0-65536 (depending on `flags')
-   *        + 5 bytes (physical font info)
-   *        + 0-1 bytes (depending on PFR header)
+   *     logFontRecord (size at most 2^16 bytes)
+   *       12 bytes (fontMatrix)
+   *       + 1 byte (flags)
+   *       + 0-5 bytes (depending on `flags')
+   *       + 0-(1+255*(2+255)) = 0-65536 (depending on `flags')
+   *       + 5 bytes (physical font info)
+   *       + 0-1 bytes (depending on PFR header)
    *
-   *         ==>   minimum size 18 bytes
+   *        ==>  minimum size 18 bytes
    *
-   *    Physical font section (size at most 2^24 bytes)
-   *      nPhysFonts * (physFontRecord
-   *                    + nBitmapSizes * nBmapChars * bmapCharRecord)
+   *   Physical font section (size at most 2^24 bytes)
+   *     nPhysFonts * (physFontRecord
+   *                   + nBitmapSizes * nBmapChars * bmapCharRecord)
    *
-   *      physFontRecord (size at most 2^24 bytes)
-   *        14 bytes (font info)
-   *        + 1 byte (flags)
-   *        + 0-2 (depending on `flags')
-   *        + 0-? (structure too complicated to be shown here; depending on
-   *               `flags'; contains `nBitmapSizes' and `nBmapChars')
-   *        + 3 bytes (nAuxBytes)
-   *        + nAuxBytes
-   *        + 1 byte (nBlueValues)
-   *        + 2 * nBlueValues
-   *        + 6 bytes (hinting data)
-   *        + 2 bytes (nCharacters)
-   *        + nCharacters * (4-10 bytes) (depending on `flags')
+   *     physFontRecord (size at most 2^24 bytes)
+   *       14 bytes (font info)
+   *       + 1 byte (flags)
+   *       + 0-2 (depending on `flags')
+   *       + 0-? (structure too complicated to be shown here; depending on
+   *              `flags'; contains `nBitmapSizes' and `nBmapChars')
+   *       + 3 bytes (nAuxBytes)
+   *       + nAuxBytes
+   *       + 1 byte (nBlueValues)
+   *       + 2 * nBlueValues
+   *       + 6 bytes (hinting data)
+   *       + 2 bytes (nCharacters)
+   *       + nCharacters * (4-10 bytes) (depending on `flags')
    *
-   *         ==>   minimum size 27 bytes
+   *        ==>  minimum size 27 bytes
    *
-   *      bmapCharRecord
-   *        4-7 bytes
+   *     bmapCharRecord
+   *       4-7 bytes
    *
-   *    Glyph program strings (three possible types: simpleGps, compoundGps,
-   *                           and bitmapGps; size at most 2^24 bytes)
-   *      simpleGps (size at most 2^16 bytes)
-   *        1 byte (flags)
-   *        1-2 bytes (n[XY]orus, depending on `flags')
-   *        0-(64+512*2) = 0-1088 bytes (depending on `n[XY]orus')
-   *        0-? (structure too complicated to be shown here; depending on
-   *             `flags')
-   *        1-? glyph data (faintly resembling PS Type 1 charstrings)
+   *   Glyph program strings (three possible types: simpleGps, compoundGps,
+   *                          and bitmapGps; size at most 2^24 bytes)
+   *     simpleGps (size at most 2^16 bytes)
+   *       1 byte (flags)
+   *       1-2 bytes (n[XY]orus, depending on `flags')
+   *       0-(64+512*2) = 0-1088 bytes (depending on `n[XY]orus')
+   *       0-? (structure too complicated to be shown here; depending on
+   *            `flags')
+   *       1-? glyph data (faintly resembling PS Type 1 charstrings)
    *
-   *         ==>   minimum size 3 bytes
+   *        ==>  minimum size 3 bytes
    *
-   *      compoundGps (size at most 2^16 bytes)
-   *        1 byte (nElements <= 63, flags)
-   *        + 0-(1+255*(2+255)) = 0-65536 (depending on `flags')
-   *        + nElements * (6-14 bytes)
+   *     compoundGps (size at most 2^16 bytes)
+   *       1 byte (nElements <= 63, flags)
+   *       + 0-(1+255*(2+255)) = 0-65536 (depending on `flags')
+   *       + nElements * (6-14 bytes)
    *
-   *      bitmapGps (size at most 2^16 bytes)
-   *        1 byte (flags)
-   *        3-13 bytes (position info, depending on `flags')
-   *        0-? bitmap data
+   *     bitmapGps (size at most 2^16 bytes)
+   *       1 byte (flags)
+   *       3-13 bytes (position info, depending on `flags')
+   *       0-? bitmap data
    *
-   *         ==>   minimum size 4 bytes
+   *        ==>  minimum size 4 bytes
    *
-   *    PFR trailer
-   *        8 bytes
+   *   PFR trailer
+   *       8 bytes
    *
    *
-   * ==>   minimum size of a valid PFR:
-   *         58 (header)
-   *         + 2 (nLogFonts)
-   *         + 27 (1 physFontRecord)
-   *         + 8 (trailer)
-   *        -----
-   *         95 bytes
+   * ==>  minimum size of a valid PFR:
+   *        58 (header)
+   *        + 2 (nLogFonts)
+   *        + 27 (1 physFontRecord)
+   *        + 8 (trailer)
+   *       -----
+   *        95 bytes
    *
    */
 
diff --git a/src/pfr/pfrload.h b/src/pfr/pfrload.h
index 36e809a..ef29973 100644
--- a/src/pfr/pfrload.h
+++ b/src/pfr/pfrload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrload.h                                                              */
-/*                                                                         */
-/*    FreeType PFR loader (specification).                                 */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrload.h
+ *
+ *   FreeType PFR loader (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PFRLOAD_H_
diff --git a/src/pfr/pfrobjs.c b/src/pfr/pfrobjs.c
index 737b97b..e51a842 100644
--- a/src/pfr/pfrobjs.c
+++ b/src/pfr/pfrobjs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrobjs.c                                                              */
-/*                                                                         */
-/*    FreeType PFR object methods (body).                                  */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrobjs.c
+ *
+ *   FreeType PFR object methods (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "pfrobjs.h"
diff --git a/src/pfr/pfrobjs.h b/src/pfr/pfrobjs.h
index 59c709f..e03573f 100644
--- a/src/pfr/pfrobjs.h
+++ b/src/pfr/pfrobjs.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrobjs.h                                                              */
-/*                                                                         */
-/*    FreeType PFR object methods (specification).                         */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrobjs.h
+ *
+ *   FreeType PFR object methods (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PFROBJS_H_
diff --git a/src/pfr/pfrsbit.c b/src/pfr/pfrsbit.c
index ba909dd..f5d3077 100644
--- a/src/pfr/pfrsbit.c
+++ b/src/pfr/pfrsbit.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrsbit.c                                                              */
-/*                                                                         */
-/*    FreeType PFR bitmap loader (body).                                   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrsbit.c
+ *
+ *   FreeType PFR bitmap loader (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "pfrsbit.h"
diff --git a/src/pfr/pfrsbit.h b/src/pfr/pfrsbit.h
index 07b27bc..7002df4 100644
--- a/src/pfr/pfrsbit.h
+++ b/src/pfr/pfrsbit.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrsbit.h                                                              */
-/*                                                                         */
-/*    FreeType PFR bitmap loader (specification).                          */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrsbit.h
+ *
+ *   FreeType PFR bitmap loader (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PFRSBIT_H_
diff --git a/src/pfr/pfrtypes.h b/src/pfr/pfrtypes.h
index 058d6aa..794706b 100644
--- a/src/pfr/pfrtypes.h
+++ b/src/pfr/pfrtypes.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pfrtypes.h                                                             */
-/*                                                                         */
-/*    FreeType PFR data structures (specification only).                   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pfrtypes.h
+ *
+ *   FreeType PFR data structures (specification only).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PFRTYPES_H_
diff --git a/src/psaux/afmparse.c b/src/psaux/afmparse.c
index 0c33d59..04c191f 100644
--- a/src/psaux/afmparse.c
+++ b/src/psaux/afmparse.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afmparse.c                                                             */
-/*                                                                         */
-/*    AFM parser (body).                                                   */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afmparse.c
+ *
+ *   AFM parser (body).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #include <ft2build.h>
 #include FT_FREETYPE_H
@@ -28,13 +28,13 @@
 #include "psauxerr.h"
 
 
-/***************************************************************************/
-/*                                                                         */
-/*    AFM_Stream                                                           */
-/*                                                                         */
-/* The use of AFM_Stream is largely inspired by parseAFM.[ch] from t1lib.  */
-/*                                                                         */
-/*                                                                         */
+  /**************************************************************************
+   *
+   * AFM_Stream
+   *
+   * The use of AFM_Stream is largely inspired by parseAFM.[ch] from t1lib.
+   *
+   */
 
   enum
   {
@@ -193,11 +193,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*    AFM_Parser                                                         */
-  /*                                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * AFM_Parser
+   *
+   */
 
   /* all keys defined in Ch. 7-10 of 5004.AFM_Spec.pdf */
   typedef enum  AFM_Token_
diff --git a/src/psaux/afmparse.h b/src/psaux/afmparse.h
index 86f852a..2fcc80e 100644
--- a/src/psaux/afmparse.h
+++ b/src/psaux/afmparse.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afmparse.h                                                             */
-/*                                                                         */
-/*    AFM parser (specification).                                          */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afmparse.h
+ *
+ *   AFM parser (specification).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef AFMPARSE_H_
diff --git a/src/psaux/cffdecode.c b/src/psaux/cffdecode.c
index 80d622c..024eb9c 100644
--- a/src/psaux/cffdecode.c
+++ b/src/psaux/cffdecode.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffdecode.c                                                            */
-/*                                                                         */
-/*    PostScript CFF (Type 2) decoding routines (body).                    */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffdecode.c
+ *
+ *   PostScript CFF (Type 2) decoding routines (body).
+ *
+ * Copyright 2017-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -28,12 +28,12 @@
 #include "psauxerr.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cffdecode
 
@@ -378,23 +378,26 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_compute_bias                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the bias value in dependence of the number of glyph       */
-  /*    subroutines.                                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    in_charstring_type :: The `CharstringType' value of the top DICT   */
-  /*                          dictionary.                                  */
-  /*                                                                       */
-  /*    num_subrs          :: The number of glyph subroutines.             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The bias value.                                                    */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_compute_bias
+   *
+   * @Description:
+   *   Computes the bias value in dependence of the number of glyph
+   *   subroutines.
+   *
+   * @Input:
+   *   in_charstring_type ::
+   *     The `CharstringType' value of the top DICT
+   *     dictionary.
+   *
+   *   num_subrs ::
+   *     The number of glyph subroutines.
+   *
+   * @Return:
+   *   The bias value.
+   */
   static FT_Int
   cff_compute_bias( FT_Int   in_charstring_type,
                     FT_UInt  num_subrs )
@@ -464,28 +467,32 @@
 
 #ifdef CFF_CONFIG_OPTION_OLD_ENGINE
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_decoder_parse_charstrings                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parses a given Type 2 charstrings program.                         */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    decoder         :: The current Type 1 decoder.                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    charstring_base :: The base of the charstring stream.              */
-  /*                                                                       */
-  /*    charstring_len  :: The length in bytes of the charstring stream.   */
-  /*                                                                       */
-  /*    in_dict         :: Set to 1 if function is called from top or      */
-  /*                       private DICT (needed for Multiple Master CFFs). */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_decoder_parse_charstrings
+   *
+   * @Description:
+   *   Parses a given Type 2 charstrings program.
+   *
+   * @InOut:
+   *   decoder ::
+   *     The current Type 1 decoder.
+   *
+   * @Input:
+   *   charstring_base ::
+   *     The base of the charstring stream.
+   *
+   *   charstring_len ::
+   *     The length in bytes of the charstring stream.
+   *
+   *   in_dict ::
+   *     Set to 1 if function is called from top or
+   *     private DICT (needed for Multiple Master CFFs).
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   cff_decoder_parse_charstrings( CFF_Decoder*  decoder,
                                  FT_Byte*      charstring_base,
@@ -543,10 +550,10 @@
       FT_Byte       v;
 
 
-      /********************************************************************/
-      /*                                                                  */
-      /* Decode operator or operand                                       */
-      /*                                                                  */
+      /*********************************************************************
+       *
+       * Decode operator or operand
+       */
       v = *ip++;
       if ( v >= 32 || v == 28 )
       {
@@ -2251,28 +2258,34 @@
 #endif /* CFF_CONFIG_OPTION_OLD_ENGINE */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_decoder_init                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a given glyph decoder.                                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    decoder :: A pointer to the glyph builder to initialize.           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face      :: The current face object.                              */
-  /*                                                                       */
-  /*    size      :: The current size object.                              */
-  /*                                                                       */
-  /*    slot      :: The current glyph object.                             */
-  /*                                                                       */
-  /*    hinting   :: Whether hinting is active.                            */
-  /*                                                                       */
-  /*    hint_mode :: The hinting mode.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_decoder_init
+   *
+   * @Description:
+   *   Initializes a given glyph decoder.
+   *
+   * @InOut:
+   *   decoder ::
+   *     A pointer to the glyph builder to initialize.
+   *
+   * @Input:
+   *   face ::
+   *     The current face object.
+   *
+   *   size ::
+   *     The current size object.
+   *
+   *   slot ::
+   *     The current glyph object.
+   *
+   *   hinting ::
+   *     Whether hinting is active.
+   *
+   *   hint_mode ::
+   *     The hinting mode.
+   */
   FT_LOCAL_DEF( void )
   cff_decoder_init( CFF_Decoder*                     decoder,
                     TT_Face                          face,
diff --git a/src/psaux/cffdecode.h b/src/psaux/cffdecode.h
index 0d4f5fe..b4003bc 100644
--- a/src/psaux/cffdecode.h
+++ b/src/psaux/cffdecode.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffdecode.h                                                            */
-/*                                                                         */
-/*    PostScript CFF (Type 2) decoding routines (specification).           */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffdecode.h
+ *
+ *   PostScript CFF (Type 2) decoding routines (specification).
+ *
+ * Copyright 2017-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef CFFDECODE_H_
diff --git a/src/psaux/psarrst.c b/src/psaux/psarrst.c
index a878094..011803b 100644
--- a/src/psaux/psarrst.c
+++ b/src/psaux/psarrst.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psarrst.c                                                              */
-/*                                                                         */
-/*    Adobe's code for Array Stacks (body).                                */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psarrst.c
+ *
+ *   Adobe's code for Array Stacks (body).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
diff --git a/src/psaux/psarrst.h b/src/psaux/psarrst.h
index b3568eb..098617b 100644
--- a/src/psaux/psarrst.h
+++ b/src/psaux/psarrst.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psarrst.h                                                              */
-/*                                                                         */
-/*    Adobe's code for Array Stacks (specification).                       */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psarrst.h
+ *
+ *   Adobe's code for Array Stacks (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSARRST_H_
diff --git a/src/psaux/psaux.c b/src/psaux/psaux.c
index fb447fc..3718876 100644
--- a/src/psaux/psaux.c
+++ b/src/psaux/psaux.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psaux.c                                                                */
-/*                                                                         */
-/*    FreeType auxiliary PostScript driver component (body only).          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psaux.c
+ *
+ *   FreeType auxiliary PostScript driver component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
diff --git a/src/psaux/psauxerr.h b/src/psaux/psauxerr.h
index cc33fd2..3062ae5 100644
--- a/src/psaux/psauxerr.h
+++ b/src/psaux/psauxerr.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psauxerr.h                                                             */
-/*                                                                         */
-/*    PS auxiliary module error codes (specification only).                */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psauxerr.h
+ *
+ *   PS auxiliary module error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the PS auxiliary module error enumeration */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the PS auxiliary module error enumeration
+   * constants.
+   *
+   */
 
 #ifndef PSAUXERR_H_
 #define PSAUXERR_H_
diff --git a/src/psaux/psauxmod.c b/src/psaux/psauxmod.c
index ee49708..41ce294 100644
--- a/src/psaux/psauxmod.c
+++ b/src/psaux/psauxmod.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psauxmod.c                                                             */
-/*                                                                         */
-/*    FreeType auxiliary PostScript module implementation (body).          */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psauxmod.c
+ *
+ *   FreeType auxiliary PostScript module implementation (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/psaux/psauxmod.h b/src/psaux/psauxmod.h
index f30978f..9d894f7 100644
--- a/src/psaux/psauxmod.h
+++ b/src/psaux/psauxmod.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psauxmod.h                                                             */
-/*                                                                         */
-/*    FreeType auxiliary PostScript module implementation (specification). */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psauxmod.h
+ *
+ *   FreeType auxiliary PostScript module implementation (specification).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSAUXMOD_H_
@@ -28,10 +28,6 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
 
   FT_CALLBACK_TABLE
   const CFF_Builder_FuncsRec  cff_builder_funcs;
diff --git a/src/psaux/psblues.c b/src/psaux/psblues.c
index ae39d03..e44f3c7 100644
--- a/src/psaux/psblues.c
+++ b/src/psaux/psblues.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psblues.c                                                              */
-/*                                                                         */
-/*    Adobe's code for handling Blue Zones (body).                         */
-/*                                                                         */
-/*  Copyright 2009-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psblues.c
+ *
+ *   Adobe's code for handling Blue Zones (body).
+ *
+ * Copyright 2009-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -44,12 +44,12 @@
 #include "psfont.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cf2blues
 
@@ -452,13 +452,13 @@
    * zones in the same pass (see `BlueLock').  If a hint is captured,
    * return true and position the edge(s) in one of 3 ways:
    *
-   *  1) If `BlueScale' suppresses overshoot, position the captured edge
-   *     at the flat edge of the zone.
-   *  2) If overshoot is not suppressed and `BlueShift' requires
-   *     overshoot, position the captured edge a minimum of 1 device pixel
-   *     from the flat edge.
-   *  3) If overshoot is not suppressed or required, position the captured
-   *     edge at the nearest device pixel.
+   * 1) If `BlueScale' suppresses overshoot, position the captured edge
+   *    at the flat edge of the zone.
+   * 2) If overshoot is not suppressed and `BlueShift' requires
+   *    overshoot, position the captured edge a minimum of 1 device pixel
+   *    from the flat edge.
+   * 3) If overshoot is not suppressed or required, position the captured
+   *    edge at the nearest device pixel.
    *
    */
   FT_LOCAL_DEF( FT_Bool )
diff --git a/src/psaux/psblues.h b/src/psaux/psblues.h
index 25ef684..55fb88e 100644
--- a/src/psaux/psblues.h
+++ b/src/psaux/psblues.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psblues.h                                                              */
-/*                                                                         */
-/*    Adobe's code for handling Blue Zones (specification).                */
-/*                                                                         */
-/*  Copyright 2009-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psblues.h
+ *
+ *   Adobe's code for handling Blue Zones (specification).
+ *
+ * Copyright 2009-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
   /*
diff --git a/src/psaux/psconv.c b/src/psaux/psconv.c
index a033850..74273f7 100644
--- a/src/psaux/psconv.c
+++ b/src/psaux/psconv.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psconv.c                                                               */
-/*                                                                         */
-/*    Some convenience conversions (body).                                 */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psconv.c
+ *
+ *   Some convenience conversions (body).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -24,12 +24,12 @@
 #include "psauxerr.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_psconv
 
diff --git a/src/psaux/psconv.h b/src/psaux/psconv.h
index d643ffc..2472942 100644
--- a/src/psaux/psconv.h
+++ b/src/psaux/psconv.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psconv.h                                                               */
-/*                                                                         */
-/*    Some convenience conversions (specification).                        */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psconv.h
+ *
+ *   Some convenience conversions (specification).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSCONV_H_
diff --git a/src/psaux/pserror.c b/src/psaux/pserror.c
index 9169e52..98cebcf 100644
--- a/src/psaux/pserror.c
+++ b/src/psaux/pserror.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pserror.c                                                              */
-/*                                                                         */
-/*    Adobe's code for error handling (body).                              */
-/*                                                                         */
-/*  Copyright 2006-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pserror.c
+ *
+ *   Adobe's code for error handling (body).
+ *
+ * Copyright 2006-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
diff --git a/src/psaux/pserror.h b/src/psaux/pserror.h
index 13d5206..b2156b3 100644
--- a/src/psaux/pserror.h
+++ b/src/psaux/pserror.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pserror.h                                                              */
-/*                                                                         */
-/*    Adobe's code for error handling (specification).                     */
-/*                                                                         */
-/*  Copyright 2006-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pserror.h
+ *
+ *   Adobe's code for error handling (specification).
+ *
+ * Copyright 2006-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSERROR_H_
diff --git a/src/psaux/psfixed.h b/src/psaux/psfixed.h
index 219589e..fd3460f 100644
--- a/src/psaux/psfixed.h
+++ b/src/psaux/psfixed.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psfixed.h                                                              */
-/*                                                                         */
-/*    Adobe's code for Fixed Point Mathematics (specification only).       */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psfixed.h
+ *
+ *   Adobe's code for Fixed Point Mathematics (specification only).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSFIXED_H_
diff --git a/src/psaux/psfont.c b/src/psaux/psfont.c
index dde67a7..a7e743d 100644
--- a/src/psaux/psfont.c
+++ b/src/psaux/psfont.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psfont.c                                                               */
-/*                                                                         */
-/*    Adobe's code for font instances (body).                              */
-/*                                                                         */
-/*  Copyright 2007-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psfont.c
+ *
+ *   Adobe's code for font instances (body).
+ *
+ * Copyright 2007-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/psaux/psfont.h b/src/psaux/psfont.h
index e611ac4..8fbacbb 100644
--- a/src/psaux/psfont.h
+++ b/src/psaux/psfont.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psfont.h                                                               */
-/*                                                                         */
-/*    Adobe's code for font instances (specification).                     */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psfont.h
+ *
+ *   Adobe's code for font instances (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSFONT_H_
diff --git a/src/psaux/psft.c b/src/psaux/psft.c
index 1f75017..54be468 100644
--- a/src/psaux/psft.c
+++ b/src/psaux/psft.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psft.c                                                                 */
-/*                                                                         */
-/*    FreeType Glue Component to Adobe's Interpreter (body).               */
-/*                                                                         */
-/*  Copyright 2013-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psft.c
+ *
+ *   FreeType Glue Component to Adobe's Interpreter (body).
+ *
+ * Copyright 2013-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -120,12 +120,12 @@
   }
 
 
-  /********************************************/
-  /*                                          */
-  /* functions for handling client outline;   */
-  /* FreeType uses coordinates in 26.6 format */
-  /*                                          */
-  /********************************************/
+  /*********************************************
+   *
+   * functions for handling client outline;
+   * FreeType uses coordinates in 26.6 format
+   *
+   */
 
   static void
   cf2_builder_moveTo( CF2_OutlineCallbacks      callbacks,
@@ -767,13 +767,14 @@
   cf2_freeT1SeacComponent( PS_Decoder*  decoder,
                            CF2_Buffer   buf )
   {
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+
     T1_Face  face;
     FT_Data  data;
 
 
     FT_ASSERT( decoder );
 
-#ifdef FT_CONFIG_OPTION_INCREMENTAL
     face = (T1_Face)decoder->builder.face;
 
     data.pointer = buf->start;
@@ -783,7 +784,13 @@
       face->root.internal->incremental_interface->funcs->free_glyph_data(
         face->root.internal->incremental_interface->object,
         &data );
-#endif /* FT_CONFIG_OPTION_INCREMENTAL */
+
+#else /* !FT_CONFIG_OPTION_INCREMENTAL */
+
+    FT_UNUSED( decoder );
+    FT_UNUSED( buf );
+
+#endif /* !FT_CONFIG_OPTION_INCREMENTAL */
   }
 
 
diff --git a/src/psaux/psft.h b/src/psaux/psft.h
index ab17211..4c930f0 100644
--- a/src/psaux/psft.h
+++ b/src/psaux/psft.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psft.h                                                                 */
-/*                                                                         */
-/*    FreeType Glue Component to Adobe's Interpreter (specification).      */
-/*                                                                         */
-/*  Copyright 2013 Adobe Systems Incorporated.                             */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psft.h
+ *
+ *   FreeType Glue Component to Adobe's Interpreter (specification).
+ *
+ * Copyright 2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSFT_H_
diff --git a/src/psaux/psglue.h b/src/psaux/psglue.h
index 5545e12..022aafb 100644
--- a/src/psaux/psglue.h
+++ b/src/psaux/psglue.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psglue.h                                                               */
-/*                                                                         */
-/*    Adobe's code for shared stuff (specification only).                  */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psglue.h
+ *
+ *   Adobe's code for shared stuff (specification only).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSGLUE_H_
diff --git a/src/psaux/pshints.c b/src/psaux/pshints.c
index 3615196..4560fb8 100644
--- a/src/psaux/pshints.c
+++ b/src/psaux/pshints.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshints.c                                                              */
-/*                                                                         */
-/*    Adobe's code for handling CFF hints (body).                          */
-/*                                                                         */
-/*  Copyright 2007-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshints.c
+ *
+ *   Adobe's code for handling CFF hints (body).
+ *
+ * Copyright 2007-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -45,12 +45,12 @@
 #include "psintrp.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cf2hints
 
diff --git a/src/psaux/pshints.h b/src/psaux/pshints.h
index 92e37e9..31a8230 100644
--- a/src/psaux/pshints.h
+++ b/src/psaux/pshints.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshints.h                                                              */
-/*                                                                         */
-/*    Adobe's code for handling CFF hints (body).                          */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshints.h
+ *
+ *   Adobe's code for handling CFF hints (body).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSHINT_H_
diff --git a/src/psaux/psintrp.c b/src/psaux/psintrp.c
index da5a8da..145b672 100644
--- a/src/psaux/psintrp.c
+++ b/src/psaux/psintrp.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psintrp.c                                                              */
-/*                                                                         */
-/*    Adobe's CFF Interpreter (body).                                      */
-/*                                                                         */
-/*  Copyright 2007-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psintrp.c
+ *
+ *   Adobe's CFF Interpreter (body).
+ *
+ * Copyright 2007-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -52,12 +52,12 @@
 #include "t1decode.h" /* for t1 seac    */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_cf2interp
 
@@ -663,6 +663,7 @@
           /* Skip outline commands first time round.       */
           /* `endchar' will trigger initial hintmap build  */
           /* and rewind the charstring.                    */
+          FT_TRACE4(( " <outline command skipped>\n" ));
           cf2_stack_clear( opStack );
           continue;
         }
@@ -1644,16 +1645,17 @@
                     subr_no = cf2_stack_popInt( opStack );
                     arg_cnt = cf2_stack_popInt( opStack );
 
-                    /*******************************************************/
-                    /*                                                     */
-                    /* remove all operands to callothersubr from the stack */
-                    /*                                                     */
-                    /* for handled othersubrs, where we know the number of */
-                    /* arguments, we increase the stack by the value of    */
-                    /* known_othersubr_result_cnt                          */
-                    /*                                                     */
-                    /* for unhandled othersubrs the following pops adjust  */
-                    /* the stack pointer as necessary                      */
+                    /********************************************************
+                     *
+                     * remove all operands to callothersubr from the stack
+                     *
+                     * for handled othersubrs, where we know the number of
+                     * arguments, we increase the stack by the value of
+                     * known_othersubr_result_cnt
+                     *
+                     * for unhandled othersubrs the following pops adjust
+                     * the stack pointer as necessary
+                     */
 
                     count = cf2_stack_count( opStack );
                     FT_ASSERT( (CF2_UInt)arg_cnt <= count );
diff --git a/src/psaux/psintrp.h b/src/psaux/psintrp.h
index 4790aaa..669c09c 100644
--- a/src/psaux/psintrp.h
+++ b/src/psaux/psintrp.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psintrp.h                                                              */
-/*                                                                         */
-/*    Adobe's CFF Interpreter (specification).                             */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psintrp.h
+ *
+ *   Adobe's CFF Interpreter (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSINTRP_H_
diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c
index f54bc7e..36ee663 100644
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psobjs.c                                                               */
-/*                                                                         */
-/*    Auxiliary functions for PostScript fonts (body).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psobjs.c
+ *
+ *   Auxiliary functions for PostScript fonts (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -29,12 +29,12 @@
 #include "psauxmod.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_psobjs
 
@@ -47,26 +47,29 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_table_new                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a PS_Table.                                            */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    table  :: The address of the target table.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    count  :: The table size = the maximum number of elements.         */
-  /*                                                                       */
-  /*    memory :: The memory object to use for all subsequent              */
-  /*              reallocations.                                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_table_new
+   *
+   * @Description:
+   *   Initializes a PS_Table.
+   *
+   * @InOut:
+   *   table ::
+   *     The address of the target table.
+   *
+   * @Input:
+   *   count ::
+   *     The table size = the maximum number of elements.
+   *
+   *   memory ::
+   *     The memory object to use for all subsequent
+   *     reallocations.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   ps_table_new( PS_Table   table,
                 FT_Int     count,
@@ -144,28 +147,32 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_table_add                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Adds an object to a PS_Table, possibly growing its memory block.   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    table  :: The target table.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    idx    :: The index of the object in the table.                    */
-  /*                                                                       */
-  /*    object :: The address of the object to copy in memory.             */
-  /*                                                                       */
-  /*    length :: The length in bytes of the source object.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.  An error is returned if a  */
-  /*    reallocation fails.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_table_add
+   *
+   * @Description:
+   *   Adds an object to a PS_Table, possibly growing its memory block.
+   *
+   * @InOut:
+   *   table ::
+   *     The target table.
+   *
+   * @Input:
+   *   idx ::
+   *     The index of the object in the table.
+   *
+   *   object ::
+   *     The address of the object to copy in memory.
+   *
+   *   length ::
+   *     The length in bytes of the source object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.  An error is returned if a
+   *   reallocation fails.
+   */
   FT_LOCAL_DEF( FT_Error )
   ps_table_add( PS_Table  table,
                 FT_Int    idx,
@@ -216,22 +223,23 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_table_done                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a PS_TableRec (i.e., reallocate it to its current        */
-  /*    cursor).                                                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    table :: The target table.                                         */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function does NOT release the heap's memory block.  It is up  */
-  /*    to the caller to clean it, or reference it in its own structures.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_table_done
+   *
+   * @Description:
+   *   Finalizes a PS_TableRec (i.e., reallocate it to its current
+   *   cursor).
+   *
+   * @InOut:
+   *   table ::
+   *     The target table.
+   *
+   * @Note:
+   *   This function does NOT release the heap's memory block.  It is up
+   *   to the caller to clean it, or reference it in its own structures.
+   */
   FT_LOCAL_DEF( void )
   ps_table_done( PS_Table  table )
   {
@@ -498,12 +506,12 @@
   }
 
 
-  /***********************************************************************/
-  /*                                                                     */
-  /* All exported parsing routines handle leading whitespace and stop at */
-  /* the first character which isn't part of the just handled token.     */
-  /*                                                                     */
-  /***********************************************************************/
+  /************************************************************************
+   *
+   * All exported parsing routines handle leading whitespace and stop at
+   * the first character which isn't part of the just handled token.
+   *
+   */
 
 
   FT_LOCAL_DEF( void )
@@ -1100,18 +1108,22 @@
       {
       case T1_FIELD_TYPE_BOOL:
         val = ps_tobool( &cur, limit );
+        FT_TRACE4(( " %s", val ? "true" : "false" ));
         goto Store_Integer;
 
       case T1_FIELD_TYPE_FIXED:
         val = PS_Conv_ToFixed( &cur, limit, 0 );
+        FT_TRACE4(( " %f", (double)val / 65536 ));
         goto Store_Integer;
 
       case T1_FIELD_TYPE_FIXED_1000:
         val = PS_Conv_ToFixed( &cur, limit, 3 );
+        FT_TRACE4(( " %f", (double)val / 65536 / 1000 ));
         goto Store_Integer;
 
       case T1_FIELD_TYPE_INTEGER:
         val = PS_Conv_ToInt( &cur, limit );
+        FT_TRACE4(( " %ld", val ));
         /* fall through */
 
       Store_Integer:
@@ -1188,6 +1200,13 @@
           FT_MEM_COPY( string, cur, len );
           string[len] = 0;
 
+#ifdef FT_DEBUG_LEVEL_TRACE
+          if ( token.type == T1_TOKEN_TYPE_STRING )
+            FT_TRACE4(( " (%s)", string ));
+          else
+            FT_TRACE4(( " /%s", string ));
+#endif
+
           *(FT_String**)q = string;
         }
         break;
@@ -1213,6 +1232,12 @@
           bbox->yMin = FT_RoundFix( temp[1] );
           bbox->xMax = FT_RoundFix( temp[2] );
           bbox->yMax = FT_RoundFix( temp[3] );
+
+          FT_TRACE4(( " [%d %d %d %d]",
+                      bbox->xMin / 65536,
+                      bbox->yMin / 65536,
+                      bbox->xMax / 65536,
+                      bbox->yMax / 65536 ));
         }
         break;
 
@@ -1251,6 +1276,7 @@
             skip_spaces( &cur, limit );
           }
 
+          FT_TRACE4(( " [" ));
           for ( i = 0; i < max_objects; i++ )
           {
             FT_BBox*  bbox = (FT_BBox*)objects[i];
@@ -1260,7 +1286,14 @@
             bbox->yMin = FT_RoundFix( temp[i +     max_objects] );
             bbox->xMax = FT_RoundFix( temp[i + 2 * max_objects] );
             bbox->yMax = FT_RoundFix( temp[i + 3 * max_objects] );
+
+            FT_TRACE4(( " [%d %d %d %d]",
+                        bbox->xMin / 65536,
+                        bbox->yMin / 65536,
+                        bbox->xMax / 65536,
+                        bbox->yMax / 65536 ));
           }
+          FT_TRACE4(( "]" ));
 
           FT_FREE( temp );
         }
@@ -1333,6 +1366,8 @@
       *(FT_Byte*)( (FT_Byte*)objects[0] + field->count_offset ) =
         (FT_Byte)num_elements;
 
+    FT_TRACE4(( " [" ));
+
     /* we now load each element, adjusting the field.offset on each one */
     token = elements;
     for ( ; num_elements > 0; num_elements--, token++ )
@@ -1351,6 +1386,8 @@
       fieldrec.offset += fieldrec.size;
     }
 
+    FT_TRACE4(( "]" ));
+
 #if 0  /* obsolete -- keep for reference */
     if ( pflags )
       *pflags |= 1L << field->flag_bit;
@@ -1509,26 +1546,31 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1_builder_init                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a given glyph builder.                                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    builder :: A pointer to the glyph builder to initialize.           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face    :: The current face object.                                */
-  /*                                                                       */
-  /*    size    :: The current size object.                                */
-  /*                                                                       */
-  /*    glyph   :: The current glyph object.                               */
-  /*                                                                       */
-  /*    hinting :: Whether hinting should be applied.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1_builder_init
+   *
+   * @Description:
+   *   Initializes a given glyph builder.
+   *
+   * @InOut:
+   *   builder ::
+   *     A pointer to the glyph builder to initialize.
+   *
+   * @Input:
+   *   face ::
+   *     The current face object.
+   *
+   *   size ::
+   *     The current size object.
+   *
+   *   glyph ::
+   *     The current glyph object.
+   *
+   *   hinting ::
+   *     Whether hinting should be applied.
+   */
   FT_LOCAL_DEF( void )
   t1_builder_init( T1_Builder    builder,
                    FT_Face       face,
@@ -1572,19 +1614,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1_builder_done                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given glyph builder.  Its contents can still be used   */
-  /*    after the call, but the function saves important information       */
-  /*    within the corresponding glyph slot.                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    builder :: A pointer to the glyph builder to finalize.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1_builder_done
+   *
+   * @Description:
+   *   Finalizes a given glyph builder.  Its contents can still be used
+   *   after the call, but the function saves important information
+   *   within the corresponding glyph slot.
+   *
+   * @Input:
+   *   builder ::
+   *     A pointer to the glyph builder to finalize.
+   */
   FT_LOCAL_DEF( void )
   t1_builder_done( T1_Builder  builder )
   {
@@ -1769,26 +1812,31 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_builder_init                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a given glyph builder.                                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    builder :: A pointer to the glyph builder to initialize.           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face    :: The current face object.                                */
-  /*                                                                       */
-  /*    size    :: The current size object.                                */
-  /*                                                                       */
-  /*    glyph   :: The current glyph object.                               */
-  /*                                                                       */
-  /*    hinting :: Whether hinting is active.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_builder_init
+   *
+   * @Description:
+   *   Initializes a given glyph builder.
+   *
+   * @InOut:
+   *   builder ::
+   *     A pointer to the glyph builder to initialize.
+   *
+   * @Input:
+   *   face ::
+   *     The current face object.
+   *
+   *   size ::
+   *     The current size object.
+   *
+   *   glyph ::
+   *     The current glyph object.
+   *
+   *   hinting ::
+   *     Whether hinting is active.
+   */
   FT_LOCAL_DEF( void )
   cff_builder_init( CFF_Builder*   builder,
                     TT_Face        face,
@@ -1841,19 +1889,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_builder_done                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given glyph builder.  Its contents can still be used   */
-  /*    after the call, but the function saves important information       */
-  /*    within the corresponding glyph slot.                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    builder :: A pointer to the glyph builder to finalize.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_builder_done
+   *
+   * @Description:
+   *   Finalizes a given glyph builder.  Its contents can still be used
+   *   after the call, but the function saves important information
+   *   within the corresponding glyph slot.
+   *
+   * @Input:
+   *   builder ::
+   *     A pointer to the glyph builder to finalize.
+   */
   FT_LOCAL_DEF( void )
   cff_builder_done( CFF_Builder*  builder )
   {
@@ -2033,26 +2082,31 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_builder_init                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a given glyph builder.                                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    builder :: A pointer to the glyph builder to initialize.           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face    :: The current face object.                                */
-  /*                                                                       */
-  /*    size    :: The current size object.                                */
-  /*                                                                       */
-  /*    glyph   :: The current glyph object.                               */
-  /*                                                                       */
-  /*    hinting :: Whether hinting should be applied.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_builder_init
+   *
+   * @Description:
+   *   Initializes a given glyph builder.
+   *
+   * @InOut:
+   *   builder ::
+   *     A pointer to the glyph builder to initialize.
+   *
+   * @Input:
+   *   face ::
+   *     The current face object.
+   *
+   *   size ::
+   *     The current size object.
+   *
+   *   glyph ::
+   *     The current glyph object.
+   *
+   *   hinting ::
+   *     Whether hinting should be applied.
+   */
   FT_LOCAL_DEF( void )
   ps_builder_init( PS_Builder*  ps_builder,
                    void*        builder,
@@ -2116,19 +2170,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_builder_done                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given glyph builder.  Its contents can still be used   */
-  /*    after the call, but the function saves important information       */
-  /*    within the corresponding glyph slot.                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    builder :: A pointer to the glyph builder to finalize.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_builder_done
+   *
+   * @Description:
+   *   Finalizes a given glyph builder.  Its contents can still be used
+   *   after the call, but the function saves important information
+   *   within the corresponding glyph slot.
+   *
+   * @Input:
+   *   builder ::
+   *     A pointer to the glyph builder to finalize.
+   */
   FT_LOCAL_DEF( void )
   ps_builder_done( PS_Builder*  builder )
   {
@@ -2336,23 +2391,26 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_decoder_init                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Creates a wrapper decoder for use in the combined                  */
-  /*    Type 1 / CFF interpreter.                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    ps_decoder :: A pointer to the decoder to initialize.              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    decoder    :: A pointer to the original decoder.                   */
-  /*                                                                       */
-  /*    is_t1      :: Flag indicating Type 1 or CFF                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_decoder_init
+   *
+   * @Description:
+   *   Creates a wrapper decoder for use in the combined
+   *   Type 1 / CFF interpreter.
+   *
+   * @InOut:
+   *   ps_decoder ::
+   *     A pointer to the decoder to initialize.
+   *
+   * @Input:
+   *   decoder ::
+   *     A pointer to the original decoder.
+   *
+   *   is_t1 ::
+   *     Flag indicating Type 1 or CFF
+   */
   FT_LOCAL_DEF( void )
   ps_decoder_init( PS_Decoder*  ps_decoder,
                    void*        decoder,
diff --git a/src/psaux/psobjs.h b/src/psaux/psobjs.h
index 8e0fe5f..6184193 100644
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psobjs.h                                                               */
-/*                                                                         */
-/*    Auxiliary functions for PostScript fonts (specification).            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psobjs.h
+ *
+ *   Auxiliary functions for PostScript fonts (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSOBJS_H_
diff --git a/src/psaux/psread.c b/src/psaux/psread.c
index 719863c..6f3a361 100644
--- a/src/psaux/psread.c
+++ b/src/psaux/psread.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psread.c                                                               */
-/*                                                                         */
-/*    Adobe's code for stream handling (body).                             */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psread.c
+ *
+ *   Adobe's code for stream handling (body).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
diff --git a/src/psaux/psread.h b/src/psaux/psread.h
index 464b29b..9e55fe0 100644
--- a/src/psaux/psread.h
+++ b/src/psaux/psread.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psread.h                                                               */
-/*                                                                         */
-/*    Adobe's code for stream handling (specification).                    */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psread.h
+ *
+ *   Adobe's code for stream handling (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSREAD_H_
diff --git a/src/psaux/psstack.c b/src/psaux/psstack.c
index 69d0633..d49cf25 100644
--- a/src/psaux/psstack.c
+++ b/src/psaux/psstack.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psstack.c                                                              */
-/*                                                                         */
-/*    Adobe's code for emulating a CFF stack (body).                       */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psstack.c
+ *
+ *   Adobe's code for emulating a CFF stack (body).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
diff --git a/src/psaux/psstack.h b/src/psaux/psstack.h
index 38f7b41..18cd39b 100644
--- a/src/psaux/psstack.h
+++ b/src/psaux/psstack.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psstack.h                                                              */
-/*                                                                         */
-/*    Adobe's code for emulating a CFF stack (specification).              */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psstack.h
+ *
+ *   Adobe's code for emulating a CFF stack (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSSTACK_H_
diff --git a/src/psaux/pstypes.h b/src/psaux/pstypes.h
index dfbaa3d..041287e 100644
--- a/src/psaux/pstypes.h
+++ b/src/psaux/pstypes.h
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pstypes.h                                                              */
-/*                                                                         */
-/*    Adobe's code for defining data types (specification only).           */
-/*                                                                         */
-/*  Copyright 2011-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pstypes.h
+ *
+ *   Adobe's code for defining data types (specification only).
+ *
+ * Copyright 2011-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSTYPES_H_
diff --git a/src/psaux/t1cmap.c b/src/psaux/t1cmap.c
index 112a789..0c9f916 100644
--- a/src/psaux/t1cmap.c
+++ b/src/psaux/t1cmap.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1cmap.c                                                               */
-/*                                                                         */
-/*    Type 1 character map support (body).                                 */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1cmap.c
+ *
+ *   Type 1 character map support (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "t1cmap.h"
diff --git a/src/psaux/t1cmap.h b/src/psaux/t1cmap.h
index 4308e31..277419f 100644
--- a/src/psaux/t1cmap.h
+++ b/src/psaux/t1cmap.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1cmap.h                                                               */
-/*                                                                         */
-/*    Type 1 character map support (specification).                        */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1cmap.h
+ *
+ *   Type 1 character map support (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1CMAP_H_
diff --git a/src/psaux/t1decode.c b/src/psaux/t1decode.c
index 6ad1456..6745603 100644
--- a/src/psaux/t1decode.c
+++ b/src/psaux/t1decode.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1decode.c                                                             */
-/*                                                                         */
-/*    PostScript Type 1 decoding routines (body).                          */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1decode.c
+ *
+ *   PostScript Type 1 decoding routines (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -31,12 +31,12 @@
 /* ensure proper sign extension */
 #define Fix2Int( f )  ( (FT_Int)(FT_Short)( (f) >> 16 ) )
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_t1decode
 
@@ -109,24 +109,26 @@
   };
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1_lookup_glyph_by_stdcharcode_ps                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Looks up a given glyph by its StandardEncoding charcode.  Used to  */
-  /*    implement the SEAC Type 1 operator in the Adobe engine             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: The current face object.                               */
-  /*                                                                       */
-  /*    charcode :: The character code to look for.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A glyph index in the font face.  Returns -1 if the corresponding   */
-  /*    glyph wasn't found.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1_lookup_glyph_by_stdcharcode_ps
+   *
+   * @Description:
+   *   Looks up a given glyph by its StandardEncoding charcode.  Used to
+   *   implement the SEAC Type 1 operator in the Adobe engine
+   *
+   * @Input:
+   *   face ::
+   *     The current face object.
+   *
+   *   charcode ::
+   *     The character code to look for.
+   *
+   * @Return:
+   *   A glyph index in the font face.  Returns -1 if the corresponding
+   *   glyph wasn't found.
+   */
   FT_LOCAL_DEF( FT_Int )
   t1_lookup_glyph_by_stdcharcode_ps( PS_Decoder*  decoder,
                                      FT_Int       charcode )
@@ -159,24 +161,27 @@
 
 
 #ifdef T1_CONFIG_OPTION_OLD_ENGINE
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1_lookup_glyph_by_stdcharcode                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Looks up a given glyph by its StandardEncoding charcode.  Used to  */
-  /*    implement the SEAC Type 1 operator.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: The current face object.                               */
-  /*                                                                       */
-  /*    charcode :: The character code to look for.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A glyph index in the font face.  Returns -1 if the corresponding   */
-  /*    glyph wasn't found.                                                */
-  /*                                                                       */
+
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1_lookup_glyph_by_stdcharcode
+   *
+   * @Description:
+   *   Looks up a given glyph by its StandardEncoding charcode.  Used to
+   *   implement the SEAC Type 1 operator.
+   *
+   * @Input:
+   *   face ::
+   *     The current face object.
+   *
+   *   charcode ::
+   *     The character code to look for.
+   *
+   * @Return:
+   *   A glyph index in the font face.  Returns -1 if the corresponding
+   *   glyph wasn't found.
+   */
   static FT_Int
   t1_lookup_glyph_by_stdcharcode( T1_Decoder  decoder,
                                   FT_Int      charcode )
@@ -217,30 +222,36 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1operator_seac                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Implements the `seac' Type 1 operator for a Type 1 decoder.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    decoder :: The current CID decoder.                                */
-  /*                                                                       */
-  /*    asb     :: The accent's side bearing.                              */
-  /*                                                                       */
-  /*    adx     :: The horizontal offset of the accent.                    */
-  /*                                                                       */
-  /*    ady     :: The vertical offset of the accent.                      */
-  /*                                                                       */
-  /*    bchar   :: The base character's StandardEncoding charcode.         */
-  /*                                                                       */
-  /*    achar   :: The accent character's StandardEncoding charcode.       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1operator_seac
+   *
+   * @Description:
+   *   Implements the `seac' Type 1 operator for a Type 1 decoder.
+   *
+   * @Input:
+   *   decoder ::
+   *     The current CID decoder.
+   *
+   *   asb ::
+   *     The accent's side bearing.
+   *
+   *   adx ::
+   *     The horizontal offset of the accent.
+   *
+   *   ady ::
+   *     The vertical offset of the accent.
+   *
+   *   bchar ::
+   *     The base character's StandardEncoding charcode.
+   *
+   *   achar ::
+   *     The accent character's StandardEncoding charcode.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   t1operator_seac( T1_Decoder  decoder,
                    FT_Pos      asb,
@@ -399,24 +410,27 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1_decoder_parse_charstrings                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parses a given Type 1 charstrings program.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    decoder         :: The current Type 1 decoder.                     */
-  /*                                                                       */
-  /*    charstring_base :: The base address of the charstring stream.      */
-  /*                                                                       */
-  /*    charstring_len  :: The length in bytes of the charstring stream.   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1_decoder_parse_charstrings
+   *
+   * @Description:
+   *   Parses a given Type 1 charstrings program.
+   *
+   * @Input:
+   *   decoder ::
+   *     The current Type 1 decoder.
+   *
+   *   charstring_base ::
+   *     The base address of the charstring stream.
+   *
+   *   charstring_len ::
+   *     The length in bytes of the charstring stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   t1_decoder_parse_charstrings( T1_Decoder  decoder,
                                 FT_Byte*    charstring_base,
@@ -466,9 +480,6 @@
     if ( decoder->buildchar && decoder->len_buildchar > 0 )
       FT_ARRAY_ZERO( decoder->buildchar, decoder->len_buildchar );
 
-    FT_TRACE4(( "\n"
-                "Start charstring\n" ));
-
     zone->base           = charstring_base;
     limit = zone->limit  = charstring_base + charstring_len;
     ip    = zone->cursor = zone->base;
@@ -503,11 +514,11 @@
       }
 #endif
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Decode operator or operand                                        */
-      /*                                                                   */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Decode operator or operand
+       *
+       */
 
       /* first of all, decompress operator or value */
       switch ( *ip++ )
@@ -710,11 +721,11 @@
         large_int = FALSE;
       }
 
-      /*********************************************************************/
-      /*                                                                   */
-      /*  Push value on stack, or process operator                         */
-      /*                                                                   */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Push value on stack, or process operator
+       *
+       */
       if ( op == op_none )
       {
         if ( top - decoder->stack >= T1_MAX_CHARSTRINGS_OPERANDS )
@@ -752,16 +763,17 @@
         subr_no = Fix2Int( top[1] );
         arg_cnt = Fix2Int( top[0] );
 
-        /***********************************************************/
-        /*                                                         */
-        /* remove all operands to callothersubr from the stack     */
-        /*                                                         */
-        /* for handled othersubrs, where we know the number of     */
-        /* arguments, we increase the stack by the value of        */
-        /* known_othersubr_result_cnt                              */
-        /*                                                         */
-        /* for unhandled othersubrs the following pops adjust the  */
-        /* stack pointer as necessary                              */
+        /************************************************************
+         *
+         * remove all operands to callothersubr from the stack
+         *
+         * for handled othersubrs, where we know the number of
+         * arguments, we increase the stack by the value of
+         * known_othersubr_result_cnt
+         *
+         * for unhandled othersubrs the following pops adjust the
+         * stack pointer as necessary
+         */
 
         if ( arg_cnt > top - decoder->stack )
           goto Stack_Underflow;
@@ -1223,7 +1235,10 @@
           /* the glyph's metrics (lsb + advance width), not load the   */
           /* rest of it; so exit immediately                           */
           if ( builder->metrics_only )
+          {
+            FT_TRACE4(( "\n" ));
             return FT_Err_Ok;
+          }
 
           break;
 
@@ -1255,7 +1270,10 @@
           /* the glyph's metrics (lsb + advance width), not load the   */
           /* rest of it; so exit immediately                           */
           if ( builder->metrics_only )
+          {
+            FT_TRACE4(( "\n" ));
             return FT_Err_Ok;
+          }
 
           break;
 
@@ -1638,26 +1656,31 @@
     return FT_THROW( Stack_Underflow );
   }
 
-#else /* T1_CONFIG_OPTION_OLD_ENGINE */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1_decoder_parse_metrics                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parses a given Type 1 charstrings program to extract width         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    decoder         :: The current Type 1 decoder.                     */
-  /*                                                                       */
-  /*    charstring_base :: The base address of the charstring stream.      */
-  /*                                                                       */
-  /*    charstring_len  :: The length in bytes of the charstring stream.   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+#else /* !T1_CONFIG_OPTION_OLD_ENGINE */
+
+
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1_decoder_parse_metrics
+   *
+   * @Description:
+   *   Parses a given Type 1 charstrings program to extract width
+   *
+   * @Input:
+   *   decoder ::
+   *     The current Type 1 decoder.
+   *
+   *   charstring_base ::
+   *     The base address of the charstring stream.
+   *
+   *   charstring_len ::
+   *     The length in bytes of the charstring stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   t1_decoder_parse_metrics( T1_Decoder  decoder,
                             FT_Byte*    charstring_base,
@@ -1680,9 +1703,6 @@
 
     builder->parse_state = T1_Parse_Start;
 
-    FT_TRACE4(( "\n"
-                "Start charstring: get width\n" ));
-
     zone->base           = charstring_base;
     limit = zone->limit  = charstring_base + charstring_len;
     ip    = zone->cursor = zone->base;
@@ -1703,11 +1723,11 @@
       }
 #endif
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Decode operator or operand                                        */
-      /*                                                                   */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Decode operator or operand
+       *
+       */
 
       /* first of all, decompress operator or value */
       switch ( *ip++ )
@@ -1817,11 +1837,11 @@
         }
       }
 
-      /*********************************************************************/
-      /*                                                                   */
-      /*  Push value on stack, or process operator                         */
-      /*                                                                   */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Push value on stack, or process operator
+       *
+       */
       if ( op == op_none )
       {
         if ( top - decoder->stack >= T1_MAX_CHARSTRINGS_OPERANDS )
@@ -1875,6 +1895,7 @@
           /* we only want to compute the glyph's metrics */
           /* (lsb + advance width), not load the rest of */
           /* it; so exit immediately                     */
+          FT_TRACE4(( "\n" ));
           return FT_Err_Ok;
 
         case op_sbw:
@@ -1893,6 +1914,7 @@
           /* we only want to compute the glyph's metrics */
           /* (lsb + advance width), not load the rest of */
           /* it; so exit immediately                     */
+          FT_TRACE4(( "\n" ));
           return FT_Err_Ok;
 
         default:
@@ -1917,7 +1939,8 @@
   Stack_Underflow:
     return FT_THROW( Stack_Underflow );
   }
-#endif /* T1_CONFIG_OPTION_OLD_ENGINE */
+
+#endif /* !T1_CONFIG_OPTION_OLD_ENGINE */
 
 
   /* initialize T1 decoder */
diff --git a/src/psaux/t1decode.h b/src/psaux/t1decode.h
index 1d9718d..62956ac 100644
--- a/src/psaux/t1decode.h
+++ b/src/psaux/t1decode.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1decode.h                                                             */
-/*                                                                         */
-/*    PostScript Type 1 decoding routines (specification).                 */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1decode.h
+ *
+ *   PostScript Type 1 decoding routines (specification).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1DECODE_H_
diff --git a/src/pshinter/pshalgo.c b/src/pshinter/pshalgo.c
index b98077c..925b3d6 100644
--- a/src/pshinter/pshalgo.c
+++ b/src/pshinter/pshalgo.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshalgo.c                                                              */
-/*                                                                         */
-/*    PostScript hinting algorithm (body).                                 */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshalgo.c
+ *
+ *   PostScript hinting algorithm (body).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -658,8 +658,8 @@
 #if 0  /* not used for now, experimental */
 
  /*
-  *  A variant to perform "light" hinting (i.e. FT_RENDER_MODE_LIGHT)
-  *  of stems
+  * A variant to perform "light" hinting (i.e. FT_RENDER_MODE_LIGHT)
+  * of stems
   */
   static void
   psh_hint_align_light( PSH_Hint     hint,
diff --git a/src/pshinter/pshalgo.h b/src/pshinter/pshalgo.h
index c50683f..f27e668 100644
--- a/src/pshinter/pshalgo.h
+++ b/src/pshinter/pshalgo.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshalgo.h                                                              */
-/*                                                                         */
-/*    PostScript hinting algorithm (specification).                        */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshalgo.h
+ *
+ *   PostScript hinting algorithm (specification).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSHALGO_H_
diff --git a/src/pshinter/pshglob.c b/src/pshinter/pshglob.c
index 29f328d..f6859cd 100644
--- a/src/pshinter/pshglob.c
+++ b/src/pshinter/pshglob.c
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshglob.c                                                              */
-/*                                                                         */
-/*    PostScript hinter global hinting management (body).                  */
-/*    Inspired by the new auto-hinter module.                              */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshglob.c
+ *
+ *   PostScript hinter global hinting management (body).
+ *   Inspired by the new auto-hinter module.
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -227,8 +227,8 @@
   }
 
 
-  /* Re-read blue zones from the original fonts and store them into out */
-  /* private structure.  This function re-orders, sanitizes and         */
+  /* Re-read blue zones from the original fonts and store them into our */
+  /* private structure.  This function re-orders, sanitizes, and        */
   /* fuzz-expands the zones as well.                                    */
   static void
   psh_blues_set_zones( PSH_Blues  target,
diff --git a/src/pshinter/pshglob.h b/src/pshinter/pshglob.h
index cf80bf4..c3aa0ae 100644
--- a/src/pshinter/pshglob.h
+++ b/src/pshinter/pshglob.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshglob.h                                                              */
-/*                                                                         */
-/*    PostScript hinter global hinting management.                         */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshglob.h
+ *
+ *   PostScript hinter global hinting management.
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSHGLOB_H_
@@ -36,27 +36,27 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* @constant:                                                            */
-  /*    PS_GLOBALS_MAX_BLUE_ZONES                                          */
-  /*                                                                       */
-  /* @description:                                                         */
-  /*    The maximum number of blue zones in a font global hints structure. */
-  /*    See @PS_Globals_BluesRec.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @constant:
+   *   PS_GLOBALS_MAX_BLUE_ZONES
+   *
+   * @description:
+   *   The maximum number of blue zones in a font global hints structure.
+   *   See @PS_Globals_BluesRec.
+   */
 #define PS_GLOBALS_MAX_BLUE_ZONES  16
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* @constant:                                                            */
-  /*    PS_GLOBALS_MAX_STD_WIDTHS                                          */
-  /*                                                                       */
-  /* @description:                                                         */
-  /*    The maximum number of standard and snap widths in either the       */
-  /*    horizontal or vertical direction.  See @PS_Globals_WidthsRec.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @constant:
+   *   PS_GLOBALS_MAX_STD_WIDTHS
+   *
+   * @description:
+   *   The maximum number of standard and snap widths in either the
+   *   horizontal or vertical direction.  See @PS_Globals_WidthsRec.
+   */
 #define PS_GLOBALS_MAX_STD_WIDTHS  16
 
 
diff --git a/src/pshinter/pshinter.c b/src/pshinter/pshinter.c
index 0eedac4..fd703d6 100644
--- a/src/pshinter/pshinter.c
+++ b/src/pshinter/pshinter.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshinter.c                                                             */
-/*                                                                         */
-/*    FreeType PostScript Hinting module                                   */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshinter.c
+ *
+ *   FreeType PostScript Hinting module
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
@@ -22,7 +22,6 @@
 #include "pshalgo.c"
 #include "pshglob.c"
 #include "pshmod.c"
-#include "pshpic.c"
 #include "pshrec.c"
 
 
diff --git a/src/pshinter/pshmod.c b/src/pshinter/pshmod.c
index 0b8f6f9..e040d60 100644
--- a/src/pshinter/pshmod.c
+++ b/src/pshinter/pshmod.c
@@ -1,26 +1,25 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshmod.c                                                               */
-/*                                                                         */
-/*    FreeType PostScript hinter module implementation (body).             */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshmod.c
+ *
+ *   FreeType PostScript hinter module implementation (body).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
 #include FT_INTERNAL_OBJECTS_H
 #include "pshrec.h"
 #include "pshalgo.h"
-#include "pshpic.h"
 
 
   /* the Postscript Hinter module structure */
@@ -111,7 +110,7 @@
     0x10000L,
     0x20000L,
 
-    &PSHINTER_INTERFACE_GET,              /* module-specific interface */
+    &pshinter_interface,        /* module-specific interface */
 
     (FT_Module_Constructor)ps_hinter_init,  /* module_init   */
     (FT_Module_Destructor) ps_hinter_done,  /* module_done   */
diff --git a/src/pshinter/pshmod.h b/src/pshinter/pshmod.h
index 556de2f..368740c 100644
--- a/src/pshinter/pshmod.h
+++ b/src/pshinter/pshmod.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshmod.h                                                               */
-/*                                                                         */
-/*    PostScript hinter module interface (specification).                  */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshmod.h
+ *
+ *   PostScript hinter module interface (specification).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSHMOD_H_
diff --git a/src/pshinter/pshnterr.h b/src/pshinter/pshnterr.h
index b9d02d2..60814e1 100644
--- a/src/pshinter/pshnterr.h
+++ b/src/pshinter/pshnterr.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshnterr.h                                                             */
-/*                                                                         */
-/*    PS Hinter error codes (specification only).                          */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshnterr.h
+ *
+ *   PS Hinter error codes (specification only).
+ *
+ * Copyright 2003-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the PSHinter error enumeration constants. */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the PSHinter error enumeration constants.
+   *
+   */
 
 #ifndef PSHNTERR_H_
 #define PSHNTERR_H_
diff --git a/src/pshinter/pshpic.c b/src/pshinter/pshpic.c
deleted file mode 100644
index 465ad31..0000000
--- a/src/pshinter/pshpic.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshpic.c                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for pshinter module. */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "pshpic.h"
-#include "pshnterr.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from pshmod.c */
-  void
-  FT_Init_Class_pshinter_interface( FT_Library           library,
-                                    PSHinter_Interface*  clazz );
-
-  void
-  pshinter_module_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->pshinter )
-    {
-      FT_FREE( pic_container->pshinter );
-      pic_container->pshinter = NULL;
-    }
-  }
-
-
-  FT_Error
-  pshinter_module_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    PSHinterPIC*       container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->pshinter = container;
-
-    /* add call to initialization function when you add new scripts */
-    FT_Init_Class_pshinter_interface(
-      library, &container->pshinter_interface );
-
-    if ( error )
-      pshinter_module_class_pic_free( library );
-
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/pshinter/pshpic.h b/src/pshinter/pshpic.h
deleted file mode 100644
index 4469ba8..0000000
--- a/src/pshinter/pshpic.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshpic.h                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for pshinter module. */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef PSHPIC_H_
-#define PSHPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define PSHINTER_INTERFACE_GET  pshinter_interface
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_INTERNAL_POSTSCRIPT_HINTS_H
-
-FT_BEGIN_HEADER
-
-  typedef struct  PSHinterPIC_
-  {
-    PSHinter_Interface  pshinter_interface;
-
-  } PSHinterPIC;
-
-
-#define GET_PIC( lib )  ( (PSHinterPIC*)( (lib)->pic_container.pshinter ) )
-
-#define PSHINTER_INTERFACE_GET  ( GET_PIC( library )->pshinter_interface )
-
-  /* see pshpic.c for the implementation */
-  void
-  pshinter_module_class_pic_free( FT_Library  library );
-
-  FT_Error
-  pshinter_module_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* PSHPIC_H_ */
-
-
-/* END */
diff --git a/src/pshinter/pshrec.c b/src/pshinter/pshrec.c
index 6648d13..50d66ca 100644
--- a/src/pshinter/pshrec.c
+++ b/src/pshinter/pshrec.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshrec.c                                                               */
-/*                                                                         */
-/*    FreeType PostScript hints recorder (body).                           */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshrec.c
+ *
+ *   FreeType PostScript hints recorder (body).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/pshinter/pshrec.h b/src/pshinter/pshrec.h
index 7e3dfe0..56c0f99 100644
--- a/src/pshinter/pshrec.h
+++ b/src/pshinter/pshrec.h
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshrec.h                                                               */
-/*                                                                         */
-/*    Postscript (Type1/Type2) hints recorder (specification).             */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshrec.h
+ *
+ *   Postscript (Type1/Type2) hints recorder (specification).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /**************************************************************************/
-  /*                                                                        */
-  /*  The functions defined here are called from the Type 1, CID and CFF    */
-  /*  font drivers to record the hints of a given character/glyph.          */
-  /*                                                                        */
-  /*  The hints are recorded in a unified format, and are later processed   */
-  /*  by the `optimizer' and `fitter' to adjust the outlines to the pixel   */
-  /*  grid.                                                                 */
-  /*                                                                        */
-  /**************************************************************************/
+  /***************************************************************************
+   *
+   * The functions defined here are called from the Type 1, CID and CFF
+   * font drivers to record the hints of a given character/glyph.
+   *
+   * The hints are recorded in a unified format, and are later processed
+   * by the `optimizer' and `fitter' to adjust the outlines to the pixel
+   * grid.
+   *
+   */
 
 
 #ifndef PSHREC_H_
diff --git a/src/pshinter/rules.mk b/src/pshinter/rules.mk
index 966690e..0e2fb8d 100644
--- a/src/pshinter/rules.mk
+++ b/src/pshinter/rules.mk
@@ -31,7 +31,6 @@
 PSHINTER_DRV_SRC := $(PSHINTER_DIR)/pshalgo.c \
                     $(PSHINTER_DIR)/pshglob.c \
                     $(PSHINTER_DIR)/pshmod.c  \
-                    $(PSHINTER_DIR)/pshpic.c  \
                     $(PSHINTER_DIR)/pshrec.c
 
 
diff --git a/src/psnames/psmodule.c b/src/psnames/psmodule.c
index 8929ebe..719e94d 100644
--- a/src/psnames/psmodule.c
+++ b/src/psnames/psmodule.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psmodule.c                                                             */
-/*                                                                         */
-/*    PSNames module implementation (body).                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psmodule.c
+ *
+ *   PSNames module implementation (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -24,16 +24,16 @@
 #include "psmodule.h"
 
   /*
-   *  The file `pstables.h' with its arrays and its function
-   *  `ft_get_adobe_glyph_index' is useful for other projects also (for
-   *  example, `pdfium' is using it).  However, if used as a C++ header,
-   *  including it in two different source files makes it necessary to use
-   *  `extern const' for the declaration of its arrays, otherwise the data
-   *  would be duplicated as mandated by the C++ standard.
+   * The file `pstables.h' with its arrays and its function
+   * `ft_get_adobe_glyph_index' is useful for other projects also (for
+   * example, `pdfium' is using it).  However, if used as a C++ header,
+   * including it in two different source files makes it necessary to use
+   * `extern const' for the declaration of its arrays, otherwise the data
+   * would be duplicated as mandated by the C++ standard.
    *
-   *  For this reason, we use `DEFINE_PS_TABLES' to guard the function
-   *  definitions, and `DEFINE_PS_TABLES_DATA' to provide both proper array
-   *  declarations and definitions.
+   * For this reason, we use `DEFINE_PS_TABLES' to guard the function
+   * definitions, and `DEFINE_PS_TABLES_DATA' to provide both proper array
+   * declarations and definitions.
    */
 #include "pstables.h"
 #define  DEFINE_PS_TABLES
@@ -41,7 +41,6 @@
 #include "pstables.h"
 
 #include "psnamerr.h"
-#include "pspic.h"
 
 
 #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -393,7 +392,9 @@
         /* Reallocate if the number of used entries is much smaller. */
         if ( count < num_glyphs / 2 )
         {
-          (void)FT_RENEW_ARRAY( table->maps, num_glyphs, count );
+          (void)FT_RENEW_ARRAY( table->maps,
+                                num_glyphs + EXTRA_GLYPH_LIST_SIZE,
+                                count );
           error = FT_Err_Ok;
         }
 
@@ -577,28 +578,16 @@
   FT_DEFINE_SERVICEDESCREC1(
     pscmaps_services,
 
-    FT_SERVICE_ID_POSTSCRIPT_CMAPS, &PSCMAPS_INTERFACE_GET )
+    FT_SERVICE_ID_POSTSCRIPT_CMAPS, &pscmaps_interface )
 
 
   static FT_Pointer
   psnames_get_service( FT_Module    module,
                        const char*  service_id )
   {
-    /* PSCMAPS_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    FT_Library  library;
-
-
-    if ( !module )
-      return NULL;
-    library = module->library;
-    if ( !library )
-      return NULL;
-#else
     FT_UNUSED( module );
-#endif
 
-    return ft_service_list_lookup( PSCMAPS_SERVICES_GET, service_id );
+    return ft_service_list_lookup( pscmaps_services, service_id );
   }
 
 #endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
@@ -621,7 +610,7 @@
     0x20000L,   /* driver requires FreeType 2 or above */
 
     PUT_PS_NAMES_SERVICE(
-      (void*)&PSCMAPS_INTERFACE_GET ),   /* module specific interface */
+      (void*)&pscmaps_interface ),   /* module specific interface */
 
     (FT_Module_Constructor)NULL,                                       /* module_init   */
     (FT_Module_Destructor) NULL,                                       /* module_done   */
diff --git a/src/psnames/psmodule.h b/src/psnames/psmodule.h
index 3e94f8b..8b026ee 100644
--- a/src/psnames/psmodule.h
+++ b/src/psnames/psmodule.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psmodule.h                                                             */
-/*                                                                         */
-/*    High-level PSNames module interface (specification).                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psmodule.h
+ *
+ *   High-level PSNames module interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PSMODULE_H_
diff --git a/src/psnames/psnamerr.h b/src/psnames/psnamerr.h
index 14eb76c..af89157 100644
--- a/src/psnames/psnamerr.h
+++ b/src/psnames/psnamerr.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psnamerr.h                                                             */
-/*                                                                         */
-/*    PS names module error codes (specification only).                    */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psnamerr.h
+ *
+ *   PS names module error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the PS names module error enumeration     */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the PS names module error enumeration
+   * constants.
+   *
+   */
 
 #ifndef PSNAMERR_H_
 #define PSNAMERR_H_
diff --git a/src/psnames/psnames.c b/src/psnames/psnames.c
index febb80d..bfa5b85 100644
--- a/src/psnames/psnames.c
+++ b/src/psnames/psnames.c
@@ -1,26 +1,25 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psnames.c                                                              */
-/*                                                                         */
-/*    FreeType PSNames module component (body only).                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psnames.c
+ *
+ *   FreeType PSNames module component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
 #include <ft2build.h>
 
 #include "psmodule.c"
-#include "pspic.c"
 
 
 /* END */
diff --git a/src/psnames/pspic.c b/src/psnames/pspic.c
deleted file mode 100644
index 85a06f3..0000000
--- a/src/psnames/pspic.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pspic.c                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for psnames module.  */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "pspic.h"
-#include "psnamerr.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from psmodule.c */
-  FT_Error
-  FT_Create_Class_pscmaps_services( FT_Library           library,
-                                    FT_ServiceDescRec**  output_class );
-  void
-  FT_Destroy_Class_pscmaps_services( FT_Library          library,
-                                     FT_ServiceDescRec*  clazz );
-
-  void
-  FT_Init_Class_pscmaps_interface( FT_Library              library,
-                                   FT_Service_PsCMapsRec*  clazz );
-
-
-  void
-  psnames_module_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->psnames )
-    {
-      PSModulePIC*  container = (PSModulePIC*)pic_container->psnames;
-
-
-      if ( container->pscmaps_services )
-        FT_Destroy_Class_pscmaps_services( library,
-                                           container->pscmaps_services );
-      container->pscmaps_services = NULL;
-      FT_FREE( container );
-      pic_container->psnames = NULL;
-    }
-  }
-
-
-  FT_Error
-  psnames_module_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    PSModulePIC*       container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->psnames = container;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    error = FT_Create_Class_pscmaps_services(
-              library, &container->pscmaps_services );
-    if ( error )
-      goto Exit;
-    FT_Init_Class_pscmaps_interface( library,
-                                     &container->pscmaps_interface );
-
-  Exit:
-    if ( error )
-      psnames_module_class_pic_free( library );
-    return error;
-  }
-
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/psnames/pspic.h b/src/psnames/pspic.h
deleted file mode 100644
index 889780c..0000000
--- a/src/psnames/pspic.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pspic.h                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for psnames module.  */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef PSPIC_H_
-#define PSPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define PSCMAPS_SERVICES_GET   pscmaps_services
-#define PSCMAPS_INTERFACE_GET  pscmaps_interface
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_SERVICE_POSTSCRIPT_CMAPS_H
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  PSModulePIC_
-  {
-    FT_ServiceDescRec*     pscmaps_services;
-    FT_Service_PsCMapsRec  pscmaps_interface;
-
-  } PSModulePIC;
-
-
-#define GET_PIC( lib )                                     \
-          ( (PSModulePIC*)((lib)->pic_container.psnames) )
-#define PSCMAPS_SERVICES_GET   ( GET_PIC( library )->pscmaps_services )
-#define PSCMAPS_INTERFACE_GET  ( GET_PIC( library )->pscmaps_interface )
-
-
-  /* see pspic.c for the implementation */
-  void
-  psnames_module_class_pic_free( FT_Library  library );
-
-  FT_Error
-  psnames_module_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* PSPIC_H_ */
-
-
-/* END */
diff --git a/src/psnames/pstables.h b/src/psnames/pstables.h
index 79545ee..e574122 100644
--- a/src/psnames/pstables.h
+++ b/src/psnames/pstables.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pstables.h                                                             */
-/*                                                                         */
-/*    PostScript glyph names.                                              */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pstables.h
+ *
+ *   PostScript glyph names.
+ *
+ * Copyright 2005-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /* This file has been generated automatically -- do not edit! */
@@ -609,12 +609,12 @@
 
 
   /*
-   *  This table is a compressed version of the Adobe Glyph List (AGL),
-   *  optimized for efficient searching.  It has been generated by the
-   *  `glnames.py' python script located in the `src/tools' directory.
+   * This table is a compressed version of the Adobe Glyph List (AGL),
+   * optimized for efficient searching.  It has been generated by the
+   * `glnames.py' python script located in the `src/tools' directory.
    *
-   *  The lookup function to get the Unicode value for a given string
-   *  is defined below the table.
+   * The lookup function to get the Unicode value for a given string
+   * is defined below the table.
    */
 
 #ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
@@ -4137,7 +4137,7 @@
 
 #ifdef  DEFINE_PS_TABLES
   /*
-   *  This function searches the compressed table efficiently.
+   * This function searches the compressed table efficiently.
    */
   static unsigned long
   ft_get_adobe_glyph_index( const char*  name,
diff --git a/src/psnames/rules.mk b/src/psnames/rules.mk
index 4d629d8..46ec5df 100644
--- a/src/psnames/rules.mk
+++ b/src/psnames/rules.mk
@@ -28,8 +28,7 @@
 
 # PSNames driver sources (i.e., C files)
 #
-PSNAMES_DRV_SRC := $(PSNAMES_DIR)/psmodule.c \
-                   $(PSNAMES_DIR)/pspic.c
+PSNAMES_DRV_SRC := $(PSNAMES_DIR)/psmodule.c
 
 
 # PSNames driver headers
diff --git a/src/raster/ftmisc.h b/src/raster/ftmisc.h
index 7e40119..97db371 100644
--- a/src/raster/ftmisc.h
+++ b/src/raster/ftmisc.h
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmisc.h                                                               */
-/*                                                                         */
-/*    Miscellaneous macros for stand-alone rasterizer (specification       */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmisc.h
+ *
+ *   Miscellaneous macros for stand-alone rasterizer (specification
+ *   only).
+ *
+ * Copyright 2005-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /***************************************************/
-  /*                                                 */
-  /* This file is *not* portable!  You have to adapt */
-  /* its definitions to your platform.               */
-  /*                                                 */
-  /***************************************************/
+  /****************************************************
+   *
+   * This file is *not* portable!  You have to adapt
+   * its definitions to your platform.
+   *
+   */
 
 #ifndef FTMISC_H_
 #define FTMISC_H_
diff --git a/src/raster/ftraster.c b/src/raster/ftraster.c
index 4354730..8a583ea 100644
--- a/src/raster/ftraster.c
+++ b/src/raster/ftraster.c
@@ -1,51 +1,51 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftraster.c                                                             */
-/*                                                                         */
-/*    The FreeType glyph rasterizer (body).                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftraster.c
+ *
+ *   The FreeType glyph rasterizer (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file can be compiled without the rest of the FreeType engine, by */
-  /* defining the STANDALONE_ macro when compiling it.  You also need to   */
-  /* put the files `ftimage.h' and `ftmisc.h' into the $(incdir)           */
-  /* directory.  Typically, you should do something like                   */
-  /*                                                                       */
-  /* - copy `src/raster/ftraster.c' (this file) to your current directory  */
-  /*                                                                       */
-  /* - copy `include/freetype/ftimage.h' and `src/raster/ftmisc.h' to your */
-  /*   current directory                                                   */
-  /*                                                                       */
-  /* - compile `ftraster' with the STANDALONE_ macro defined, as in        */
-  /*                                                                       */
-  /*     cc -c -DSTANDALONE_ ftraster.c                                    */
-  /*                                                                       */
-  /* The renderer can be initialized with a call to                        */
-  /* `ft_standard_raster.raster_new'; a bitmap can be generated            */
-  /* with a call to `ft_standard_raster.raster_render'.                    */
-  /*                                                                       */
-  /* See the comments and documentation in the file `ftimage.h' for more   */
-  /* details on how the raster works.                                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file can be compiled without the rest of the FreeType engine, by
+   * defining the STANDALONE_ macro when compiling it.  You also need to
+   * put the files `ftimage.h' and `ftmisc.h' into the $(incdir)
+   * directory.  Typically, you should do something like
+   *
+   * - copy `src/raster/ftraster.c' (this file) to your current directory
+   *
+   * - copy `include/freetype/ftimage.h' and `src/raster/ftmisc.h' to your
+   *   current directory
+   *
+   * - compile `ftraster' with the STANDALONE_ macro defined, as in
+   *
+   *     cc -c -DSTANDALONE_ ftraster.c
+   *
+   * The renderer can be initialized with a call to
+   * `ft_standard_raster.raster_new'; a bitmap can be generated
+   * with a call to `ft_standard_raster.raster_render'.
+   *
+   * See the comments and documentation in the file `ftimage.h' for more
+   * details on how the raster works.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This is a rewrite of the FreeType 1.x scan-line converter             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This is a rewrite of the FreeType 1.x scan-line converter
+   *
+   */
 
 #ifdef STANDALONE_
 
@@ -65,82 +65,81 @@
 #include <ft2build.h>
 #include "ftraster.h"
 #include FT_INTERNAL_CALC_H   /* for FT_MulDiv and FT_MulDiv_No_Round */
-
-#include "rastpic.h"
+#include FT_OUTLINE_H         /* for FT_Outline_Get_CBox              */
 
 #endif /* !STANDALONE_ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* A simple technical note on how the raster works                       */
-  /* -----------------------------------------------                       */
-  /*                                                                       */
-  /*   Converting an outline into a bitmap is achieved in several steps:   */
-  /*                                                                       */
-  /*   1 - Decomposing the outline into successive `profiles'.  Each       */
-  /*       profile is simply an array of scanline intersections on a given */
-  /*       dimension.  A profile's main attributes are                     */
-  /*                                                                       */
-  /*       o its scanline position boundaries, i.e. `Ymin' and `Ymax'      */
-  /*                                                                       */
-  /*       o an array of intersection coordinates for each scanline        */
-  /*         between `Ymin' and `Ymax'                                     */
-  /*                                                                       */
-  /*       o a direction, indicating whether it was built going `up' or    */
-  /*         `down', as this is very important for filling rules           */
-  /*                                                                       */
-  /*       o its drop-out mode                                             */
-  /*                                                                       */
-  /*   2 - Sweeping the target map's scanlines in order to compute segment */
-  /*       `spans' which are then filled.  Additionally, this pass         */
-  /*       performs drop-out control.                                      */
-  /*                                                                       */
-  /*   The outline data is parsed during step 1 only.  The profiles are    */
-  /*   built from the bottom of the render pool, used as a stack.  The     */
-  /*   following graphics shows the profile list under construction:       */
-  /*                                                                       */
-  /*     __________________________________________________________ _ _    */
-  /*    |         |                 |         |                 |          */
-  /*    | profile | coordinates for | profile | coordinates for |-->       */
-  /*    |    1    |  profile 1      |    2    |  profile 2      |-->       */
-  /*    |_________|_________________|_________|_________________|__ _ _    */
-  /*                                                                       */
-  /*    ^                                                       ^          */
-  /*    |                                                       |          */
-  /* start of render pool                                      top         */
-  /*                                                                       */
-  /*   The top of the profile stack is kept in the `top' variable.         */
-  /*                                                                       */
-  /*   As you can see, a profile record is pushed on top of the render     */
-  /*   pool, which is then followed by its coordinates/intersections.  If  */
-  /*   a change of direction is detected in the outline, a new profile is  */
-  /*   generated until the end of the outline.                             */
-  /*                                                                       */
-  /*   Note that when all profiles have been generated, the function       */
-  /*   Finalize_Profile_Table() is used to record, for each profile, its   */
-  /*   bottom-most scanline as well as the scanline above its upmost       */
-  /*   boundary.  These positions are called `y-turns' because they (sort  */
-  /*   of) correspond to local extrema.  They are stored in a sorted list  */
-  /*   built from the top of the render pool as a downwards stack:         */
-  /*                                                                       */
-  /*      _ _ _______________________________________                      */
-  /*                            |                    |                     */
-  /*                         <--| sorted list of     |                     */
-  /*                         <--|  extrema scanlines |                     */
-  /*      _ _ __________________|____________________|                     */
-  /*                                                                       */
-  /*                            ^                    ^                     */
-  /*                            |                    |                     */
-  /*                         maxBuff           sizeBuff = end of pool      */
-  /*                                                                       */
-  /*   This list is later used during the sweep phase in order to          */
-  /*   optimize performance (see technical note on the sweep below).       */
-  /*                                                                       */
-  /*   Of course, the raster detects whether the two stacks collide and    */
-  /*   handles the situation properly.                                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * A simple technical note on how the raster works
+   * -----------------------------------------------
+   *
+   *   Converting an outline into a bitmap is achieved in several steps:
+   *
+   *   1 - Decomposing the outline into successive `profiles'.  Each
+   *       profile is simply an array of scanline intersections on a given
+   *       dimension.  A profile's main attributes are
+   *
+   *       o its scanline position boundaries, i.e. `Ymin' and `Ymax'
+   *
+   *       o an array of intersection coordinates for each scanline
+   *         between `Ymin' and `Ymax'
+   *
+   *       o a direction, indicating whether it was built going `up' or
+   *         `down', as this is very important for filling rules
+   *
+   *       o its drop-out mode
+   *
+   *   2 - Sweeping the target map's scanlines in order to compute segment
+   *       `spans' which are then filled.  Additionally, this pass
+   *       performs drop-out control.
+   *
+   *   The outline data is parsed during step 1 only.  The profiles are
+   *   built from the bottom of the render pool, used as a stack.  The
+   *   following graphics shows the profile list under construction:
+   *
+   *     __________________________________________________________ _ _
+   *   |         |                 |         |                 |
+   *   | profile | coordinates for | profile | coordinates for |-->
+   *   |    1    |  profile 1      |    2    |  profile 2      |-->
+   *   |_________|_________________|_________|_________________|__ _ _
+   *
+   *   ^                                                       ^
+   *   |                                                       |
+   * start of render pool                                      top
+   *
+   *   The top of the profile stack is kept in the `top' variable.
+   *
+   *   As you can see, a profile record is pushed on top of the render
+   *   pool, which is then followed by its coordinates/intersections.  If
+   *   a change of direction is detected in the outline, a new profile is
+   *   generated until the end of the outline.
+   *
+   *   Note that when all profiles have been generated, the function
+   *   Finalize_Profile_Table() is used to record, for each profile, its
+   *   bottom-most scanline as well as the scanline above its upmost
+   *   boundary.  These positions are called `y-turns' because they (sort
+   *   of) correspond to local extrema.  They are stored in a sorted list
+   *   built from the top of the render pool as a downwards stack:
+   *
+   *     _ _ _______________________________________
+   *                           |                    |
+   *                         <--| sorted list of     |
+   *                         <--|  extrema scanlines |
+   *     _ _ __________________|____________________|
+   *
+   *                           ^                    ^
+   *                           |                    |
+   *                         maxBuff           sizeBuff = end of pool
+   *
+   *   This list is later used during the sweep phase in order to
+   *   optimize performance (see technical note on the sweep below).
+   *
+   *   Of course, the raster detects whether the two stacks collide and
+   *   handles the situation properly.
+   *
+   */
 
 
   /*************************************************************************/
@@ -163,12 +162,12 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_raster
 
@@ -452,9 +451,9 @@
 #define CEILING( x )  ( ( (x) + ras.precision - 1 ) & -ras.precision )
 #define TRUNC( x )    ( (Long)(x) >> ras.precision_bits )
 #define FRAC( x )     ( (x) & ( ras.precision - 1 ) )
-#define SCALED( x )   ( ( (x) < 0 ? -( -(x) << ras.scale_shift )   \
-                                  :  (  (x) << ras.scale_shift ) ) \
-                        - ras.precision_half )
+
+  /* scale and shift grid to pixel centers */
+#define SCALED( x )   ( (x) * ras.precision_scale - ras.precision_half )
 
 #define IS_BOTTOM_OVERSHOOT( x ) \
           (Bool)( CEILING( x ) - x >= ras.precision_half )
@@ -476,13 +475,10 @@
     Int         precision_bits;     /* precision related variables         */
     Int         precision;
     Int         precision_half;
-    Int         precision_shift;
+    Int         precision_scale;
     Int         precision_step;
     Int         precision_jitter;
 
-    Int         scale_shift;        /* == precision_shift   for bitmaps    */
-                                    /* == precision_shift+1 for pixmaps    */
-
     PLong       buff;               /* The profiles buffer                 */
     PLong       sizeBuff;           /* Render pool size                    */
     PLong       maxBuff;            /* Profiles buffer size                */
@@ -495,8 +491,7 @@
     TPoint*     arc;                /* current Bezier arc pointer          */
 
     UShort      bWidth;             /* target bitmap width                 */
-    PByte       bTarget;            /* target bitmap buffer                */
-    PByte       gTarget;            /* target pixmap buffer                */
+    PByte       bOrigin;            /* target bitmap bottom-left origin    */
 
     Long        lastX, lastY;
     Long        minY, maxY;
@@ -519,8 +514,6 @@
     FT_Outline  outline;
 
     Long        traceOfs;           /* current offset in target bitmap     */
-    Long        traceG;             /* current offset in target pixmap     */
-
     Short       traceIncr;          /* sweep's increment in target bitmap  */
 
     /* dispatch variables */
@@ -572,18 +565,19 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Set_High_Precision                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set precision variables according to param flag.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    High :: Set to True for high precision (typically for ppem < 24),  */
-  /*            false otherwise.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Set_High_Precision
+   *
+   * @Description:
+   *   Set precision variables according to param flag.
+   *
+   * @Input:
+   *   High ::
+   *     Set to True for high precision (typically for ppem < 24),
+   *     false otherwise.
+   */
   static void
   Set_High_Precision( RAS_ARGS Int  High )
   {
@@ -625,29 +619,31 @@
     FT_TRACE6(( "Set_High_Precision(%s)\n", High ? "true" : "false" ));
 
     ras.precision       = 1 << ras.precision_bits;
-    ras.precision_half  = ras.precision / 2;
-    ras.precision_shift = ras.precision_bits - Pixel_Bits;
+    ras.precision_half  = ras.precision >> 1;
+    ras.precision_scale = ras.precision >> Pixel_Bits;
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    New_Profile                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new profile in the render pool.                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    aState    :: The state/orientation of the new profile.             */
-  /*                                                                       */
-  /*    overshoot :: Whether the profile's unrounded start position        */
-  /*                 differs by at least a half pixel.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*   SUCCESS on success.  FAILURE in case of overflow or of incoherent   */
-  /*   profile.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   New_Profile
+   *
+   * @Description:
+   *   Create a new profile in the render pool.
+   *
+   * @Input:
+   *   aState ::
+   *     The state/orientation of the new profile.
+   *
+   *   overshoot ::
+   *     Whether the profile's unrounded start position
+   *     differs by at least a half pixel.
+   *
+   * @Return:
+   *  SUCCESS on success.  FAILURE in case of overflow or of incoherent
+   *  profile.
+   */
   static Bool
   New_Profile( RAS_ARGS TStates  aState,
                         Bool     overshoot )
@@ -706,21 +702,22 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    End_Profile                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalize the current profile.                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    overshoot :: Whether the profile's unrounded end position differs  */
-  /*                 by at least a half pixel.                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success.  FAILURE in case of overflow or incoherency.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   End_Profile
+   *
+   * @Description:
+   *   Finalize the current profile.
+   *
+   * @Input:
+   *   overshoot ::
+   *     Whether the profile's unrounded end position differs
+   *     by at least a half pixel.
+   *
+   * @Return:
+   *   SUCCESS on success.  FAILURE in case of overflow or incoherency.
+   */
   static Bool
   End_Profile( RAS_ARGS Bool  overshoot )
   {
@@ -778,21 +775,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Insert_Y_Turn                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Insert a salient into the sorted list placed on top of the render  */
-  /*    pool.                                                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    New y scanline position.                                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success.  FAILURE in case of overflow.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Insert_Y_Turn
+   *
+   * @Description:
+   *   Insert a salient into the sorted list placed on top of the render
+   *   pool.
+   *
+   * @Input:
+   *   New y scanline position.
+   *
+   * @Return:
+   *   SUCCESS on success.  FAILURE in case of overflow.
+   */
   static Bool
   Insert_Y_Turn( RAS_ARGS Int  y )
   {
@@ -834,17 +831,17 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Finalize_Profile_Table                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Adjust all links in the profiles list.                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success.  FAILURE in case of overflow.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Finalize_Profile_Table
+   *
+   * @Description:
+   *   Adjust all links in the profiles list.
+   *
+   * @Return:
+   *   SUCCESS on success.  FAILURE in case of overflow.
+   */
   static Bool
   Finalize_Profile_Table( RAS_ARG )
   {
@@ -894,22 +891,22 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Split_Conic                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Subdivide one conic Bezier into two joint sub-arcs in the Bezier   */
-  /*    stack.                                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    None (subdivided Bezier is taken from the top of the stack).       */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This routine is the `beef' of this component.  It is  _the_ inner  */
-  /*    loop that should be optimized to hell to get the best performance. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Split_Conic
+   *
+   * @Description:
+   *   Subdivide one conic Bezier into two joint sub-arcs in the Bezier
+   *   stack.
+   *
+   * @Input:
+   *   None (subdivided Bezier is taken from the top of the stack).
+   *
+   * @Note:
+   *   This routine is the `beef' of this component.  It is  _the_ inner
+   *   loop that should be optimized to hell to get the best performance.
+   */
   static void
   Split_Conic( TPoint*  base )
   {
@@ -933,20 +930,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Split_Cubic                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Subdivide a third-order Bezier arc into two joint sub-arcs in the  */
-  /*    Bezier stack.                                                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This routine is the `beef' of the component.  It is one of _the_   */
-  /*    inner loops that should be optimized like hell to get the best     */
-  /*    performance.                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Split_Cubic
+   *
+   * @Description:
+   *   Subdivide a third-order Bezier arc into two joint sub-arcs in the
+   *   Bezier stack.
+   *
+   * @Note:
+   *   This routine is the `beef' of the component.  It is one of _the_
+   *   inner loops that should be optimized like hell to get the best
+   *   performance.
+   */
   static void
   Split_Cubic( TPoint*  base )
   {
@@ -975,31 +972,37 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Line_Up                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the x-coordinates of an ascending line segment and store   */
-  /*    them in the render pool.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    x1   :: The x-coordinate of the segment's start point.             */
-  /*                                                                       */
-  /*    y1   :: The y-coordinate of the segment's start point.             */
-  /*                                                                       */
-  /*    x2   :: The x-coordinate of the segment's end point.               */
-  /*                                                                       */
-  /*    y2   :: The y-coordinate of the segment's end point.               */
-  /*                                                                       */
-  /*    miny :: A lower vertical clipping bound value.                     */
-  /*                                                                       */
-  /*    maxy :: An upper vertical clipping bound value.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success, FAILURE on render pool overflow.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Line_Up
+   *
+   * @Description:
+   *   Compute the x-coordinates of an ascending line segment and store
+   *   them in the render pool.
+   *
+   * @Input:
+   *   x1 ::
+   *     The x-coordinate of the segment's start point.
+   *
+   *   y1 ::
+   *     The y-coordinate of the segment's start point.
+   *
+   *   x2 ::
+   *     The x-coordinate of the segment's end point.
+   *
+   *   y2 ::
+   *     The y-coordinate of the segment's end point.
+   *
+   *   miny ::
+   *     A lower vertical clipping bound value.
+   *
+   *   maxy ::
+   *     An upper vertical clipping bound value.
+   *
+   * @Return:
+   *   SUCCESS on success, FAILURE on render pool overflow.
+   */
   static Bool
   Line_Up( RAS_ARGS Long  x1,
                     Long  y1,
@@ -1114,31 +1117,37 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Line_Down                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the x-coordinates of an descending line segment and store  */
-  /*    them in the render pool.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    x1   :: The x-coordinate of the segment's start point.             */
-  /*                                                                       */
-  /*    y1   :: The y-coordinate of the segment's start point.             */
-  /*                                                                       */
-  /*    x2   :: The x-coordinate of the segment's end point.               */
-  /*                                                                       */
-  /*    y2   :: The y-coordinate of the segment's end point.               */
-  /*                                                                       */
-  /*    miny :: A lower vertical clipping bound value.                     */
-  /*                                                                       */
-  /*    maxy :: An upper vertical clipping bound value.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success, FAILURE on render pool overflow.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Line_Down
+   *
+   * @Description:
+   *   Compute the x-coordinates of an descending line segment and store
+   *   them in the render pool.
+   *
+   * @Input:
+   *   x1 ::
+   *     The x-coordinate of the segment's start point.
+   *
+   *   y1 ::
+   *     The y-coordinate of the segment's start point.
+   *
+   *   x2 ::
+   *     The x-coordinate of the segment's end point.
+   *
+   *   y2 ::
+   *     The y-coordinate of the segment's end point.
+   *
+   *   miny ::
+   *     A lower vertical clipping bound value.
+   *
+   *   maxy ::
+   *     An upper vertical clipping bound value.
+   *
+   * @Return:
+   *   SUCCESS on success, FAILURE on render pool overflow.
+   */
   static Bool
   Line_Down( RAS_ARGS Long  x1,
                       Long  y1,
@@ -1165,27 +1174,31 @@
   typedef void  (*TSplitter)( TPoint*  base );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Bezier_Up                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the x-coordinates of an ascending Bezier arc and store     */
-  /*    them in the render pool.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    degree   :: The degree of the Bezier arc (either 2 or 3).          */
-  /*                                                                       */
-  /*    splitter :: The function to split Bezier arcs.                     */
-  /*                                                                       */
-  /*    miny     :: A lower vertical clipping bound value.                 */
-  /*                                                                       */
-  /*    maxy     :: An upper vertical clipping bound value.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success, FAILURE on render pool overflow.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Bezier_Up
+   *
+   * @Description:
+   *   Compute the x-coordinates of an ascending Bezier arc and store
+   *   them in the render pool.
+   *
+   * @Input:
+   *   degree ::
+   *     The degree of the Bezier arc (either 2 or 3).
+   *
+   *   splitter ::
+   *     The function to split Bezier arcs.
+   *
+   *   miny ::
+   *     A lower vertical clipping bound value.
+   *
+   *   maxy ::
+   *     An upper vertical clipping bound value.
+   *
+   * @Return:
+   *   SUCCESS on success, FAILURE on render pool overflow.
+   */
   static Bool
   Bezier_Up( RAS_ARGS Int        degree,
                       TSplitter  splitter,
@@ -1298,27 +1311,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Bezier_Down                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the x-coordinates of an descending Bezier arc and store    */
-  /*    them in the render pool.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    degree   :: The degree of the Bezier arc (either 2 or 3).          */
-  /*                                                                       */
-  /*    splitter :: The function to split Bezier arcs.                     */
-  /*                                                                       */
-  /*    miny     :: A lower vertical clipping bound value.                 */
-  /*                                                                       */
-  /*    maxy     :: An upper vertical clipping bound value.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success, FAILURE on render pool overflow.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Bezier_Down
+   *
+   * @Description:
+   *   Compute the x-coordinates of an descending Bezier arc and store
+   *   them in the render pool.
+   *
+   * @Input:
+   *   degree ::
+   *     The degree of the Bezier arc (either 2 or 3).
+   *
+   *   splitter ::
+   *     The function to split Bezier arcs.
+   *
+   *   miny ::
+   *     A lower vertical clipping bound value.
+   *
+   *   maxy ::
+   *     An upper vertical clipping bound value.
+   *
+   * @Return:
+   *   SUCCESS on success, FAILURE on render pool overflow.
+   */
   static Bool
   Bezier_Down( RAS_ARGS Int        degree,
                         TSplitter  splitter,
@@ -1347,25 +1364,27 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Line_To                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Inject a new line segment and adjust the Profiles list.            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*   x :: The x-coordinate of the segment's end point (its start point   */
-  /*        is stored in `lastX').                                         */
-  /*                                                                       */
-  /*   y :: The y-coordinate of the segment's end point (its start point   */
-  /*        is stored in `lastY').                                         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*   SUCCESS on success, FAILURE on render pool overflow or incorrect    */
-  /*   profile.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Line_To
+   *
+   * @Description:
+   *   Inject a new line segment and adjust the Profiles list.
+   *
+   * @Input:
+   *  x ::
+   *    The x-coordinate of the segment's end point (its start point
+   *    is stored in `lastX').
+   *
+   *  y ::
+   *    The y-coordinate of the segment's end point (its start point
+   *    is stored in `lastY').
+   *
+   * @Return:
+   *  SUCCESS on success, FAILURE on render pool overflow or incorrect
+   *  profile.
+   */
   static Bool
   Line_To( RAS_ARGS Long  x,
                     Long  y )
@@ -1441,29 +1460,33 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Conic_To                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Inject a new conic arc and adjust the profile list.                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*   cx :: The x-coordinate of the arc's new control point.              */
-  /*                                                                       */
-  /*   cy :: The y-coordinate of the arc's new control point.              */
-  /*                                                                       */
-  /*   x  :: The x-coordinate of the arc's end point (its start point is   */
-  /*         stored in `lastX').                                           */
-  /*                                                                       */
-  /*   y  :: The y-coordinate of the arc's end point (its start point is   */
-  /*         stored in `lastY').                                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*   SUCCESS on success, FAILURE on render pool overflow or incorrect    */
-  /*   profile.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Conic_To
+   *
+   * @Description:
+   *   Inject a new conic arc and adjust the profile list.
+   *
+   * @Input:
+   *  cx ::
+   *    The x-coordinate of the arc's new control point.
+   *
+   *  cy ::
+   *    The y-coordinate of the arc's new control point.
+   *
+   *  x ::
+   *    The x-coordinate of the arc's end point (its start point is
+   *    stored in `lastX').
+   *
+   *  y ::
+   *    The y-coordinate of the arc's end point (its start point is
+   *    stored in `lastY').
+   *
+   * @Return:
+   *  SUCCESS on success, FAILURE on render pool overflow or incorrect
+   *  profile.
+   */
   static Bool
   Conic_To( RAS_ARGS Long  cx,
                      Long  cy,
@@ -1558,33 +1581,39 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Cubic_To                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Inject a new cubic arc and adjust the profile list.                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*   cx1 :: The x-coordinate of the arc's first new control point.       */
-  /*                                                                       */
-  /*   cy1 :: The y-coordinate of the arc's first new control point.       */
-  /*                                                                       */
-  /*   cx2 :: The x-coordinate of the arc's second new control point.      */
-  /*                                                                       */
-  /*   cy2 :: The y-coordinate of the arc's second new control point.      */
-  /*                                                                       */
-  /*   x   :: The x-coordinate of the arc's end point (its start point is  */
-  /*          stored in `lastX').                                          */
-  /*                                                                       */
-  /*   y   :: The y-coordinate of the arc's end point (its start point is  */
-  /*          stored in `lastY').                                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*   SUCCESS on success, FAILURE on render pool overflow or incorrect    */
-  /*   profile.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Cubic_To
+   *
+   * @Description:
+   *   Inject a new cubic arc and adjust the profile list.
+   *
+   * @Input:
+   *  cx1 ::
+   *    The x-coordinate of the arc's first new control point.
+   *
+   *  cy1 ::
+   *    The y-coordinate of the arc's first new control point.
+   *
+   *  cx2 ::
+   *    The x-coordinate of the arc's second new control point.
+   *
+   *  cy2 ::
+   *    The y-coordinate of the arc's second new control point.
+   *
+   *  x ::
+   *    The x-coordinate of the arc's end point (its start point is
+   *    stored in `lastX').
+   *
+   *  y ::
+   *    The y-coordinate of the arc's end point (its start point is
+   *    stored in `lastY').
+   *
+   * @Return:
+   *  SUCCESS on success, FAILURE on render pool overflow or incorrect
+   *  profile.
+   */
   static Bool
   Cubic_To( RAS_ARGS Long  cx1,
                      Long  cy1,
@@ -1705,27 +1734,30 @@
                        } while ( 0 )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Decompose_Curve                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Scan the outline arrays in order to emit individual segments and   */
-  /*    Beziers by calling Line_To() and Bezier_To().  It handles all      */
-  /*    weird cases, like when the first point is off the curve, or when   */
-  /*    there are simply no `on' points in the contour!                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    first   :: The index of the first point in the contour.            */
-  /*                                                                       */
-  /*    last    :: The index of the last point in the contour.             */
-  /*                                                                       */
-  /*    flipped :: If set, flip the direction of the curve.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success, FAILURE on error.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Decompose_Curve
+   *
+   * @Description:
+   *   Scan the outline arrays in order to emit individual segments and
+   *   Beziers by calling Line_To() and Bezier_To().  It handles all
+   *   weird cases, like when the first point is off the curve, or when
+   *   there are simply no `on' points in the contour!
+   *
+   * @Input:
+   *   first ::
+   *     The index of the first point in the contour.
+   *
+   *   last ::
+   *     The index of the last point in the contour.
+   *
+   *   flipped ::
+   *     If set, flip the direction of the curve.
+   *
+   * @Return:
+   *   SUCCESS on success, FAILURE on error.
+   */
   static Bool
   Decompose_Curve( RAS_ARGS UShort  first,
                             UShort  last,
@@ -1934,22 +1966,23 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Convert_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Convert a glyph into a series of segments and arcs and make a      */
-  /*    profiles list with them.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    flipped :: If set, flip the direction of curve.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success, FAILURE if any error was encountered during    */
-  /*    rendering.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Convert_Glyph
+   *
+   * @Description:
+   *   Convert a glyph into a series of segments and arcs and make a
+   *   profiles list with them.
+   *
+   * @Input:
+   *   flipped ::
+   *     If set, flip the direction of curve.
+   *
+   * @Return:
+   *   SUCCESS on success, FAILURE if any error was encountered during
+   *   rendering.
+   */
   static Bool
   Convert_Glyph( RAS_ARGS Int  flipped )
   {
@@ -2028,12 +2061,12 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Init_Linked                                                          */
-  /*                                                                       */
-  /*    Initializes an empty linked list.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Init_Linked
+   *
+   *   Initializes an empty linked list.
+   */
   static void
   Init_Linked( TProfileList*  l )
   {
@@ -2041,12 +2074,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  InsNew                                                               */
-  /*                                                                       */
-  /*    Inserts a new profile in a linked list.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * InsNew
+   *
+   *   Inserts a new profile in a linked list.
+   */
   static void
   InsNew( PProfileList  list,
           PProfile      profile )
@@ -2072,12 +2105,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  DelOld                                                               */
-  /*                                                                       */
-  /*    Removes an old profile from a linked list.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DelOld
+   *
+   *   Removes an old profile from a linked list.
+   */
   static void
   DelOld( PProfileList  list,
           PProfile      profile )
@@ -2105,14 +2138,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Sort                                                                 */
-  /*                                                                       */
-  /*    Sorts a trace list.  In 95%, the list is already sorted.  We need  */
-  /*    an algorithm which is fast in this case.  Bubble sort is enough    */
-  /*    and simple.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Sort
+   *
+   *   Sorts a trace list.  In 95%, the list is already sorted.  We need
+   *   an algorithm which is fast in this case.  Bubble sort is enough
+   *   and simple.
+   */
   static void
   Sort( PProfileList  list )
   {
@@ -2163,14 +2196,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Vertical Sweep Procedure Set                                         */
-  /*                                                                       */
-  /*  These four routines are used during the vertical black/white sweep   */
-  /*  phase by the generic Draw_Sweep() function.                          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Vertical Sweep Procedure Set
+   *
+   * These four routines are used during the vertical black/white sweep
+   * phase by the generic Draw_Sweep() function.
+   *
+   */
 
   static void
   Vertical_Sweep_Init( RAS_ARGS Short*  min,
@@ -2183,8 +2216,6 @@
 
     ras.traceIncr = (Short)-pitch;
     ras.traceOfs  = -*min * pitch;
-    if ( pitch > 0 )
-      ras.traceOfs += (Long)( ras.target.rows - 1 ) * pitch;
   }
 
 
@@ -2242,7 +2273,7 @@
       f1 = (Byte)  ( 0xFF >> ( e1 & 7 ) );
       f2 = (Byte) ~( 0x7F >> ( e2 & 7 ) );
 
-      target = ras.bTarget + ras.traceOfs + c1;
+      target = ras.bOrigin + ras.traceOfs + c1;
       c2 -= c1;
 
       if ( c2 > 0 )
@@ -2252,12 +2283,9 @@
         /* memset() is slower than the following code on many platforms. */
         /* This is due to the fact that, in the vast majority of cases,  */
         /* the span length in bytes is relatively small.                 */
-        c2--;
-        while ( c2 > 0 )
-        {
+        while ( --c2 > 0 )
           *(++target) = 0xFF;
-          c2--;
-        }
+
         target[1] |= f2;
       }
       else
@@ -2400,7 +2428,7 @@
         f1 = (Short)( e1 &  7 );
 
         if ( e1 >= 0 && e1 < ras.bWidth                      &&
-             ras.bTarget[ras.traceOfs + c1] & ( 0x80 >> f1 ) )
+             ras.bOrigin[ras.traceOfs + c1] & ( 0x80 >> f1 ) )
           goto Exit;
       }
       else
@@ -2416,7 +2444,7 @@
       c1 = (Short)( e1 >> 3 );
       f1 = (Short)( e1 & 7 );
 
-      ras.bTarget[ras.traceOfs + c1] |= (char)( 0x80 >> f1 );
+      ras.bOrigin[ras.traceOfs + c1] |= (char)( 0x80 >> f1 );
     }
 
   Exit:
@@ -2431,14 +2459,14 @@
   }
 
 
-  /***********************************************************************/
-  /*                                                                     */
-  /*  Horizontal Sweep Procedure Set                                     */
-  /*                                                                     */
-  /*  These four routines are used during the horizontal black/white     */
-  /*  sweep phase by the generic Draw_Sweep() function.                  */
-  /*                                                                     */
-  /***********************************************************************/
+  /************************************************************************
+   *
+   * Horizontal Sweep Procedure Set
+   *
+   * These four routines are used during the horizontal black/white
+   * sweep phase by the generic Draw_Sweep() function.
+   *
+   */
 
   static void
   Horizontal_Sweep_Init( RAS_ARGS Short*  min,
@@ -2483,19 +2511,14 @@
         {
           Byte   f1;
           PByte  bits;
-          PByte  p;
 
 
           FT_TRACE7(( " -> y=%d (drop-out)", e1 ));
 
-          bits = ras.bTarget + ( y >> 3 );
+          bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
           f1   = (Byte)( 0x80 >> ( y & 7 ) );
-          p    = bits - e1 * ras.target.pitch;
 
-          if ( ras.target.pitch > 0 )
-            p += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
-
-          p[0] |= f1;
+          bits[0] |= f1;
         }
       }
 
@@ -2597,13 +2620,9 @@
 
         e1 = TRUNC( e1 );
 
-        bits = ras.bTarget + ( y >> 3 );
+        bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
         f1   = (Byte)( 0x80 >> ( y & 7 ) );
 
-        bits -= e1 * ras.target.pitch;
-        if ( ras.target.pitch > 0 )
-          bits += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
-
         if ( e1 >= 0                     &&
              (ULong)e1 < ras.target.rows &&
              *bits & f1                  )
@@ -2619,12 +2638,8 @@
     {
       FT_TRACE7(( " -> y=%d (drop-out)", e1 ));
 
-      bits  = ras.bTarget + ( y >> 3 );
+      bits  = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
       f1    = (Byte)( 0x80 >> ( y & 7 ) );
-      bits -= e1 * ras.target.pitch;
-
-      if ( ras.target.pitch > 0 )
-        bits += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
 
       bits[0] |= f1;
     }
@@ -2642,11 +2657,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Generic Sweep Drawing routine                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Generic Sweep Drawing routine
+   *
+   */
 
   static Bool
   Draw_Sweep( RAS_ARG )
@@ -2888,20 +2903,109 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Render_Single_Pass                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Perform one sweep with sub-banding.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    flipped :: If set, flip the direction of the outline.              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Renderer error code.                                               */
-  /*                                                                       */
+#ifdef STANDALONE_
+
+  /**************************************************************************
+   *
+   * The following functions should only compile in stand-alone mode,
+   * i.e., when building this component without the rest of FreeType.
+   *
+   */
+
+  /**************************************************************************
+   *
+   * @Function:
+   *   FT_Outline_Get_CBox
+   *
+   * @Description:
+   *   Return an outline's `control box'.  The control box encloses all
+   *   the outline's points, including Bézier control points.  Though it
+   *   coincides with the exact bounding box for most glyphs, it can be
+   *   slightly larger in some situations (like when rotating an outline
+   *   that contains Bézier outside arcs).
+   *
+   *   Computing the control box is very fast, while getting the bounding
+   *   box can take much more time as it needs to walk over all segments
+   *   and arcs in the outline.  To get the latter, you can use the
+   *   `ftbbox' component, which is dedicated to this single task.
+   *
+   * @Input:
+   *   outline ::
+   *     A pointer to the source outline descriptor.
+   *
+   * @Output:
+   *   acbox ::
+   *     The outline's control box.
+   *
+   * @Note:
+   *   See @FT_Glyph_Get_CBox for a discussion of tricky fonts.
+   */
+
+  static void
+  FT_Outline_Get_CBox( const FT_Outline*  outline,
+                       FT_BBox           *acbox )
+  {
+    Long  xMin, yMin, xMax, yMax;
+
+
+    if ( outline && acbox )
+    {
+      if ( outline->n_points == 0 )
+      {
+        xMin = 0;
+        yMin = 0;
+        xMax = 0;
+        yMax = 0;
+      }
+      else
+      {
+        FT_Vector*  vec   = outline->points;
+        FT_Vector*  limit = vec + outline->n_points;
+
+
+        xMin = xMax = vec->x;
+        yMin = yMax = vec->y;
+        vec++;
+
+        for ( ; vec < limit; vec++ )
+        {
+          Long  x, y;
+
+
+          x = vec->x;
+          if ( x < xMin ) xMin = x;
+          if ( x > xMax ) xMax = x;
+
+          y = vec->y;
+          if ( y < yMin ) yMin = y;
+          if ( y > yMax ) yMax = y;
+        }
+      }
+      acbox->xMin = xMin;
+      acbox->xMax = xMax;
+      acbox->yMin = yMin;
+      acbox->yMax = yMax;
+    }
+  }
+
+#endif /* STANDALONE_ */
+
+
+  /**************************************************************************
+   *
+   * @Function:
+   *   Render_Single_Pass
+   *
+   * @Description:
+   *   Perform one sweep with sub-banding.
+   *
+   * @Input:
+   *   flipped ::
+   *     If set, flip the direction of the outline.
+   *
+   * @Return:
+   *   Renderer error code.
+   */
   static int
   Render_Single_Pass( RAS_ARGS Bool  flipped )
   {
@@ -2963,17 +3067,17 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Render_Glyph                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Render a glyph in a bitmap.  Sub-banding if needed.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Render_Glyph
+   *
+   * @Description:
+   *   Render a glyph in a bitmap.  Sub-banding if needed.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   Render_Glyph( RAS_ARG )
   {
@@ -2982,7 +3086,6 @@
 
     Set_High_Precision( RAS_VARS ras.outline.flags &
                                  FT_OUTLINE_HIGH_PRECISION );
-    ras.scale_shift = ras.precision_shift;
 
     if ( ras.outline.flags & FT_OUTLINE_IGNORE_DROPOUTS )
       ras.dropOutControl = 2;
@@ -3013,7 +3116,10 @@
     ras.band_stack[0].y_max = (Short)( ras.target.rows - 1 );
 
     ras.bWidth  = (UShort)ras.target.width;
-    ras.bTarget = (Byte*)ras.target.buffer;
+    ras.bOrigin = (Byte*)ras.target.buffer;
+
+    if ( ras.target.pitch > 0 )
+      ras.bOrigin += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
 
     if ( ( error = Render_Single_Pass( RAS_VARS 0 ) ) != 0 )
       return error;
@@ -3185,20 +3291,6 @@
     if ( !target_map->buffer )
       return FT_THROW( Invalid );
 
-    /* reject too large outline coordinates */
-    {
-      FT_Vector*  vec   = outline->points;
-      FT_Vector*  limit = vec + outline->n_points;
-
-
-      for ( ; vec < limit; vec++ )
-      {
-        if ( vec->x < -0x1000000L || vec->x > 0x1000000L ||
-             vec->y < -0x1000000L || vec->y > 0x1000000L )
-         return FT_THROW( Invalid );
-      }
-    }
-
     ras.outline = *outline;
     ras.target  = *target_map;
 
diff --git a/src/raster/ftraster.h b/src/raster/ftraster.h
index 40b5d6d..3f13793 100644
--- a/src/raster/ftraster.h
+++ b/src/raster/ftraster.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftraster.h                                                             */
-/*                                                                         */
-/*    The FreeType glyph rasterizer (specification).                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftraster.h
+ *
+ *   The FreeType glyph rasterizer (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTRASTER_H_
@@ -28,11 +28,11 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Uncomment the following line if you are using ftraster.c as a         */
-  /* standalone module, fully independent of FreeType.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Uncomment the following line if you are using ftraster.c as a
+   * standalone module, fully independent of FreeType.
+   */
 /* #define STANDALONE_ */
 
   FT_EXPORT_VAR( const FT_Raster_Funcs )  ft_standard_raster;
diff --git a/src/raster/ftrend1.c b/src/raster/ftrend1.c
index a7ce973..e8ea9cb 100644
--- a/src/raster/ftrend1.c
+++ b/src/raster/ftrend1.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrend1.c                                                              */
-/*                                                                         */
-/*    The FreeType glyph rasterizer interface (body).                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrend1.c
+ *
+ *   The FreeType glyph rasterizer interface (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -22,7 +22,6 @@
 #include FT_OUTLINE_H
 #include "ftrend1.h"
 #include "ftraster.h"
-#include "rastpic.h"
 
 #include "rasterrs.h"
 
@@ -130,6 +129,14 @@
 
     ft_glyphslot_preset_bitmap( slot, mode, origin );
 
+    if ( bitmap->width > 0x7FFF || bitmap->rows > 0x7FFF )
+    {
+      FT_ERROR(( "ft_raster1_render: glyph is too large: %u x %u\n",
+                 bitmap->width, bitmap->rows ));
+      error = FT_THROW( Raster_Overflow );
+      goto Exit;
+    }
+
     /* allocate new one */
     if ( FT_ALLOC_MULT( bitmap->buffer, bitmap->rows, bitmap->pitch ) )
       goto Exit;
@@ -197,7 +204,7 @@
     (FT_Renderer_GetCBoxFunc)  ft_raster1_get_cbox,   /* get_glyph_cbox  */
     (FT_Renderer_SetModeFunc)  ft_raster1_set_mode,   /* set_mode        */
 
-    (FT_Raster_Funcs*)&FT_STANDARD_RASTER_GET         /* raster_class    */
+    (FT_Raster_Funcs*)&ft_standard_raster             /* raster_class    */
   )
 
 
diff --git a/src/raster/ftrend1.h b/src/raster/ftrend1.h
index 2abdf2d..05be54f 100644
--- a/src/raster/ftrend1.h
+++ b/src/raster/ftrend1.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrend1.h                                                              */
-/*                                                                         */
-/*    The FreeType glyph rasterizer interface (specification).             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrend1.h
+ *
+ *   The FreeType glyph rasterizer interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTREND1_H_
diff --git a/src/raster/raster.c b/src/raster/raster.c
index 76edd21..ffd8994 100644
--- a/src/raster/raster.c
+++ b/src/raster/raster.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  raster.c                                                               */
-/*                                                                         */
-/*    FreeType monochrome rasterer module component (body only).           */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * raster.c
+ *
+ *   FreeType monochrome rasterer module component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
@@ -21,7 +21,6 @@
 
 #include "ftraster.c"
 #include "ftrend1.c"
-#include "rastpic.c"
 
 
 /* END */
diff --git a/src/raster/rasterrs.h b/src/raster/rasterrs.h
index 22a3e15..ab242ac 100644
--- a/src/raster/rasterrs.h
+++ b/src/raster/rasterrs.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  rasterrs.h                                                             */
-/*                                                                         */
-/*    monochrome renderer error codes (specification only).                */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * rasterrs.h
+ *
+ *   monochrome renderer error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the monochrome renderer error enumeration */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the monochrome renderer error enumeration
+   * constants.
+   *
+   */
 
 #ifndef RASTERRS_H_
 #define RASTERRS_H_
diff --git a/src/raster/rastpic.c b/src/raster/rastpic.c
deleted file mode 100644
index 1dc8981..0000000
--- a/src/raster/rastpic.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  rastpic.c                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for raster module.   */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "rastpic.h"
-#include "rasterrs.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from ftraster.c */
-  void
-  FT_Init_Class_ft_standard_raster( FT_Raster_Funcs*  funcs );
-
-
-  void
-  ft_raster1_renderer_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->raster )
-    {
-      RasterPIC*  container = (RasterPIC*)pic_container->raster;
-
-
-      if ( --container->ref_count )
-        return;
-      FT_FREE( container );
-      pic_container->raster = NULL;
-    }
-  }
-
-
-  FT_Error
-  ft_raster1_renderer_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    RasterPIC*         container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* XXX: since this function also served the no longer available  */
-    /*      raster5 renderer it uses reference counting, which could */
-    /*      be removed now                                           */
-    if ( pic_container->raster )
-    {
-      ((RasterPIC*)pic_container->raster)->ref_count++;
-      return error;
-    }
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->raster = container;
-
-    container->ref_count = 1;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    FT_Init_Class_ft_standard_raster( &container->ft_standard_raster );
-
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/raster/rastpic.h b/src/raster/rastpic.h
deleted file mode 100644
index 6d0877c..0000000
--- a/src/raster/rastpic.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  rastpic.h                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for raster module.   */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef RASTPIC_H_
-#define RASTPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-FT_BEGIN_HEADER
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define FT_STANDARD_RASTER_GET  ft_standard_raster
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-  typedef struct  RasterPIC_
-  {
-    int              ref_count;
-    FT_Raster_Funcs  ft_standard_raster;
-
-  } RasterPIC;
-
-
-#define GET_PIC( lib )                                    \
-          ( (RasterPIC*)( (lib)->pic_container.raster ) )
-#define FT_STANDARD_RASTER_GET  ( GET_PIC( library )->ft_standard_raster )
-
-
-  /* see rastpic.c for the implementation */
-  void
-  ft_raster1_renderer_class_pic_free( FT_Library  library );
-
-  FT_Error
-  ft_raster1_renderer_class_pic_init( FT_Library  library );
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-FT_END_HEADER
-
-#endif /* RASTPIC_H_ */
-
-
-/* END */
diff --git a/src/raster/rules.mk b/src/raster/rules.mk
index 9aef1f0..444d0ad 100644
--- a/src/raster/rules.mk
+++ b/src/raster/rules.mk
@@ -28,8 +28,7 @@
 # raster driver sources (i.e., C files)
 #
 RASTER_DRV_SRC := $(RASTER_DIR)/ftraster.c \
-                  $(RASTER_DIR)/ftrend1.c  \
-                  $(RASTER_DIR)/rastpic.c
+                  $(RASTER_DIR)/ftrend1.c
 
 
 # raster driver headers
diff --git a/src/sfnt/Jamfile b/src/sfnt/Jamfile
index 57977fc..635aa60 100644
--- a/src/sfnt/Jamfile
+++ b/src/sfnt/Jamfile
@@ -22,6 +22,8 @@
                sfobjs
                ttbdf
                ttcmap
+               ttcolr
+               ttcpal
                ttkern
                ttload
                ttmtx
diff --git a/src/sfnt/pngshim.c b/src/sfnt/pngshim.c
index 1602026..0674bda 100644
--- a/src/sfnt/pngshim.c
+++ b/src/sfnt/pngshim.c
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pngshim.c                                                              */
-/*                                                                         */
-/*    PNG Bitmap glyph support.                                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  Google, Inc.                                                           */
-/*  Written by Stuart Gill and Behdad Esfahbod.                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pngshim.c
+ *
+ *   PNG Bitmap glyph support.
+ *
+ * Copyright 2013-2018 by
+ * Google, Inc.
+ * Written by Stuart Gill and Behdad Esfahbod.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
diff --git a/src/sfnt/pngshim.h b/src/sfnt/pngshim.h
index 194238c..049a1ed 100644
--- a/src/sfnt/pngshim.h
+++ b/src/sfnt/pngshim.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pngshim.h                                                              */
-/*                                                                         */
-/*    PNG Bitmap glyph support.                                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  Google, Inc.                                                           */
-/*  Written by Stuart Gill and Behdad Esfahbod.                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pngshim.h
+ *
+ *   PNG Bitmap glyph support.
+ *
+ * Copyright 2013-2018 by
+ * Google, Inc.
+ * Written by Stuart Gill and Behdad Esfahbod.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef PNGSHIM_H_
diff --git a/src/sfnt/rules.mk b/src/sfnt/rules.mk
index 83acc66..ff7d7c7 100644
--- a/src/sfnt/rules.mk
+++ b/src/sfnt/rules.mk
@@ -28,17 +28,18 @@
 
 # SFNT driver sources (i.e., C files)
 #
-SFNT_DRV_SRC := $(SFNT_DIR)/ttload.c   \
-                $(SFNT_DIR)/ttmtx.c    \
-                $(SFNT_DIR)/ttcmap.c   \
-                $(SFNT_DIR)/ttsbit.c   \
-                $(SFNT_DIR)/ttpost.c   \
-                $(SFNT_DIR)/ttkern.c   \
-                $(SFNT_DIR)/ttbdf.c    \
-                $(SFNT_DIR)/sfobjs.c   \
+SFNT_DRV_SRC := $(SFNT_DIR)/pngshim.c  \
                 $(SFNT_DIR)/sfdriver.c \
-                $(SFNT_DIR)/sfntpic.c  \
-                $(SFNT_DIR)/pngshim.c
+                $(SFNT_DIR)/sfobjs.c   \
+                $(SFNT_DIR)/ttbdf.c    \
+                $(SFNT_DIR)/ttcmap.c   \
+                $(SFNT_DIR)/ttcolr.c   \
+                $(SFNT_DIR)/ttcpal.c   \
+                $(SFNT_DIR)/ttkern.c   \
+                $(SFNT_DIR)/ttload.c   \
+                $(SFNT_DIR)/ttmtx.c    \
+                $(SFNT_DIR)/ttpost.c   \
+                $(SFNT_DIR)/ttsbit.c
 
 # SFNT driver headers
 #
diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c
index 303e1ca..ae6d6cd 100644
--- a/src/sfnt/sfdriver.c
+++ b/src/sfnt/sfdriver.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfdriver.c                                                             */
-/*                                                                         */
-/*    High-level SFNT driver interface (body).                             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfdriver.c
+ *
+ *   High-level SFNT driver interface (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -25,7 +25,6 @@
 #include "sfdriver.h"
 #include "ttload.h"
 #include "sfobjs.h"
-#include "sfntpic.h"
 
 #include "sferrors.h"
 
@@ -33,6 +32,11 @@
 #include "ttsbit.h"
 #endif
 
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+#include "ttcolr.h"
+#include "ttcpal.h"
+#endif
+
 #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 #include "ttpost.h"
 #endif
@@ -57,18 +61,18 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_sfdriver
 
 
   /*
-   *  SFNT TABLE SERVICE
+   * SFNT TABLE SERVICE
    *
    */
 
@@ -155,7 +159,7 @@
 #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 
   /*
-   *  GLYPH DICT SERVICE
+   * GLYPH DICT SERVICE
    *
    */
 
@@ -222,7 +226,7 @@
 
 
   /*
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -643,9 +647,9 @@
 
 
   /*
-   *  Find the shortest decimal representation of a 16.16 fixed point
-   *  number.  The function fills `buf' with the result, returning a pointer
-   *  to the position after the representation's last byte.
+   * Find the shortest decimal representation of a 16.16 fixed point
+   * number.  The function fills `buf' with the result, returning a pointer
+   * to the position after the representation's last byte.
    */
 
   static char*
@@ -673,7 +677,7 @@
     if ( fixed < 0 )
     {
       *p++ = '-';
-      fixed = -fixed;
+      fixed = NEG_INT( fixed );
     }
 
     int_part  = ( fixed >> 16 ) & 0xFFFF;
@@ -1073,7 +1077,7 @@
 
 
   /*
-   *  TT CMAP INFO
+   * TT CMAP INFO
    */
   FT_DEFINE_SERVICE_TTCMAPSREC(
     tt_service_get_cmap_info,
@@ -1132,41 +1136,41 @@
 
 
   /*
-   *  SERVICE LIST
+   * SERVICE LIST
    */
 
 #if defined TT_CONFIG_OPTION_POSTSCRIPT_NAMES && defined TT_CONFIG_OPTION_BDF
   FT_DEFINE_SERVICEDESCREC5(
     sfnt_services,
 
-    FT_SERVICE_ID_SFNT_TABLE,           &SFNT_SERVICE_SFNT_TABLE_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &SFNT_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_GLYPH_DICT,           &SFNT_SERVICE_GLYPH_DICT_GET,
-    FT_SERVICE_ID_BDF,                  &SFNT_SERVICE_BDF_GET,
-    FT_SERVICE_ID_TT_CMAP,              &TT_SERVICE_CMAP_INFO_GET )
+    FT_SERVICE_ID_SFNT_TABLE,           &sfnt_service_sfnt_table,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name,
+    FT_SERVICE_ID_GLYPH_DICT,           &sfnt_service_glyph_dict,
+    FT_SERVICE_ID_BDF,                  &sfnt_service_bdf,
+    FT_SERVICE_ID_TT_CMAP,              &tt_service_get_cmap_info )
 #elif defined TT_CONFIG_OPTION_POSTSCRIPT_NAMES
   FT_DEFINE_SERVICEDESCREC4(
     sfnt_services,
 
-    FT_SERVICE_ID_SFNT_TABLE,           &SFNT_SERVICE_SFNT_TABLE_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &SFNT_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_GLYPH_DICT,           &SFNT_SERVICE_GLYPH_DICT_GET,
-    FT_SERVICE_ID_TT_CMAP,              &TT_SERVICE_CMAP_INFO_GET )
+    FT_SERVICE_ID_SFNT_TABLE,           &sfnt_service_sfnt_table,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name,
+    FT_SERVICE_ID_GLYPH_DICT,           &sfnt_service_glyph_dict,
+    FT_SERVICE_ID_TT_CMAP,              &tt_service_get_cmap_info )
 #elif defined TT_CONFIG_OPTION_BDF
   FT_DEFINE_SERVICEDESCREC4(
     sfnt_services,
 
-    FT_SERVICE_ID_SFNT_TABLE,           &SFNT_SERVICE_SFNT_TABLE_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &SFNT_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_BDF,                  &SFNT_SERVICE_BDF_GET,
-    FT_SERVICE_ID_TT_CMAP,              &TT_SERVICE_CMAP_INFO_GET )
+    FT_SERVICE_ID_SFNT_TABLE,           &sfnt_service_sfnt_table,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name,
+    FT_SERVICE_ID_BDF,                  &sfnt_service_bdf,
+    FT_SERVICE_ID_TT_CMAP,              &tt_service_get_cmap_info )
 #else
   FT_DEFINE_SERVICEDESCREC3(
     sfnt_services,
 
-    FT_SERVICE_ID_SFNT_TABLE,           &SFNT_SERVICE_SFNT_TABLE_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &SFNT_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_TT_CMAP,              &TT_SERVICE_CMAP_INFO_GET )
+    FT_SERVICE_ID_SFNT_TABLE,           &sfnt_service_sfnt_table,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name,
+    FT_SERVICE_ID_TT_CMAP,              &tt_service_get_cmap_info )
 #endif
 
 
@@ -1174,21 +1178,9 @@
   sfnt_get_interface( FT_Module    module,
                       const char*  module_interface )
   {
-    /* SFNT_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    FT_Library  library;
-
-
-    if ( !module )
-      return NULL;
-    library = module->library;
-    if ( !library )
-      return NULL;
-#else
     FT_UNUSED( module );
-#endif
 
-    return ft_service_list_lookup( SFNT_SERVICES_GET, module_interface );
+    return ft_service_list_lookup( sfnt_services, module_interface );
   }
 
 
@@ -1198,6 +1190,12 @@
 #define PUT_EMBEDDED_BITMAPS( a )  NULL
 #endif
 
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+#define PUT_COLOR_LAYERS( a )  a
+#else
+#define PUT_COLOR_LAYERS( a )  NULL
+#endif
+
 #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 #define PUT_PS_NAMES( a )  a
 #else
@@ -1256,9 +1254,24 @@
                             /* TT_Free_Table_Func      free_eblc       */
 
     PUT_EMBEDDED_BITMAPS( tt_face_set_sbit_strike     ),
-                            /* TT_Set_SBit_Strike_Func set_sbit_strike */
+                   /* TT_Set_SBit_Strike_Func      set_sbit_strike     */
     PUT_EMBEDDED_BITMAPS( tt_face_load_strike_metrics ),
-                    /* TT_Load_Strike_Metrics_Func load_strike_metrics */
+                   /* TT_Load_Strike_Metrics_Func  load_strike_metrics */
+
+    PUT_COLOR_LAYERS( tt_face_load_cpal ),
+                            /* TT_Load_Table_Func      load_cpal       */
+    PUT_COLOR_LAYERS( tt_face_load_colr ),
+                            /* TT_Load_Table_Func      load_colr       */
+    PUT_COLOR_LAYERS( tt_face_free_cpal ),
+                            /* TT_Free_Table_Func      free_cpal       */
+    PUT_COLOR_LAYERS( tt_face_free_colr ),
+                            /* TT_Free_Table_Func      free_colr       */
+    PUT_COLOR_LAYERS( tt_face_palette_set ),
+                            /* TT_Set_Palette_Func     set_palette     */
+    PUT_COLOR_LAYERS( tt_face_get_colr_layer ),
+                            /* TT_Get_Colr_Layer_Func  get_colr_layer  */
+    PUT_COLOR_LAYERS( tt_face_colr_blend_layer ),
+                            /* TT_Blend_Colr_Func      colr_blend      */
 
     tt_face_get_metrics,    /* TT_Get_Metrics_Func     get_metrics     */
 
@@ -1277,7 +1290,7 @@
     0x10000L,   /* driver version 1.0                     */
     0x20000L,   /* driver requires FreeType 2.0 or higher */
 
-    (const void*)&SFNT_INTERFACE_GET,  /* module specific interface */
+    (const void*)&sfnt_interface,  /* module specific interface */
 
     (FT_Module_Constructor)NULL,               /* module_init   */
     (FT_Module_Destructor) NULL,               /* module_done   */
diff --git a/src/sfnt/sfdriver.h b/src/sfnt/sfdriver.h
index 81c22d2..02d8d3d 100644
--- a/src/sfnt/sfdriver.h
+++ b/src/sfnt/sfdriver.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfdriver.h                                                             */
-/*                                                                         */
-/*    High-level SFNT driver interface (specification).                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfdriver.h
+ *
+ *   High-level SFNT driver interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SFDRIVER_H_
@@ -26,10 +26,8 @@
 
 FT_BEGIN_HEADER
 
-
   FT_DECLARE_MODULE( sfnt_module_class )
 
-
 FT_END_HEADER
 
 #endif /* SFDRIVER_H_ */
diff --git a/src/sfnt/sferrors.h b/src/sfnt/sferrors.h
index 74003d4..6f78063 100644
--- a/src/sfnt/sferrors.h
+++ b/src/sfnt/sferrors.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sferrors.h                                                             */
-/*                                                                         */
-/*    SFNT error codes (specification only).                               */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sferrors.h
+ *
+ *   SFNT error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the SFNT error enumeration constants.     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the SFNT error enumeration constants.
+   *
+   */
 
 #ifndef SFERRORS_H_
 #define SFERRORS_H_
diff --git a/src/sfnt/sfnt.c b/src/sfnt/sfnt.c
index 8b9a6b3..9b4e3c0 100644
--- a/src/sfnt/sfnt.c
+++ b/src/sfnt/sfnt.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfnt.c                                                                 */
-/*                                                                         */
-/*    Single object library component.                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfnt.c
+ *
+ *   Single object library component.
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
@@ -21,10 +21,12 @@
 
 #include "pngshim.c"
 #include "sfdriver.c"
-#include "sfntpic.c"
 #include "sfobjs.c"
 #include "ttbdf.c"
 #include "ttcmap.c"
+#include "ttcolr.c"
+#include "ttcpal.c"
+
 #include "ttkern.c"
 #include "ttload.c"
 #include "ttmtx.c"
diff --git a/src/sfnt/sfntpic.c b/src/sfnt/sfntpic.c
deleted file mode 100644
index db2d816..0000000
--- a/src/sfnt/sfntpic.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfntpic.c                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for sfnt module.     */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "sfntpic.h"
-#include "sferrors.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from sfdriver.c */
-  FT_Error
-  FT_Create_Class_sfnt_services( FT_Library           library,
-                                 FT_ServiceDescRec**  output_class );
-  void
-  FT_Destroy_Class_sfnt_services( FT_Library          library,
-                                  FT_ServiceDescRec*  clazz );
-  void
-  FT_Init_Class_sfnt_service_bdf( FT_Service_BDFRec*  clazz );
-  void
-  FT_Init_Class_sfnt_interface( FT_Library       library,
-                                SFNT_Interface*  clazz );
-  void
-  FT_Init_Class_sfnt_service_glyph_dict(
-    FT_Library                library,
-    FT_Service_GlyphDictRec*  clazz );
-  void
-  FT_Init_Class_sfnt_service_ps_name(
-    FT_Library                 library,
-    FT_Service_PsFontNameRec*  clazz );
-  void
-  FT_Init_Class_tt_service_get_cmap_info(
-    FT_Library              library,
-    FT_Service_TTCMapsRec*  clazz );
-  void
-  FT_Init_Class_sfnt_service_sfnt_table(
-    FT_Service_SFNT_TableRec*  clazz );
-
-
-  /* forward declaration of PIC init functions from ttcmap.c */
-  FT_Error
-  FT_Create_Class_tt_cmap_classes( FT_Library       library,
-                                   TT_CMap_Class**  output_class );
-  void
-  FT_Destroy_Class_tt_cmap_classes( FT_Library      library,
-                                    TT_CMap_Class*  clazz );
-
-
-  void
-  sfnt_module_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->sfnt )
-    {
-      sfntModulePIC*  container = (sfntModulePIC*)pic_container->sfnt;
-
-
-      if ( container->sfnt_services )
-        FT_Destroy_Class_sfnt_services( library,
-                                        container->sfnt_services );
-      container->sfnt_services = NULL;
-
-      if ( container->tt_cmap_classes )
-        FT_Destroy_Class_tt_cmap_classes( library,
-                                          container->tt_cmap_classes );
-      container->tt_cmap_classes = NULL;
-
-      FT_FREE( container );
-      pic_container->sfnt = NULL;
-    }
-  }
-
-
-  FT_Error
-  sfnt_module_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    sfntModulePIC*     container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->sfnt = container;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    error = FT_Create_Class_sfnt_services( library,
-                                           &container->sfnt_services );
-    if ( error )
-      goto Exit;
-
-    error = FT_Create_Class_tt_cmap_classes( library,
-                                             &container->tt_cmap_classes );
-    if ( error )
-      goto Exit;
-
-    FT_Init_Class_sfnt_service_glyph_dict(
-      library, &container->sfnt_service_glyph_dict );
-    FT_Init_Class_sfnt_service_ps_name(
-      library, &container->sfnt_service_ps_name );
-    FT_Init_Class_tt_service_get_cmap_info(
-      library, &container->tt_service_get_cmap_info );
-    FT_Init_Class_sfnt_service_sfnt_table(
-      &container->sfnt_service_sfnt_table );
-#ifdef TT_CONFIG_OPTION_BDF
-    FT_Init_Class_sfnt_service_bdf( &container->sfnt_service_bdf );
-#endif
-    FT_Init_Class_sfnt_interface( library, &container->sfnt_interface );
-
-  Exit:
-    if ( error )
-      sfnt_module_class_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/sfnt/sfntpic.h b/src/sfnt/sfntpic.h
deleted file mode 100644
index 8f43122..0000000
--- a/src/sfnt/sfntpic.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfntpic.h                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for sfnt module.     */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef SFNTPIC_H_
-#define SFNTPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define SFNT_SERVICES_GET            sfnt_services
-#define SFNT_SERVICE_GLYPH_DICT_GET  sfnt_service_glyph_dict
-#define SFNT_SERVICE_PS_NAME_GET     sfnt_service_ps_name
-#define TT_SERVICE_CMAP_INFO_GET     tt_service_get_cmap_info
-#define TT_CMAP_CLASSES_GET          tt_cmap_classes
-#define SFNT_SERVICE_SFNT_TABLE_GET  sfnt_service_sfnt_table
-#define SFNT_SERVICE_BDF_GET         sfnt_service_bdf
-#define SFNT_INTERFACE_GET           sfnt_interface
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-  /* some include files required for members of sfntModulePIC */
-#include FT_SERVICE_GLYPH_DICT_H
-#include FT_SERVICE_POSTSCRIPT_NAME_H
-#include FT_SERVICE_SFNT_H
-#include FT_SERVICE_TT_CMAP_H
-
-#ifdef TT_CONFIG_OPTION_BDF
-#include "ttbdf.h"
-#include FT_SERVICE_BDF_H
-#endif
-
-#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_STREAM_H
-#include FT_INTERNAL_SFNT_H
-#include "ttcmap.h"
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  sfntModulePIC_
-  {
-    FT_ServiceDescRec*        sfnt_services;
-    FT_Service_GlyphDictRec   sfnt_service_glyph_dict;
-    FT_Service_PsFontNameRec  sfnt_service_ps_name;
-    FT_Service_TTCMapsRec     tt_service_get_cmap_info;
-    TT_CMap_Class*            tt_cmap_classes;
-    FT_Service_SFNT_TableRec  sfnt_service_sfnt_table;
-#ifdef TT_CONFIG_OPTION_BDF
-    FT_Service_BDFRec         sfnt_service_bdf;
-#endif
-    SFNT_Interface            sfnt_interface;
-
-  } sfntModulePIC;
-
-
-#define GET_PIC( lib )                                      \
-          ( (sfntModulePIC*)( (lib)->pic_container.sfnt ) )
-
-#define SFNT_SERVICES_GET                       \
-          ( GET_PIC( library )->sfnt_services )
-#define SFNT_SERVICE_GLYPH_DICT_GET                       \
-          ( GET_PIC( library )->sfnt_service_glyph_dict )
-#define SFNT_SERVICE_PS_NAME_GET                       \
-          ( GET_PIC( library )->sfnt_service_ps_name )
-#define TT_SERVICE_CMAP_INFO_GET                           \
-          ( GET_PIC( library )->tt_service_get_cmap_info )
-#define TT_CMAP_CLASSES_GET                       \
-          ( GET_PIC( library )->tt_cmap_classes )
-#define SFNT_SERVICE_SFNT_TABLE_GET                       \
-          ( GET_PIC( library )->sfnt_service_sfnt_table )
-#define SFNT_SERVICE_BDF_GET                       \
-          ( GET_PIC( library )->sfnt_service_bdf )
-#define SFNT_INTERFACE_GET                       \
-          ( GET_PIC( library )->sfnt_interface )
-
-
-  /* see sfntpic.c for the implementation */
-  void
-  sfnt_module_class_pic_free( FT_Library  library );
-
-  FT_Error
-  sfnt_module_class_pic_init( FT_Library  library );
-
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-  /* */
-
-#endif /* SFNTPIC_H_ */
-
-
-/* END */
diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c
index 0c91703..9dfc20e 100644
--- a/src/sfnt/sfobjs.c
+++ b/src/sfnt/sfobjs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfobjs.c                                                               */
-/*                                                                         */
-/*    SFNT object management (base).                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfobjs.c
+ *
+ *   SFNT object management (base).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -41,12 +41,12 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_sfobjs
 
@@ -918,7 +918,9 @@
     /* Stream may have changed in sfnt_open_font. */
     stream = face->root.stream;
 
-    FT_TRACE2(( "sfnt_init_face: %08p, %d\n", face, face_instance_index ));
+    FT_TRACE2(( "sfnt_init_face: %08p (index %d)\n",
+                face,
+                face_instance_index ));
 
     face_index = FT_ABS( face_instance_index ) & 0xFFFF;
 
@@ -1001,15 +1003,15 @@
         face->variation_support |= TT_FACE_FLAG_VAR_FVAR;
 
       /*
-       *  As documented in the OpenType specification, an entry for the
-       *  default instance may be omitted in the named instance table.  In
-       *  particular this means that even if there is no named instance
-       *  table in the font we actually do have a named instance, namely the
-       *  default instance.
+       * As documented in the OpenType specification, an entry for the
+       * default instance may be omitted in the named instance table.  In
+       * particular this means that even if there is no named instance
+       * table in the font we actually do have a named instance, namely the
+       * default instance.
        *
-       *  For consistency, we always want the default instance in our list
-       *  of named instances.  If it is missing, we try to synthesize it
-       *  later on.  Here, we have to adjust `num_instances' accordingly.
+       * For consistency, we always want the default instance in our list
+       * of named instances.  If it is missing, we try to synthesize it
+       * later on.  Here, we have to adjust `num_instances' accordingly.
        */
 
       if ( ( face->variation_support & TT_FACE_FLAG_VAR_FVAR ) &&
@@ -1144,6 +1146,8 @@
     FT_Bool       has_outline;
     FT_Bool       is_apple_sbit;
     FT_Bool       is_apple_sbix;
+    FT_Bool       has_CBLC;
+    FT_Bool       has_CBDT;
     FT_Bool       ignore_typographic_family    = FALSE;
     FT_Bool       ignore_typographic_subfamily = FALSE;
 
@@ -1224,6 +1228,13 @@
         goto Exit;
     }
 
+    has_CBLC = !face->goto_table( face, TTAG_CBLC, stream, 0 );
+    has_CBDT = !face->goto_table( face, TTAG_CBDT, stream, 0 );
+
+    /* Ignore outlines for CBLC/CBDT fonts. */
+    if ( has_CBLC || has_CBDT )
+      has_outline = FALSE;
+
     /* OpenType 1.8.2 introduced limits to this value;    */
     /* however, they make sense for older SFNT fonts also */
     if ( face->header.Units_Per_EM <    16 ||
@@ -1332,6 +1343,13 @@
     if ( sfnt->load_eblc )
       LOAD_( eblc );
 
+    /* colored glyph support */
+    if ( sfnt->load_cpal )
+    {
+      LOAD_( cpal );
+      LOAD_( colr );
+    }
+
     /* consider the pclt, kerning, and gasp tables as optional */
     LOAD_( pclt );
     LOAD_( gasp );
@@ -1380,12 +1398,13 @@
       FT_Long  flags = root->face_flags;
 
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Compute face flags.                                               */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Compute face flags.
+       */
       if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_CBLC ||
-           face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX )
+           face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX ||
+           face->colr                                       )
         flags |= FT_FACE_FLAG_COLOR;      /* color glyphs */
 
       if ( has_outline == TRUE )
@@ -1429,10 +1448,10 @@
 
       root->face_flags = flags;
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Compute style flags.                                              */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Compute style flags.
+       */
 
       flags = 0;
       if ( has_outline == TRUE && face->os2.version != 0xFFFFU )
@@ -1462,14 +1481,14 @@
 
       root->style_flags |= flags;
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Polish the charmaps.                                              */
-      /*                                                                   */
-      /*   Try to set the charmap encoding according to the platform &     */
-      /*   encoding ID of each charmap.  Emulate Unicode charmap if one    */
-      /*   is missing.                                                     */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Polish the charmaps.
+       *
+       *   Try to set the charmap encoding according to the platform &
+       *   encoding ID of each charmap.  Emulate Unicode charmap if one
+       *   is missing.
+       */
 
       tt_face_build_cmaps( face );  /* ignore errors */
 
@@ -1524,9 +1543,9 @@
 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
 
       /*
-       *  Now allocate the root array of FT_Bitmap_Size records and
-       *  populate them.  Unfortunately, it isn't possible to indicate bit
-       *  depths in the FT_Bitmap_Size record.  This is a design error.
+       * Now allocate the root array of FT_Bitmap_Size records and
+       * populate them.  Unfortunately, it isn't possible to indicate bit
+       * depths in the FT_Bitmap_Size record.  This is a design error.
        */
       {
         FT_UInt  count;
@@ -1606,10 +1625,10 @@
         root->face_flags |= FT_FACE_FLAG_SCALABLE;
 
 
-      /*********************************************************************/
-      /*                                                                   */
-      /*  Set up metrics.                                                  */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Set up metrics.
+       */
       if ( FT_IS_SCALABLE( root ) )
       {
         /* XXX What about if outline header is missing */
@@ -1728,6 +1747,13 @@
       /* destroy the embedded bitmaps table if it is loaded */
       if ( sfnt->free_eblc )
         sfnt->free_eblc( face );
+
+      /* destroy color table data if it is loaded */
+      if ( sfnt->free_cpal )
+      {
+        sfnt->free_cpal( face );
+        sfnt->free_colr( face );
+      }
     }
 
 #ifdef TT_CONFIG_OPTION_BDF
@@ -1783,11 +1809,18 @@
     FT_FREE( face->sbit_strike_map );
     face->root.num_fixed_sizes = 0;
 
-#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
     FT_FREE( face->postscript_name );
+
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
     FT_FREE( face->var_postscript_prefix );
 #endif
 
+    /* freeing glyph color palette data */
+    FT_FREE( face->palette_data.palette_name_ids );
+    FT_FREE( face->palette_data.palette_flags );
+    FT_FREE( face->palette_data.palette_entry_name_ids );
+    FT_FREE( face->palette );
+
     face->sfnt = NULL;
   }
 
diff --git a/src/sfnt/sfobjs.h b/src/sfnt/sfobjs.h
index 1b8d1be..d3bbaf1 100644
--- a/src/sfnt/sfobjs.h
+++ b/src/sfnt/sfobjs.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfobjs.h                                                               */
-/*                                                                         */
-/*    SFNT object management (specification).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfobjs.h
+ *
+ *   SFNT object management (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef SFOBJS_H_
diff --git a/src/sfnt/ttbdf.c b/src/sfnt/ttbdf.c
index 534201f..a85a687 100644
--- a/src/sfnt/ttbdf.c
+++ b/src/sfnt/ttbdf.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttbdf.c                                                                */
-/*                                                                         */
-/*    TrueType and OpenType embedded BDF properties (body).                */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttbdf.c
+ *
+ *   TrueType and OpenType embedded BDF properties (body).
+ *
+ * Copyright 2005-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -27,12 +27,12 @@
 
 #ifdef TT_CONFIG_OPTION_BDF
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttbdf
 
@@ -45,7 +45,7 @@
 
     if ( bdf->loaded )
     {
-      FT_Stream  stream = FT_FACE(face)->stream;
+      FT_Stream  stream = FT_FACE( face )->stream;
 
 
       if ( bdf->table )
@@ -111,8 +111,8 @@
         FT_UInt  num_items = FT_PEEK_USHORT( p + 2 );
 
         /*
-         *  We don't need to check the value sets themselves, since this
-         *  is done later.
+         * We don't need to check the value sets themselves, since this
+         * is done later.
          */
         strike += 10 * num_items;
 
@@ -142,7 +142,7 @@
                          BDF_PropertyRec  *aprop )
   {
     TT_BDF     bdf   = &face->bdf;
-    FT_Size    size  = FT_FACE(face)->size;
+    FT_Size    size  = FT_FACE( face )->size;
     FT_Error   error = FT_Err_Ok;
     FT_Byte*   p;
     FT_UInt    count;
diff --git a/src/sfnt/ttbdf.h b/src/sfnt/ttbdf.h
index 809a663..5cee599 100644
--- a/src/sfnt/ttbdf.h
+++ b/src/sfnt/ttbdf.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttbdf.h                                                                */
-/*                                                                         */
-/*    TrueType and OpenType embedded BDF properties (specification).       */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttbdf.h
+ *
+ *   TrueType and OpenType embedded BDF properties (specification).
+ *
+ * Copyright 2005-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTBDF_H_
diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c
index 8cc70f7..a3a8c52 100644
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttcmap.c                                                               */
-/*                                                                         */
-/*    TrueType character mapping table (cmap) support (body).              */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttcmap.c
+ *
+ *   TrueType character mapping table (cmap) support (body).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -27,15 +27,14 @@
 #include "ttload.h"
 #include "ttcmap.h"
 #include "ttpost.h"
-#include "sfntpic.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttcmap
 
@@ -77,19 +76,19 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET         TYPE          DESCRIPTION                */
-  /*                                                                       */
-  /*   format      0              USHORT        must be 0                  */
-  /*   length      2              USHORT        table length in bytes      */
-  /*   language    4              USHORT        Mac language code          */
-  /*   glyph_ids   6              BYTE[256]     array of glyph indices     */
-  /*               262                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET         TYPE          DESCRIPTION
+   *
+   *   format      0              USHORT        must be 0
+   *   length      2              USHORT        table length in bytes
+   *   language    4              USHORT        Mac language code
+   *   glyph_ids   6              BYTE[256]     array of glyph indices
+   *               262
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_0
 
@@ -222,10 +221,10 @@
   /***** The following charmap lookup and iteration functions all      *****/
   /***** assume that the value `charcode' fulfills the following.      *****/
   /*****                                                               *****/
-  /*****   - For one byte characters, `charcode' is simply the         *****/
+  /*****   - For one-byte characters, `charcode' is simply the         *****/
   /*****     character code.                                           *****/
   /*****                                                               *****/
-  /*****   - For two byte characters, `charcode' is the 2-byte         *****/
+  /*****   - For two-byte characters, `charcode' is the 2-byte         *****/
   /*****     character code in big endian format.  More precisely:     *****/
   /*****                                                               *****/
   /*****       (charcode >> 8)    is the first byte value              *****/
@@ -238,57 +237,57 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET         TYPE            DESCRIPTION              */
-  /*                                                                       */
-  /*   format      0              USHORT          must be 2                */
-  /*   length      2              USHORT          table length in bytes    */
-  /*   language    4              USHORT          Mac language code        */
-  /*   keys        6              USHORT[256]     sub-header keys          */
-  /*   subs        518            SUBHEAD[NSUBS]  sub-headers array        */
-  /*   glyph_ids   518+NSUB*8     USHORT[]        glyph ID array           */
-  /*                                                                       */
-  /* The `keys' table is used to map charcode high-bytes to sub-headers.   */
-  /* The value of `NSUBS' is the number of sub-headers defined in the      */
-  /* table and is computed by finding the maximum of the `keys' table.     */
-  /*                                                                       */
-  /* Note that for any n, `keys[n]' is a byte offset within the `subs'     */
-  /* table, i.e., it is the corresponding sub-header index multiplied      */
-  /* by 8.                                                                 */
-  /*                                                                       */
-  /* Each sub-header has the following format.                             */
-  /*                                                                       */
-  /*   NAME        OFFSET      TYPE            DESCRIPTION                 */
-  /*                                                                       */
-  /*   first       0           USHORT          first valid low-byte        */
-  /*   count       2           USHORT          number of valid low-bytes   */
-  /*   delta       4           SHORT           see below                   */
-  /*   offset      6           USHORT          see below                   */
-  /*                                                                       */
-  /* A sub-header defines, for each high-byte, the range of valid          */
-  /* low-bytes within the charmap.  Note that the range defined by `first' */
-  /* and `count' must be completely included in the interval [0..255]      */
-  /* according to the specification.                                       */
-  /*                                                                       */
-  /* If a character code is contained within a given sub-header, then      */
-  /* mapping it to a glyph index is done as follows.                       */
-  /*                                                                       */
-  /* * The value of `offset' is read.  This is a _byte_ distance from the  */
-  /*   location of the `offset' field itself into a slice of the           */
-  /*   `glyph_ids' table.  Let's call it `slice' (it is a USHORT[], too).  */
-  /*                                                                       */
-  /* * The value `slice[char.lo - first]' is read.  If it is 0, there is   */
-  /*   no glyph for the charcode.  Otherwise, the value of `delta' is      */
-  /*   added to it (modulo 65536) to form a new glyph index.               */
-  /*                                                                       */
-  /* It is up to the validation routine to check that all offsets fall     */
-  /* within the glyph IDs table (and not within the `subs' table itself or */
-  /* outside of the CMap).                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET         TYPE            DESCRIPTION
+   *
+   *   format      0              USHORT          must be 2
+   *   length      2              USHORT          table length in bytes
+   *   language    4              USHORT          Mac language code
+   *   keys        6              USHORT[256]     sub-header keys
+   *   subs        518            SUBHEAD[NSUBS]  sub-headers array
+   *   glyph_ids   518+NSUB*8     USHORT[]        glyph ID array
+   *
+   * The `keys' table is used to map charcode high bytes to sub-headers.
+   * The value of `NSUBS' is the number of sub-headers defined in the
+   * table and is computed by finding the maximum of the `keys' table.
+   *
+   * Note that for any `n', `keys[n]' is a byte offset within the `subs'
+   * table, i.e., it is the corresponding sub-header index multiplied
+   * by 8.
+   *
+   * Each sub-header has the following format.
+   *
+   *   NAME        OFFSET      TYPE            DESCRIPTION
+   *
+   *   first       0           USHORT          first valid low-byte
+   *   count       2           USHORT          number of valid low-bytes
+   *   delta       4           SHORT           see below
+   *   offset      6           USHORT          see below
+   *
+   * A sub-header defines, for each high byte, the range of valid
+   * low bytes within the charmap.  Note that the range defined by `first'
+   * and `count' must be completely included in the interval [0..255]
+   * according to the specification.
+   *
+   * If a character code is contained within a given sub-header, then
+   * mapping it to a glyph index is done as follows.
+   *
+   * - The value of `offset' is read.  This is a _byte_ distance from the
+   *   location of the `offset' field itself into a slice of the
+   *   `glyph_ids' table.  Let's call it `slice' (it is a USHORT[], too).
+   *
+   * - The value `slice[char.lo - first]' is read.  If it is 0, there is
+   *   no glyph for the charcode.  Otherwise, the value of `delta' is
+   *   added to it (modulo 65536) to form a new glyph index.
+   *
+   * It is up to the validation routine to check that all offsets fall
+   * within the glyph IDs table (and not within the `subs' table itself or
+   * outside of the CMap).
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_2
 
@@ -360,7 +359,7 @@
       /* check range within 0..255 */
       if ( valid->level >= FT_VALIDATE_PARANOID )
       {
-        if ( first_code >= 256 || first_code + code_count > 256 )
+        if ( first_code >= 256 || code_count > 256 - first_code )
           FT_INVALID_DATA;
       }
 
@@ -412,7 +411,7 @@
     {
       FT_UInt   char_lo = (FT_UInt)( char_code & 0xFF );
       FT_UInt   char_hi = (FT_UInt)( char_code >> 8 );
-      FT_Byte*  p       = table + 6;    /* keys table */
+      FT_Byte*  p       = table + 6;    /* keys table       */
       FT_Byte*  subs    = table + 518;  /* subheaders table */
       FT_Byte*  sub;
 
@@ -425,8 +424,8 @@
         sub = subs;  /* jump to first sub-header */
 
         /* check that the sub-header for this byte is 0, which */
-        /* indicates that it is really a valid one-byte value  */
-        /* Otherwise, return 0                                 */
+        /* indicates that it is really a valid one-byte value; */
+        /* otherwise, return 0                                 */
         /*                                                     */
         p += char_lo * 2;
         if ( TT_PEEK_USHORT( p ) != 0 )
@@ -445,6 +444,7 @@
         if ( sub == subs )
           goto Exit;
       }
+
       result = sub;
     }
 
@@ -517,6 +517,13 @@
         FT_UInt   pos, idx;
 
 
+        if ( char_lo >= start + count && charcode <= 0xFF )
+        {
+          /* this happens only for a malformed cmap */
+          charcode = 0x100;
+          continue;
+        }
+
         if ( offset == 0 )
         {
           if ( charcode == 0x100 )
@@ -549,19 +556,18 @@
             }
           }
         }
+
+        /* if unsuccessful, avoid `charcode' leaving */
+        /* the current 256-character block           */
+        if ( count )
+          charcode--;
       }
 
-      /* If `charcode' is <= 0xFF, retry with `charcode + 1'.  If        */
-      /* `charcode' is 0x100 after the loop, do nothing since we have    */
-      /* just reached the first sub-header for two-byte character codes. */
-      /*                                                                 */
-      /* For all other cases, we jump to the next sub-header and adjust  */
-      /* `charcode' accordingly.                                         */
+      /* If `charcode' is <= 0xFF, retry with `charcode + 1'.      */
+      /* Otherwise jump to the next 256-character block and retry. */
     Next_SubHeader:
       if ( charcode <= 0xFF )
         charcode++;
-      else if ( charcode == 0x100 )
-        ;
       else
         charcode = FT_PAD_FLOOR( charcode, 0x100 ) + 0x100;
     }
@@ -619,68 +625,68 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME          OFFSET         TYPE              DESCRIPTION          */
-  /*                                                                       */
-  /*   format        0              USHORT            must be 4            */
-  /*   length        2              USHORT            table length         */
-  /*                                                  in bytes             */
-  /*   language      4              USHORT            Mac language code    */
-  /*                                                                       */
-  /*   segCountX2    6              USHORT            2*NUM_SEGS           */
-  /*   searchRange   8              USHORT            2*(1 << LOG_SEGS)    */
-  /*   entrySelector 10             USHORT            LOG_SEGS             */
-  /*   rangeShift    12             USHORT            segCountX2 -         */
-  /*                                                    searchRange        */
-  /*                                                                       */
-  /*   endCount      14             USHORT[NUM_SEGS]  end charcode for     */
-  /*                                                  each segment; last   */
-  /*                                                  is 0xFFFF            */
-  /*                                                                       */
-  /*   pad           14+NUM_SEGS*2  USHORT            padding              */
-  /*                                                                       */
-  /*   startCount    16+NUM_SEGS*2  USHORT[NUM_SEGS]  first charcode for   */
-  /*                                                  each segment         */
-  /*                                                                       */
-  /*   idDelta       16+NUM_SEGS*4  SHORT[NUM_SEGS]   delta for each       */
-  /*                                                  segment              */
-  /*   idOffset      16+NUM_SEGS*6  SHORT[NUM_SEGS]   range offset for     */
-  /*                                                  each segment; can be */
-  /*                                                  zero                 */
-  /*                                                                       */
-  /*   glyphIds      16+NUM_SEGS*8  USHORT[]          array of glyph ID    */
-  /*                                                  ranges               */
-  /*                                                                       */
-  /* Character codes are modelled by a series of ordered (increasing)      */
-  /* intervals called segments.  Each segment has start and end codes,     */
-  /* provided by the `startCount' and `endCount' arrays.  Segments must    */
-  /* not overlap, and the last segment should always contain the value     */
-  /* 0xFFFF for `endCount'.                                                */
-  /*                                                                       */
-  /* The fields `searchRange', `entrySelector' and `rangeShift' are better */
-  /* ignored (they are traces of over-engineering in the TrueType          */
-  /* specification).                                                       */
-  /*                                                                       */
-  /* Each segment also has a signed `delta', as well as an optional offset */
-  /* within the `glyphIds' table.                                          */
-  /*                                                                       */
-  /* If a segment's idOffset is 0, the glyph index corresponding to any    */
-  /* charcode within the segment is obtained by adding the value of        */
-  /* `idDelta' directly to the charcode, modulo 65536.                     */
-  /*                                                                       */
-  /* Otherwise, a glyph index is taken from the glyph IDs sub-array for    */
-  /* the segment, and the value of `idDelta' is added to it.               */
-  /*                                                                       */
-  /*                                                                       */
-  /* Finally, note that a lot of fonts contain an invalid last segment,    */
-  /* where `start' and `end' are correctly set to 0xFFFF but both `delta'  */
-  /* and `offset' are incorrect (e.g., `opens___.ttf' which comes with     */
-  /* OpenOffice.org).  We need special code to deal with them correctly.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME          OFFSET         TYPE              DESCRIPTION
+   *
+   *   format        0              USHORT            must be 4
+   *   length        2              USHORT            table length
+   *                                                  in bytes
+   *   language      4              USHORT            Mac language code
+   *
+   *   segCountX2    6              USHORT            2*NUM_SEGS
+   *   searchRange   8              USHORT            2*(1 << LOG_SEGS)
+   *   entrySelector 10             USHORT            LOG_SEGS
+   *   rangeShift    12             USHORT            segCountX2 -
+   *                                                    searchRange
+   *
+   *   endCount      14             USHORT[NUM_SEGS]  end charcode for
+   *                                                  each segment; last
+   *                                                  is 0xFFFF
+   *
+   *   pad           14+NUM_SEGS*2  USHORT            padding
+   *
+   *   startCount    16+NUM_SEGS*2  USHORT[NUM_SEGS]  first charcode for
+   *                                                  each segment
+   *
+   *   idDelta       16+NUM_SEGS*4  SHORT[NUM_SEGS]   delta for each
+   *                                                  segment
+   *   idOffset      16+NUM_SEGS*6  SHORT[NUM_SEGS]   range offset for
+   *                                                  each segment; can be
+   *                                                  zero
+   *
+   *   glyphIds      16+NUM_SEGS*8  USHORT[]          array of glyph ID
+   *                                                  ranges
+   *
+   * Character codes are modelled by a series of ordered (increasing)
+   * intervals called segments.  Each segment has start and end codes,
+   * provided by the `startCount' and `endCount' arrays.  Segments must
+   * not overlap, and the last segment should always contain the value
+   * 0xFFFF for `endCount'.
+   *
+   * The fields `searchRange', `entrySelector' and `rangeShift' are better
+   * ignored (they are traces of over-engineering in the TrueType
+   * specification).
+   *
+   * Each segment also has a signed `delta', as well as an optional offset
+   * within the `glyphIds' table.
+   *
+   * If a segment's idOffset is 0, the glyph index corresponding to any
+   * charcode within the segment is obtained by adding the value of
+   * `idDelta' directly to the charcode, modulo 65536.
+   *
+   * Otherwise, a glyph index is taken from the glyph IDs sub-array for
+   * the segment, and the value of `idDelta' is added to it.
+   *
+   *
+   * Finally, note that a lot of fonts contain an invalid last segment,
+   * where `start' and `end' are correctly set to 0xFFFF but both `delta'
+   * and `offset' are incorrect (e.g., `opens___.ttf' which comes with
+   * OpenOffice.org).  We need special code to deal with them correctly.
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_4
 
@@ -1566,23 +1572,23 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET          TYPE             DESCRIPTION            */
-  /*                                                                       */
-  /*   format       0              USHORT           must be 6              */
-  /*   length       2              USHORT           table length in bytes  */
-  /*   language     4              USHORT           Mac language code      */
-  /*                                                                       */
-  /*   first        6              USHORT           first segment code     */
-  /*   count        8              USHORT           segment size in chars  */
-  /*   glyphIds     10             USHORT[count]    glyph IDs              */
-  /*                                                                       */
-  /* A very simplified segment mapping.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET          TYPE             DESCRIPTION
+   *
+   *   format       0              USHORT           must be 6
+   *   length       2              USHORT           table length in bytes
+   *   language     4              USHORT           Mac language code
+   *
+   *   first        6              USHORT           first segment code
+   *   count        8              USHORT           segment size in chars
+   *   glyphIds     10             USHORT[count]    glyph IDs
+   *
+   * A very simplified segment mapping.
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_6
 
@@ -1761,26 +1767,26 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET         TYPE        DESCRIPTION                  */
-  /*                                                                       */
-  /*   format      0              USHORT      must be 8                    */
-  /*   reserved    2              USHORT      reserved                     */
-  /*   length      4              ULONG       length in bytes              */
-  /*   language    8              ULONG       Mac language code            */
-  /*   is32        12             BYTE[8192]  32-bitness bitmap            */
-  /*   count       8204           ULONG       number of groups             */
-  /*                                                                       */
-  /* This header is followed by `count' groups of the following format:    */
-  /*                                                                       */
-  /*   start       0              ULONG       first charcode               */
-  /*   end         4              ULONG       last charcode                */
-  /*   startId     8              ULONG       start glyph ID for the group */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET         TYPE        DESCRIPTION
+   *
+   *   format      0              USHORT      must be 8
+   *   reserved    2              USHORT      reserved
+   *   length      4              ULONG       length in bytes
+   *   language    8              ULONG       Mac language code
+   *   is32        12             BYTE[8192]  32-bitness bitmap
+   *   count       8204           ULONG       number of groups
+   *
+   * This header is followed by `count' groups of the following format:
+   *
+   *   start       0              ULONG       first charcode
+   *   end         4              ULONG       last charcode
+   *   startId     8              ULONG       start glyph ID for the group
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_8
 
@@ -2030,22 +2036,22 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME      OFFSET  TYPE               DESCRIPTION                    */
-  /*                                                                       */
-  /*   format     0      USHORT             must be 10                     */
-  /*   reserved   2      USHORT             reserved                       */
-  /*   length     4      ULONG              length in bytes                */
-  /*   language   8      ULONG              Mac language code              */
-  /*                                                                       */
-  /*   start     12      ULONG              first char in range            */
-  /*   count     16      ULONG              number of chars in range       */
-  /*   glyphIds  20      USHORT[count]      glyph indices covered          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME      OFFSET  TYPE               DESCRIPTION
+   *
+   *   format     0      USHORT             must be 10
+   *   reserved   2      USHORT             reserved
+   *   length     4      ULONG              length in bytes
+   *   language   8      ULONG              Mac language code
+   *
+   *   start     12      ULONG              first char in range
+   *   count     16      ULONG              number of chars in range
+   *   glyphIds  20      USHORT[count]      glyph indices covered
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_10
 
@@ -2202,26 +2208,26 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET     TYPE       DESCRIPTION                       */
-  /*                                                                       */
-  /*   format      0          USHORT     must be 12                        */
-  /*   reserved    2          USHORT     reserved                          */
-  /*   length      4          ULONG      length in bytes                   */
-  /*   language    8          ULONG      Mac language code                 */
-  /*   count       12         ULONG      number of groups                  */
-  /*               16                                                      */
-  /*                                                                       */
-  /* This header is followed by `count' groups of the following format:    */
-  /*                                                                       */
-  /*   start       0          ULONG      first charcode                    */
-  /*   end         4          ULONG      last charcode                     */
-  /*   startId     8          ULONG      start glyph ID for the group      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET     TYPE       DESCRIPTION
+   *
+   *   format      0          USHORT     must be 12
+   *   reserved    2          USHORT     reserved
+   *   length      4          ULONG      length in bytes
+   *   language    8          ULONG      Mac language code
+   *   count       12         ULONG      number of groups
+   *               16
+   *
+   * This header is followed by `count' groups of the following format:
+   *
+   *   start       0          ULONG      first charcode
+   *   end         4          ULONG      last charcode
+   *   startId     8          ULONG      start glyph ID for the group
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_12
 
@@ -2558,26 +2564,26 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET     TYPE       DESCRIPTION                       */
-  /*                                                                       */
-  /*   format      0          USHORT     must be 13                        */
-  /*   reserved    2          USHORT     reserved                          */
-  /*   length      4          ULONG      length in bytes                   */
-  /*   language    8          ULONG      Mac language code                 */
-  /*   count       12         ULONG      number of groups                  */
-  /*               16                                                      */
-  /*                                                                       */
-  /* This header is followed by `count' groups of the following format:    */
-  /*                                                                       */
-  /*   start       0          ULONG      first charcode                    */
-  /*   end         4          ULONG      last charcode                     */
-  /*   glyphId     8          ULONG      glyph ID for the whole group      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET     TYPE       DESCRIPTION
+   *
+   *   format      0          USHORT     must be 13
+   *   reserved    2          USHORT     reserved
+   *   length      4          ULONG      length in bytes
+   *   language    8          ULONG      Mac language code
+   *   count       12         ULONG      number of groups
+   *               16
+   *
+   * This header is followed by `count' groups of the following format:
+   *
+   *   start       0          ULONG      first charcode
+   *   end         4          ULONG      last charcode
+   *   glyphId     8          ULONG      glyph ID for the whole group
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_13
 
@@ -2884,58 +2890,59 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME         OFFSET  TYPE    DESCRIPTION                            */
-  /*                                                                       */
-  /*   format         0     USHORT  must be 14                             */
-  /*   length         2     ULONG   table length in bytes                  */
-  /*   numSelector    6     ULONG   number of variation sel. records       */
-  /*                                                                       */
-  /* Followed by numSelector records, each of which looks like             */
-  /*                                                                       */
-  /*   varSelector    0     UINT24  Unicode codepoint of sel.              */
-  /*   defaultOff     3     ULONG   offset to a default UVS table          */
-  /*                                describing any variants to be found in */
-  /*                                the normal Unicode subtable.           */
-  /*   nonDefOff      7     ULONG   offset to a non-default UVS table      */
-  /*                                describing any variants not in the     */
-  /*                                standard cmap, with GIDs here          */
-  /* (either offset may be 0 NULL)                                         */
-  /*                                                                       */
-  /* Selectors are sorted by code point.                                   */
-  /*                                                                       */
-  /* A default Unicode Variation Selector (UVS) subtable is just a list of */
-  /* ranges of code points which are to be found in the standard cmap.  No */
-  /* glyph IDs (GIDs) here.                                                */
-  /*                                                                       */
-  /*   numRanges      0     ULONG   number of ranges following             */
-  /*                                                                       */
-  /* A range looks like                                                    */
-  /*                                                                       */
-  /*   uniStart       0     UINT24  code point of the first character in   */
-  /*                                this range                             */
-  /*   additionalCnt  3     UBYTE   count of additional characters in this */
-  /*                                range (zero means a range of a single  */
-  /*                                character)                             */
-  /*                                                                       */
-  /* Ranges are sorted by `uniStart'.                                      */
-  /*                                                                       */
-  /* A non-default Unicode Variation Selector (UVS) subtable is a list of  */
-  /* mappings from codepoint to GID.                                       */
-  /*                                                                       */
-  /*   numMappings    0     ULONG   number of mappings                     */
-  /*                                                                       */
-  /* A range looks like                                                    */
-  /*                                                                       */
-  /*   uniStart       0     UINT24  code point of the first character in   */
-  /*                                this range                             */
-  /*   GID            3     USHORT  and its GID                            */
-  /*                                                                       */
-  /* Ranges are sorted by `uniStart'.                                      */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME         OFFSET  TYPE    DESCRIPTION
+   *
+   *   format         0     USHORT  must be 14
+   *   length         2     ULONG   table length in bytes
+   *   numSelector    6     ULONG   number of variation sel. records
+   *
+   * Followed by numSelector records, each of which looks like
+   *
+   *   varSelector    0     UINT24  Unicode codepoint of sel.
+   *   defaultOff     3     ULONG   offset to a default UVS table
+   *                                describing any variants to be found in
+   *                                the normal Unicode subtable.
+   *   nonDefOff      7     ULONG   offset to a non-default UVS table
+   *                                describing any variants not in the
+   *                                standard cmap, with GIDs here
+   * (either offset may be 0 NULL)
+   *
+   * Selectors are sorted by code point.
+   *
+   * A default Unicode Variation Selector (UVS) subtable is just a list of
+   * ranges of code points which are to be found in the standard cmap.  No
+   * glyph IDs (GIDs) here.
+   *
+   *   numRanges      0     ULONG   number of ranges following
+   *
+   * A range looks like
+   *
+   *   uniStart       0     UINT24  code point of the first character in
+   *                                this range
+   *   additionalCnt  3     UBYTE   count of additional characters in this
+   *                                range (zero means a range of a single
+   *                                character)
+   *
+   * Ranges are sorted by `uniStart'.
+   *
+   * A non-default Unicode Variation Selector (UVS) subtable is a list of
+   * mappings from codepoint to GID.
+   *
+   *   numMappings    0     ULONG   number of mappings
+   *
+   * A range looks like
+   *
+   *   uniStart       0     UINT24  code point of the first character in
+   *                                this range
+   *   GID            3     USHORT  and its GID
+   *
+   * Ranges are sorted by `uniStart'.
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_14
 
@@ -3742,7 +3749,6 @@
 
 #endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
 
-#ifndef FT_CONFIG_OPTION_PIC
 
   static const TT_CMap_Class  tt_cmap_classes[] =
   {
@@ -3751,61 +3757,6 @@
     NULL,
   };
 
-#else /*FT_CONFIG_OPTION_PIC*/
-
-  void
-  FT_Destroy_Class_tt_cmap_classes( FT_Library      library,
-                                    TT_CMap_Class*  clazz )
-  {
-    FT_Memory  memory = library->memory;
-
-
-    if ( clazz )
-      FT_FREE( clazz );
-  }
-
-
-  FT_Error
-  FT_Create_Class_tt_cmap_classes( FT_Library       library,
-                                   TT_CMap_Class**  output_class )
-  {
-    TT_CMap_Class*     clazz  = NULL;
-    TT_CMap_ClassRec*  recs;
-    FT_Error           error;
-    FT_Memory          memory = library->memory;
-
-    int  i = 0;
-
-
-#define TTCMAPCITEM( a ) i++;
-#include "ttcmapc.h"
-
-    /* allocate enough space for both the pointers */
-    /* plus terminator and the class instances     */
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * ( i + 1 ) +
-                          sizeof ( TT_CMap_ClassRec ) * i ) )
-      return error;
-
-    /* the location of the class instances follows the array of pointers */
-    recs = (TT_CMap_ClassRec*)( (char*)clazz +
-                                sizeof ( *clazz ) * ( i + 1 ) );
-    i    = 0;
-
-#undef TTCMAPCITEM
-#define  TTCMAPCITEM( a )             \
-    FT_Init_Class_ ## a( &recs[i] );  \
-    clazz[i] = &recs[i];              \
-    i++;
-#include "ttcmapc.h"
-
-    clazz[i] = NULL;
-
-    *output_class = clazz;
-    return FT_Err_Ok;
-  }
-
-#endif /*FT_CONFIG_OPTION_PIC*/
-
 
   /* parse the `cmap' table and build the corresponding TT_CMap objects */
   /* in the current face                                                */
@@ -3852,7 +3803,7 @@
       {
         FT_Byte* volatile              cmap   = table + offset;
         volatile FT_UInt               format = TT_PEEK_USHORT( cmap );
-        const TT_CMap_Class* volatile  pclazz = TT_CMAP_CLASSES_GET;
+        const TT_CMap_Class* volatile  pclazz = tt_cmap_classes;
         TT_CMap_Class volatile         clazz;
 
 
diff --git a/src/sfnt/ttcmap.h b/src/sfnt/ttcmap.h
index d264d99..14a700d 100644
--- a/src/sfnt/ttcmap.h
+++ b/src/sfnt/ttcmap.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttcmap.h                                                               */
-/*                                                                         */
-/*    TrueType character mapping table (cmap) support (specification).     */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttcmap.h
+ *
+ *   TrueType character mapping table (cmap) support (specification).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTCMAP_H_
@@ -56,8 +56,6 @@
   } TT_CMap_ClassRec;
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_TT_CMAP( class_,             \
                            size_,              \
                            init_,              \
@@ -92,42 +90,6 @@
     get_cmap_info_                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_TT_CMAP( class_,                      \
-                           size_,                       \
-                           init_,                       \
-                           done_,                       \
-                           char_index_,                 \
-                           char_next_,                  \
-                           char_var_index_,             \
-                           char_var_default_,           \
-                           variant_list_,               \
-                           charvariant_list_,           \
-                           variantchar_list_,           \
-                           format_,                     \
-                           validate_,                   \
-                           get_cmap_info_ )             \
-  void                                                  \
-  FT_Init_Class_ ## class_( TT_CMap_ClassRec*  clazz )  \
-  {                                                     \
-    clazz->clazz.size             = size_;              \
-    clazz->clazz.init             = init_;              \
-    clazz->clazz.done             = done_;              \
-    clazz->clazz.char_index       = char_index_;        \
-    clazz->clazz.char_next        = char_next_;         \
-    clazz->clazz.char_var_index   = char_var_index_;    \
-    clazz->clazz.char_var_default = char_var_default_;  \
-    clazz->clazz.variant_list     = variant_list_;      \
-    clazz->clazz.charvariant_list = charvariant_list_;  \
-    clazz->clazz.variantchar_list = variantchar_list_;  \
-    clazz->format                 = format_;            \
-    clazz->validate               = validate_;          \
-    clazz->get_cmap_info          = get_cmap_info_;     \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 
   typedef struct  TT_ValidatorRec_
   {
diff --git a/src/sfnt/ttcmapc.h b/src/sfnt/ttcmapc.h
index 4980e9d..11d3e98 100644
--- a/src/sfnt/ttcmapc.h
+++ b/src/sfnt/ttcmapc.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttcmapc.h                                                              */
-/*                                                                         */
-/*    TT CMAP classes definitions (specification only).                    */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttcmapc.h
+ *
+ *   TT CMAP classes definitions (specification only).
+ *
+ * Copyright 2009-2018 by
+ * Oran Agra and Mickey Gabel.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifdef TT_CONFIG_CMAP_FORMAT_0
diff --git a/src/sfnt/ttcolr.c b/src/sfnt/ttcolr.c
new file mode 100644
index 0000000..a8ff026
--- /dev/null
+++ b/src/sfnt/ttcolr.c
@@ -0,0 +1,451 @@
+/****************************************************************************
+ *
+ * ttcolr.c
+ *
+ *   TrueType and OpenType colored glyph layer support (body).
+ *
+ * Copyright 2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Originally written by Shao Yu Zhang <shaozhang@fb.com>.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
+
+
+  /**************************************************************************
+   *
+   * `COLR' table specification:
+   *
+   *   https://www.microsoft.com/typography/otspec/colr.htm
+   *
+   */
+
+
+#include <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_STREAM_H
+#include FT_TRUETYPE_TAGS_H
+#include FT_COLOR_H
+
+
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+
+#include "ttcolr.h"
+
+
+  /* NOTE: These are the table sizes calculated through the specs. */
+#define BASE_GLYPH_SIZE            6
+#define LAYER_SIZE                 4
+#define COLR_HEADER_SIZE          14
+
+
+  typedef struct BaseGlyphRecord_
+  {
+    FT_UShort  gid;
+    FT_UShort  first_layer_index;
+    FT_UShort  num_layers;
+
+  } BaseGlyphRecord;
+
+
+  typedef struct Colr_
+  {
+    FT_UShort  version;
+    FT_UShort  num_base_glyphs;
+    FT_UShort  num_layers;
+
+    FT_Byte*  base_glyphs;
+    FT_Byte*  layers;
+
+    /* The memory which backs up the `COLR' table. */
+    void*     table;
+    FT_ULong  table_size;
+
+  } Colr;
+
+
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_ttcolr
+
+
+  FT_LOCAL_DEF( FT_Error )
+  tt_face_load_colr( TT_Face    face,
+                     FT_Stream  stream )
+  {
+    FT_Error   error;
+    FT_Memory  memory = face->root.memory;
+
+    FT_Byte*  table = NULL;
+    FT_Byte*  p     = NULL;
+
+    Colr*  colr = NULL;
+
+    FT_ULong  base_glyph_offset, layer_offset;
+    FT_ULong  table_size;
+
+
+    /* `COLR' always needs `CPAL' */
+    if ( !face->cpal )
+      return FT_THROW( Invalid_File_Format );
+
+    error = face->goto_table( face, TTAG_COLR, stream, &table_size );
+    if ( error )
+      goto NoColr;
+
+    if ( table_size < COLR_HEADER_SIZE )
+      goto InvalidTable;
+
+    if ( FT_FRAME_EXTRACT( table_size, table ) )
+      goto NoColr;
+
+    p = table;
+
+    if ( FT_NEW( colr ) )
+      goto NoColr;
+
+    colr->version = FT_NEXT_USHORT( p );
+    if ( colr->version != 0 )
+      goto InvalidTable;
+
+    colr->num_base_glyphs = FT_NEXT_USHORT( p );
+    base_glyph_offset     = FT_NEXT_ULONG( p );
+
+    if ( base_glyph_offset >= table_size )
+      goto InvalidTable;
+    if ( colr->num_base_glyphs * BASE_GLYPH_SIZE >
+           table_size - base_glyph_offset )
+      goto InvalidTable;
+
+    layer_offset     = FT_NEXT_ULONG( p );
+    colr->num_layers = FT_NEXT_USHORT( p );
+
+    if ( layer_offset >= table_size )
+      goto InvalidTable;
+    if ( colr->num_layers * LAYER_SIZE > table_size - layer_offset )
+      goto InvalidTable;
+
+    colr->base_glyphs = (FT_Byte*)( table + base_glyph_offset );
+    colr->layers      = (FT_Byte*)( table + layer_offset      );
+    colr->table       = table;
+    colr->table_size  = table_size;
+
+    face->colr = colr;
+
+    return FT_Err_Ok;
+
+  InvalidTable:
+    error = FT_THROW( Invalid_Table );
+
+  NoColr:
+    FT_FRAME_RELEASE( table );
+    FT_FREE( colr );
+
+    return error;
+  }
+
+
+  FT_LOCAL_DEF( void )
+  tt_face_free_colr( TT_Face  face )
+  {
+    FT_Stream  stream = face->root.stream;
+    FT_Memory  memory = face->root.memory;
+
+    Colr*  colr = (Colr*)face->colr;
+
+
+    if ( colr )
+    {
+      FT_FRAME_RELEASE( colr->table );
+      FT_FREE( colr );
+    }
+  }
+
+
+  static FT_Bool
+  find_base_glyph_record( FT_Byte*          base_glyph_begin,
+                          FT_Int            num_base_glyph,
+                          FT_UInt           glyph_id,
+                          BaseGlyphRecord*  record )
+  {
+    FT_Int  min = 0;
+    FT_Int  max = num_base_glyph - 1;
+
+
+    while ( min <= max )
+    {
+      FT_Int    mid = min + ( max - min ) / 2;
+      FT_Byte*  p   = base_glyph_begin + mid * BASE_GLYPH_SIZE;
+
+      FT_UShort  gid = FT_NEXT_USHORT( p );
+
+
+      if ( gid < glyph_id )
+        min = mid + 1;
+      else if (gid > glyph_id )
+        max = mid - 1;
+      else
+      {
+        record->gid               = gid;
+        record->first_layer_index = FT_NEXT_USHORT( p );
+        record->num_layers        = FT_NEXT_USHORT( p );
+
+        return 1;
+      }
+    }
+
+    return 0;
+  }
+
+
+  FT_LOCAL_DEF( FT_Bool )
+  tt_face_get_colr_layer( TT_Face            face,
+                          FT_UInt            base_glyph,
+                          FT_UInt           *aglyph_index,
+                          FT_UInt           *acolor_index,
+                          FT_LayerIterator*  iterator )
+  {
+    Colr*            colr = (Colr*)face->colr;
+    BaseGlyphRecord  glyph_record;
+
+
+    if ( !colr )
+      return 0;
+
+    if ( !iterator->p )
+    {
+      FT_ULong  offset;
+
+
+      /* first call to function */
+      iterator->layer = 0;
+
+      if ( !find_base_glyph_record( colr->base_glyphs,
+                                    colr->num_base_glyphs,
+                                    base_glyph,
+                                    &glyph_record ) )
+        return 0;
+
+      if ( glyph_record.num_layers )
+        iterator->num_layers = glyph_record.num_layers;
+      else
+        return 0;
+
+      offset = LAYER_SIZE * glyph_record.first_layer_index;
+      if ( offset + LAYER_SIZE * glyph_record.num_layers > colr->table_size )
+        return 0;
+
+      iterator->p = colr->layers + offset;
+    }
+
+    if ( iterator->layer >= iterator->num_layers )
+      return 0;
+
+    *aglyph_index = FT_NEXT_USHORT( iterator->p );
+    *acolor_index = FT_NEXT_USHORT( iterator->p );
+
+    if ( *aglyph_index >= (FT_UInt)( FT_FACE( face )->num_glyphs )   ||
+         ( *acolor_index != 0xFFFF                                 &&
+           *acolor_index >= face->palette_data.num_palette_entries ) )
+      return 0;
+
+    iterator->layer++;
+
+    return 1;
+  }
+
+
+  FT_LOCAL_DEF( FT_Error )
+  tt_face_colr_blend_layer( TT_Face       face,
+                            FT_UInt       color_index,
+                            FT_GlyphSlot  dstSlot,
+                            FT_GlyphSlot  srcSlot )
+  {
+    FT_Error  error;
+
+    FT_UInt  x, y;
+    FT_Byte  b, g, r, alpha;
+
+    FT_ULong  size;
+    FT_Byte*  src;
+    FT_Byte*  dst;
+
+
+    if ( !dstSlot->bitmap.buffer )
+    {
+      /* Initialize destination of color bitmap */
+      /* with the size of first component.      */
+      dstSlot->bitmap_left = srcSlot->bitmap_left;
+      dstSlot->bitmap_top  = srcSlot->bitmap_top;
+
+      dstSlot->bitmap.width      = srcSlot->bitmap.width;
+      dstSlot->bitmap.rows       = srcSlot->bitmap.rows;
+      dstSlot->bitmap.pixel_mode = FT_PIXEL_MODE_BGRA;
+      dstSlot->bitmap.pitch      = (int)dstSlot->bitmap.width * 4;
+      dstSlot->bitmap.num_grays  = 256;
+
+      size = dstSlot->bitmap.rows * (unsigned int)dstSlot->bitmap.pitch;
+
+      error = ft_glyphslot_alloc_bitmap( dstSlot, size );
+      if ( error )
+        return error;
+
+      FT_MEM_ZERO( dstSlot->bitmap.buffer, size );
+    }
+    else
+    {
+      /* Resize destination if needed such that new component fits. */
+      FT_Int  x_min, x_max, y_min, y_max;
+
+
+      x_min = FT_MIN( dstSlot->bitmap_left, srcSlot->bitmap_left );
+      x_max = FT_MAX( dstSlot->bitmap_left + (FT_Int)dstSlot->bitmap.width,
+                      srcSlot->bitmap_left + (FT_Int)srcSlot->bitmap.width );
+
+      y_min = FT_MIN( dstSlot->bitmap_top - (FT_Int)dstSlot->bitmap.rows,
+                      srcSlot->bitmap_top - (FT_Int)srcSlot->bitmap.rows );
+      y_max = FT_MAX( dstSlot->bitmap_top, srcSlot->bitmap_top );
+
+      if ( x_min != dstSlot->bitmap_left                                 ||
+           x_max != dstSlot->bitmap_left + (FT_Int)dstSlot->bitmap.width ||
+           y_min != dstSlot->bitmap_top - (FT_Int)dstSlot->bitmap.rows   ||
+           y_max != dstSlot->bitmap_top                                  )
+      {
+        FT_Memory  memory = face->root.memory;
+
+        FT_UInt  width = (FT_UInt)( x_max - x_min );
+        FT_UInt  rows  = (FT_UInt)( y_max - y_min );
+        FT_UInt  pitch = width * 4;
+
+        FT_Byte*  buf = NULL;
+        FT_Byte*  p;
+        FT_Byte*  q;
+
+
+        size  = rows * pitch;
+        if ( FT_ALLOC( buf, size ) )
+          return error;
+
+        p = dstSlot->bitmap.buffer;
+        q = buf +
+            (int)pitch * ( y_max - dstSlot->bitmap_top ) +
+            4 * ( dstSlot->bitmap_left - x_min );
+
+        for ( y = 0; y < dstSlot->bitmap.rows; y++ )
+        {
+          FT_MEM_COPY( q, p, dstSlot->bitmap.width * 4 );
+
+          p += dstSlot->bitmap.pitch;
+          q += pitch;
+        }
+
+        ft_glyphslot_set_bitmap( dstSlot, buf );
+
+        dstSlot->bitmap_top  = y_max;
+        dstSlot->bitmap_left = x_min;
+
+        dstSlot->bitmap.width = width;
+        dstSlot->bitmap.rows  = rows;
+        dstSlot->bitmap.pitch = (int)pitch;
+
+        dstSlot->internal->flags |= FT_GLYPH_OWN_BITMAP;
+        dstSlot->format           = FT_GLYPH_FORMAT_BITMAP;
+      }
+    }
+
+    if ( color_index == 0xFFFF )
+    {
+      if ( face->have_foreground_color )
+      {
+        b     = face->foreground_color.blue;
+        g     = face->foreground_color.green;
+        r     = face->foreground_color.red;
+        alpha = face->foreground_color.alpha;
+      }
+      else
+      {
+        if ( face->palette_data.palette_flags                          &&
+             ( face->palette_data.palette_flags[face->palette_index] &
+                 FT_PALETTE_FOR_DARK_BACKGROUND                      ) )
+        {
+          /* white opaque */
+          b     = 0xFF;
+          g     = 0xFF;
+          r     = 0xFF;
+          alpha = 0xFF;
+        }
+        else
+        {
+          /* black opaque */
+          b     = 0x00;
+          g     = 0x00;
+          r     = 0x00;
+          alpha = 0xFF;
+        }
+      }
+    }
+    else
+    {
+      b     = face->palette[color_index].blue;
+      g     = face->palette[color_index].green;
+      r     = face->palette[color_index].red;
+      alpha = face->palette[color_index].alpha;
+    }
+
+    /* XXX Convert if srcSlot.bitmap is not grey? */
+    src = srcSlot->bitmap.buffer;
+    dst = dstSlot->bitmap.buffer +
+          dstSlot->bitmap.pitch * ( dstSlot->bitmap_top - srcSlot->bitmap_top ) +
+          4 * ( srcSlot->bitmap_left - dstSlot->bitmap_left );
+
+    for ( y = 0; y < srcSlot->bitmap.rows; y++ )
+    {
+      for ( x = 0; x < srcSlot->bitmap.width; x++ )
+      {
+        int  aa = src[x];
+        int  fa = alpha * aa / 255;
+
+        int  fb = b * fa / 255;
+        int  fg = g * fa / 255;
+        int  fr = r * fa / 255;
+
+        int  ba2 = 255 - fa;
+
+        int  bb = dst[4 * x + 0];
+        int  bg = dst[4 * x + 1];
+        int  br = dst[4 * x + 2];
+        int  ba = dst[4 * x + 3];
+
+
+        dst[4 * x + 0] = (FT_Byte)( bb * ba2 / 255 + fb );
+        dst[4 * x + 1] = (FT_Byte)( bg * ba2 / 255 + fg );
+        dst[4 * x + 2] = (FT_Byte)( br * ba2 / 255 + fr );
+        dst[4 * x + 3] = (FT_Byte)( ba * ba2 / 255 + fa );
+      }
+
+      src += srcSlot->bitmap.pitch;
+      dst += dstSlot->bitmap.pitch;
+    }
+
+    return FT_Err_Ok;
+  }
+
+#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+  /* ANSI C doesn't like empty source files */
+  typedef int  _tt_colr_dummy;
+
+#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+/* EOF */
diff --git a/src/sfnt/ttcolr.h b/src/sfnt/ttcolr.h
new file mode 100644
index 0000000..46cc081
--- /dev/null
+++ b/src/sfnt/ttcolr.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+ *
+ * ttcolr.h
+ *
+ *   TrueType and OpenType colored glyph layer support (specification).
+ *
+ * Copyright 2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Originally written by Shao Yu Zhang <shaozhang@fb.com>.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
+
+
+#ifndef __TTCOLR_H__
+#define __TTCOLR_H__
+
+
+#include <ft2build.h>
+#include "ttload.h"
+
+
+FT_BEGIN_HEADER
+
+
+  FT_LOCAL( FT_Error )
+  tt_face_load_colr( TT_Face    face,
+                     FT_Stream  stream );
+
+  FT_LOCAL( void )
+  tt_face_free_colr( TT_Face  face );
+
+  FT_LOCAL( FT_Bool )
+  tt_face_get_colr_layer( TT_Face            face,
+                          FT_UInt            base_glyph,
+                          FT_UInt           *aglyph_index,
+                          FT_UInt           *acolor_index,
+                          FT_LayerIterator*  iterator );
+
+  FT_LOCAL( FT_Error )
+  tt_face_colr_blend_layer( TT_Face       face,
+                            FT_UInt       color_index,
+                            FT_GlyphSlot  dstSlot,
+                            FT_GlyphSlot  srcSlot );
+
+
+FT_END_HEADER
+
+
+#endif /* __TTCOLR_H__ */
+
+/* END */
diff --git a/src/sfnt/ttcpal.c b/src/sfnt/ttcpal.c
new file mode 100644
index 0000000..b4b60e2
--- /dev/null
+++ b/src/sfnt/ttcpal.c
@@ -0,0 +1,305 @@
+/****************************************************************************
+ *
+ * ttcpal.c
+ *
+ *   TrueType and OpenType color palette support (body).
+ *
+ * Copyright 2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Originally written by Shao Yu Zhang <shaozhang@fb.com>.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
+
+
+  /**************************************************************************
+   *
+   * `CPAL' table specification:
+   *
+   *   https://www.microsoft.com/typography/otspec/cpal.htm
+   *
+   */
+
+
+#include <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_STREAM_H
+#include FT_TRUETYPE_TAGS_H
+#include FT_COLOR_H
+
+
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+
+#include "ttcpal.h"
+
+
+  /* NOTE: These are the table sizes calculated through the specs. */
+#define CPAL_V0_HEADER_BASE_SIZE  12
+#define COLOR_SIZE                 4
+
+
+  /* all data from `CPAL' not covered in FT_Palette_Data */
+  typedef struct Cpal_
+  {
+    FT_UShort  version;        /* Table version number (0 or 1 supported). */
+    FT_UShort  num_colors;               /* Total number of color records, */
+                                         /* combined for all palettes.     */
+    FT_Byte*  colors;                              /* RGBA array of colors */
+    FT_Byte*  color_indices; /* Index of each palette's first color record */
+                             /* in the combined color record array.        */
+
+    /* The memory which backs up the `CPAL' table. */
+    void*     table;
+    FT_ULong  table_size;
+
+  } Cpal;
+
+
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_ttcpal
+
+
+  FT_LOCAL_DEF( FT_Error )
+  tt_face_load_cpal( TT_Face    face,
+                     FT_Stream  stream )
+  {
+    FT_Error   error;
+    FT_Memory  memory = face->root.memory;
+
+    FT_Byte*  table = NULL;
+    FT_Byte*  p     = NULL;
+
+    Cpal*  cpal = NULL;
+
+    FT_ULong  colors_offset;
+    FT_ULong  table_size;
+
+
+    error = face->goto_table( face, TTAG_CPAL, stream, &table_size );
+    if ( error )
+      goto NoCpal;
+
+    if ( table_size < CPAL_V0_HEADER_BASE_SIZE )
+      goto InvalidTable;
+
+    if ( FT_FRAME_EXTRACT( table_size, table ) )
+      goto NoCpal;
+
+    p = table;
+
+    if ( FT_NEW( cpal ) )
+      goto NoCpal;
+
+    cpal->version = FT_NEXT_USHORT( p );
+    if ( cpal->version > 1 )
+      goto InvalidTable;
+
+    face->palette_data.num_palette_entries = FT_NEXT_USHORT( p );
+    face->palette_data.num_palettes        = FT_NEXT_USHORT( p );
+
+    cpal->num_colors = FT_NEXT_USHORT( p );
+    colors_offset    = FT_NEXT_ULONG( p );
+
+    if ( CPAL_V0_HEADER_BASE_SIZE             +
+         face->palette_data.num_palettes * 2U > table_size )
+      goto InvalidTable;
+
+    if ( colors_offset >= table_size )
+      goto InvalidTable;
+    if ( cpal->num_colors * COLOR_SIZE > table_size - colors_offset )
+      goto InvalidTable;
+
+    cpal->color_indices = p;
+    cpal->colors        = (FT_Byte*)( table + colors_offset );
+
+    if ( cpal->version == 1 )
+    {
+      FT_ULong    type_offset, label_offset, entry_label_offset;
+      FT_UShort*  array = NULL;
+      FT_UShort*  limit;
+      FT_UShort*  q;
+
+
+      if ( CPAL_V0_HEADER_BASE_SIZE             +
+           face->palette_data.num_palettes * 2U +
+           3U * 4                               > table_size )
+        goto InvalidTable;
+
+      p += face->palette_data.num_palettes * 2;
+
+      type_offset        = FT_NEXT_ULONG( p );
+      label_offset       = FT_NEXT_ULONG( p );
+      entry_label_offset = FT_NEXT_ULONG( p );
+
+      if ( type_offset )
+      {
+        if ( type_offset >= table_size )
+          goto InvalidTable;
+        if ( face->palette_data.num_palettes * 2 >
+               table_size - type_offset )
+          goto InvalidTable;
+
+        if ( FT_QNEW_ARRAY( array, face->palette_data.num_palettes ) )
+          goto NoCpal;
+
+        p     = table + type_offset;
+        q     = array;
+        limit = q + face->palette_data.num_palettes;
+
+        while ( q < limit )
+          *q++ = FT_NEXT_USHORT( p );
+
+        face->palette_data.palette_flags = array;
+      }
+
+      if ( label_offset )
+      {
+        if ( label_offset >= table_size )
+          goto InvalidTable;
+        if ( face->palette_data.num_palettes * 2 >
+               table_size - label_offset )
+          goto InvalidTable;
+
+        if ( FT_QNEW_ARRAY( array, face->palette_data.num_palettes ) )
+          goto NoCpal;
+
+        p     = table + label_offset;
+        q     = array;
+        limit = q + face->palette_data.num_palettes;
+
+        while ( q < limit )
+          *q++ = FT_NEXT_USHORT( p );
+
+        face->palette_data.palette_name_ids = array;
+      }
+
+      if ( entry_label_offset )
+      {
+        if ( entry_label_offset >= table_size )
+          goto InvalidTable;
+        if ( face->palette_data.num_palette_entries * 2 >
+               table_size - entry_label_offset )
+          goto InvalidTable;
+
+        if ( FT_QNEW_ARRAY( array, face->palette_data.num_palette_entries ) )
+          goto NoCpal;
+
+        p     = table + entry_label_offset;
+        q     = array;
+        limit = q + face->palette_data.num_palette_entries;
+
+        while ( q < limit )
+          *q++ = FT_NEXT_USHORT( p );
+
+        face->palette_data.palette_entry_name_ids = array;
+      }
+    }
+
+    cpal->table      = table;
+    cpal->table_size = table_size;
+
+    face->cpal = cpal;
+
+    /* set up default palette */
+    if ( FT_NEW_ARRAY( face->palette,
+                       face->palette_data.num_palette_entries ) )
+      goto NoCpal;
+
+    tt_face_palette_set( face, 0 );
+
+    return FT_Err_Ok;
+
+  InvalidTable:
+    error = FT_THROW( Invalid_Table );
+
+  NoCpal:
+    FT_FRAME_RELEASE( table );
+    FT_FREE( cpal );
+
+    /* arrays in `face->palette_data' and `face->palette' */
+    /* are freed in `sfnt_done_face'                      */
+
+    return error;
+  }
+
+
+  FT_LOCAL_DEF( void )
+  tt_face_free_cpal( TT_Face  face )
+  {
+    FT_Stream  stream = face->root.stream;
+    FT_Memory  memory = face->root.memory;
+
+    Cpal*  cpal = (Cpal*)face->cpal;
+
+
+    if ( cpal )
+    {
+      FT_FRAME_RELEASE( cpal->table );
+      FT_FREE( cpal );
+    }
+  }
+
+
+  FT_LOCAL_DEF( FT_Error )
+  tt_face_palette_set( TT_Face  face,
+                       FT_UInt  palette_index )
+  {
+    Cpal*  cpal = (Cpal*)face->cpal;
+
+    FT_Byte*   offset;
+    FT_Byte*   p;
+
+    FT_Color*  q;
+    FT_Color*  limit;
+
+    FT_ULong  record_offset;
+
+
+    if ( !cpal || palette_index >= face->palette_data.num_palettes )
+      return FT_THROW( Invalid_Argument );
+
+    offset        = cpal->color_indices + 2 * palette_index;
+    record_offset = COLOR_SIZE * FT_PEEK_USHORT( offset );
+
+    if ( record_offset + COLOR_SIZE * face->palette_data.num_palette_entries >
+           cpal->table_size )
+      return FT_THROW( Invalid_Table );
+
+    p     = cpal->colors + record_offset;
+    q     = face->palette;
+    limit = q + face->palette_data.num_palette_entries;
+
+    while ( q < limit )
+    {
+      q->blue  = FT_NEXT_BYTE( p );
+      q->green = FT_NEXT_BYTE( p );
+      q->red   = FT_NEXT_BYTE( p );
+      q->alpha = FT_NEXT_BYTE( p );
+
+      q++;
+    }
+
+    return FT_Err_Ok;
+  }
+
+
+#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+  /* ANSI C doesn't like empty source files */
+  typedef int  _tt_cpal_dummy;
+
+#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+/* EOF */
diff --git a/src/sfnt/ttcpal.h b/src/sfnt/ttcpal.h
new file mode 100644
index 0000000..424ef35
--- /dev/null
+++ b/src/sfnt/ttcpal.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ *
+ * ttcpal.h
+ *
+ *   TrueType and OpenType color palette support (specification).
+ *
+ * Copyright 2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Originally written by Shao Yu Zhang <shaozhang@fb.com>.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
+
+
+#ifndef __TTCPAL_H__
+#define __TTCPAL_H__
+
+
+#include <ft2build.h>
+#include "ttload.h"
+
+
+FT_BEGIN_HEADER
+
+
+  FT_LOCAL( FT_Error )
+  tt_face_load_cpal( TT_Face    face,
+                     FT_Stream  stream );
+
+  FT_LOCAL( void )
+  tt_face_free_cpal( TT_Face  face );
+
+  FT_LOCAL( FT_Error )
+  tt_face_palette_set( TT_Face  face,
+                       FT_UInt  palette_index );
+
+
+FT_END_HEADER
+
+
+#endif /* __TTCPAL_H__ */
+
+/* END */
diff --git a/src/sfnt/ttkern.c b/src/sfnt/ttkern.c
index 68f15a2..48ad417 100644
--- a/src/sfnt/ttkern.c
+++ b/src/sfnt/ttkern.c
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttkern.c                                                               */
-/*                                                                         */
-/*    Load the basic TrueType kerning table.  This doesn't handle          */
-/*    kerning data within the GPOS table at the moment.                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttkern.c
+ *
+ *   Load the basic TrueType kerning table.  This doesn't handle
+ *   kerning data within the GPOS table at the moment.
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -26,12 +26,12 @@
 #include "sferrors.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttkern
 
@@ -127,8 +127,8 @@
       avail |= mask;
 
       /*
-       *  Now check whether the pairs in this table are ordered.
-       *  We then can use binary search.
+       * Now check whether the pairs in this table are ordered.
+       * We then can use binary search.
        */
       if ( num_pairs > 0 )
       {
@@ -283,8 +283,8 @@
         break;
 
        /*
-        *  We don't support format 2 because we haven't seen a single font
-        *  using it in real life...
+        * We don't support format 2 because we haven't seen a single font
+        * using it in real life...
         */
 
       default:
diff --git a/src/sfnt/ttkern.h b/src/sfnt/ttkern.h
index 4e45d09..c26bb8d 100644
--- a/src/sfnt/ttkern.h
+++ b/src/sfnt/ttkern.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttkern.h                                                               */
-/*                                                                         */
-/*    Load the basic TrueType kerning table.  This doesn't handle          */
-/*    kerning data within the GPOS table at the moment.                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttkern.h
+ *
+ *   Load the basic TrueType kerning table.  This doesn't handle
+ *   kerning data within the GPOS table at the moment.
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTKERN_H_
diff --git a/src/sfnt/ttload.c b/src/sfnt/ttload.c
index a86a546..f3fed8f 100644
--- a/src/sfnt/ttload.c
+++ b/src/sfnt/ttload.c
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttload.c                                                               */
-/*                                                                         */
-/*    Load the basic TrueType tables, i.e., tables that can be either in   */
-/*    TTF or OTF fonts (body).                                             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttload.c
+ *
+ *   Load the basic TrueType tables, i.e., tables that can be either in
+ *   TTF or OTF fonts (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -26,32 +26,34 @@
 #include "sferrors.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttload
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_lookup_table                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Looks for a TrueType table by name.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A face object handle.                                      */
-  /*                                                                       */
-  /*    tag  :: The searched tag.                                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A pointer to the table directory entry.  0 if not found.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_lookup_table
+   *
+   * @Description:
+   *   Looks for a TrueType table by name.
+   *
+   * @Input:
+   *   face ::
+   *     A face object handle.
+   *
+   *   tag ::
+   *     The searched tag.
+   *
+   * @Return:
+   *   A pointer to the table directory entry.  0 if not found.
+   */
   FT_LOCAL_DEF( TT_Table  )
   tt_face_lookup_table( TT_Face   face,
                         FT_ULong  tag  )
@@ -101,27 +103,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_goto_table                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Looks for a TrueType table by name, then seek a stream to it.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A face object handle.                                    */
-  /*                                                                       */
-  /*    tag    :: The searched tag.                                        */
-  /*                                                                       */
-  /*    stream :: The stream to seek when the table is found.              */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    length :: The length of the table if found, undefined otherwise.   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_goto_table
+   *
+   * @Description:
+   *   Looks for a TrueType table by name, then seek a stream to it.
+   *
+   * @Input:
+   *   face ::
+   *     A face object handle.
+   *
+   *   tag ::
+   *     The searched tag.
+   *
+   *   stream ::
+   *     The stream to seek when the table is found.
+   *
+   * @Output:
+   *   length ::
+   *     The length of the table if found, undefined otherwise.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_goto_table( TT_Face    face,
                       FT_ULong   tag,
@@ -309,28 +315,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_font_dir                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the header of a SFNT font file.                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the target face object.                  */
-  /*                                                                       */
-  /*    stream     :: The input stream.                                    */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    sfnt       :: The SFNT header.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The stream cursor must be at the beginning of the font directory.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_font_dir
+   *
+   * @Description:
+   *   Loads the header of a SFNT font file.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @Output:
+   *   sfnt ::
+   *     The SFNT header.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   *
+   * @Note:
+   *   The stream cursor must be at the beginning of the font directory.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_font_dir( TT_Face    face,
                          FT_Stream  stream )
@@ -496,46 +505,51 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_any                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads any font table into client memory.                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: The face object to look for.                             */
-  /*                                                                       */
-  /*    tag    :: The tag of table to load.  Use the value 0 if you want   */
-  /*              to access the whole font file, else set this parameter   */
-  /*              to a valid TrueType table tag that you can forge with    */
-  /*              the MAKE_TT_TAG macro.                                   */
-  /*                                                                       */
-  /*    offset :: The starting offset in the table (or the file if         */
-  /*              tag == 0).                                               */
-  /*                                                                       */
-  /*    length :: The address of the decision variable:                    */
-  /*                                                                       */
-  /*                If length == NULL:                                     */
-  /*                  Loads the whole table.  Returns an error if          */
-  /*                  `offset' == 0!                                       */
-  /*                                                                       */
-  /*                If *length == 0:                                       */
-  /*                  Exits immediately; returning the length of the given */
-  /*                  table or of the font file, depending on the value of */
-  /*                  `tag'.                                               */
-  /*                                                                       */
-  /*                If *length != 0:                                       */
-  /*                  Loads the next `length' bytes of table or font,      */
-  /*                  starting at offset `offset' (in table or font too).  */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    buffer :: The address of target buffer.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_any
+   *
+   * @Description:
+   *   Loads any font table into client memory.
+   *
+   * @Input:
+   *   face ::
+   *     The face object to look for.
+   *
+   *   tag ::
+   *     The tag of table to load.  Use the value 0 if you want
+   *     to access the whole font file, else set this parameter
+   *     to a valid TrueType table tag that you can forge with
+   *     the MAKE_TT_TAG macro.
+   *
+   *   offset ::
+   *     The starting offset in the table (or the file if
+   *     tag == 0).
+   *
+   *   length ::
+   *     The address of the decision variable:
+   *
+   *     If length == NULL:
+   *       Loads the whole table.  Returns an error if
+   *       `offset' == 0!
+   *
+   *     If *length == 0:
+   *       Exits immediately; returning the length of the given
+   *       table or of the font file, depending on the value of
+   *       `tag'.
+   *
+   *     If *length != 0:
+   *       Loads the next `length' bytes of table or font,
+   *       starting at offset `offset' (in table or font too).
+   *
+   * @Output:
+   *   buffer ::
+   *     The address of target buffer.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_any( TT_Face    face,
                     FT_ULong   tag,
@@ -586,22 +600,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_generic_header                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the TrueType table `head' or `bhed'.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: The input stream.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_generic_header
+   *
+   * @Description:
+   *   Loads the TrueType table `head' or `bhed'.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   tt_face_load_generic_header( TT_Face    face,
                                FT_Stream  stream,
@@ -676,22 +692,24 @@
 #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_maxp                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the maximum profile into a face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: The input stream.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_maxp
+   *
+   * @Description:
+   *   Loads the maximum profile into a face object.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_maxp( TT_Face    face,
                      FT_Stream  stream )
@@ -784,22 +802,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_name                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the name records.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: The input stream.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_name
+   *
+   * @Description:
+   *   Loads the name records.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_name( TT_Face    face,
                      FT_Stream  stream )
@@ -981,17 +1001,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_free_name                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Frees the name records.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the target face object.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_free_name
+   *
+   * @Description:
+   *   Frees the name records.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   */
   FT_LOCAL_DEF( void )
   tt_face_free_name( TT_Face  face )
   {
@@ -1030,23 +1051,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_cmap                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the cmap directory in a face object.  The cmaps themselves   */
-  /*    are loaded on demand in the `ttcmap.c' module.                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_cmap
+   *
+   * @Description:
+   *   Loads the cmap directory in a face object.  The cmaps themselves
+   *   are loaded on demand in the `ttcmap.c' module.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
 
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_cmap( TT_Face    face,
@@ -1068,22 +1091,24 @@
 
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_os2                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the OS2 table.                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_os2
+   *
+   * @Description:
+   *   Loads the OS2 table.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_os2( TT_Face    face,
                     FT_Stream  stream )
@@ -1228,22 +1253,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_postscript                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the Postscript table.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_postscript
+   *
+   * @Description:
+   *   Loads the Postscript table.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_post( TT_Face    face,
                      FT_Stream  stream )
@@ -1288,22 +1315,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_pclt                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the PCL 5 Table.                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_pclt
+   *
+   * @Description:
+   *   Loads the PCL 5 Table.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_pclt( TT_Face    face,
                      FT_Stream  stream )
@@ -1349,22 +1378,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_gasp                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the `gasp' table into a face object.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: The input stream.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_gasp
+   *
+   * @Description:
+   *   Loads the `gasp' table into a face object.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_gasp( TT_Face    face,
                      FT_Stream  stream )
diff --git a/src/sfnt/ttload.h b/src/sfnt/ttload.h
index f94be8b..21d9cb6 100644
--- a/src/sfnt/ttload.h
+++ b/src/sfnt/ttload.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttload.h                                                               */
-/*                                                                         */
-/*    Load the basic TrueType tables, i.e., tables that can be either in   */
-/*    TTF or OTF fonts (specification).                                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttload.h
+ *
+ *   Load the basic TrueType tables, i.e., tables that can be either in
+ *   TTF or OTF fonts (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTLOAD_H_
diff --git a/src/sfnt/ttmtx.c b/src/sfnt/ttmtx.c
index 6ddda95..8edf4e6 100644
--- a/src/sfnt/ttmtx.c
+++ b/src/sfnt/ttmtx.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttmtx.c                                                                */
-/*                                                                         */
-/*    Load the metrics tables common to TTF and OTF fonts (body).          */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttmtx.c
+ *
+ *   Load the metrics tables common to TTF and OTF fonts (body).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -38,34 +38,37 @@
   /*            both the horizontal and vertical headers.               */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttmtx
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_hmtx                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the `hmtx' or `vmtx' table into a face object.                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the target face object.                    */
-  /*                                                                       */
-  /*    stream   :: The input stream.                                      */
-  /*                                                                       */
-  /*    vertical :: A boolean flag.  If set, load `vmtx'.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_hmtx
+   *
+   * @Description:
+   *   Load the `hmtx' or `vmtx' table into a face object.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   *   vertical ::
+   *     A boolean flag.  If set, load `vmtx'.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_hmtx( TT_Face    face,
                      FT_Stream  stream,
@@ -102,24 +105,27 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_hhea                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the `hhea' or 'vhea' table into a face object.                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the target face object.                    */
-  /*                                                                       */
-  /*    stream   :: The input stream.                                      */
-  /*                                                                       */
-  /*    vertical :: A boolean flag.  If set, load `vhea'.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_hhea
+   *
+   * @Description:
+   *   Load the `hhea' or 'vhea' table into a face object.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   *   vertical ::
+   *     A boolean flag.  If set, load `vhea'.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_hhea( TT_Face    face,
                      FT_Stream  stream,
@@ -190,30 +196,35 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_get_metrics                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the horizontal or vertical metrics in font units for a      */
-  /*    given glyph.  The values are the left side bearing (top side       */
-  /*    bearing for vertical metrics) and advance width (advance height    */
-  /*    for vertical metrics).                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A pointer to the TrueType face structure.              */
-  /*                                                                       */
-  /*    vertical :: If set to TRUE, get vertical metrics.                  */
-  /*                                                                       */
-  /*    gindex   :: The glyph index.                                       */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    abearing :: The bearing, either left side or top side.             */
-  /*                                                                       */
-  /*    aadvance :: The advance width or advance height, depending on      */
-  /*                the `vertical' flag.                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_get_metrics
+   *
+   * @Description:
+   *   Return the horizontal or vertical metrics in font units for a
+   *   given glyph.  The values are the left side bearing (top side
+   *   bearing for vertical metrics) and advance width (advance height
+   *   for vertical metrics).
+   *
+   * @Input:
+   *   face ::
+   *     A pointer to the TrueType face structure.
+   *
+   *   vertical ::
+   *     If set to TRUE, get vertical metrics.
+   *
+   *   gindex ::
+   *     The glyph index.
+   *
+   * @Output:
+   *   abearing ::
+   *     The bearing, either left side or top side.
+   *
+   *   aadvance ::
+   *     The advance width or advance height, depending on
+   *     the `vertical' flag.
+   */
   FT_LOCAL_DEF( void )
   tt_face_get_metrics( TT_Face     face,
                        FT_Bool     vertical,
diff --git a/src/sfnt/ttmtx.h b/src/sfnt/ttmtx.h
index ab00acd..f360b45 100644
--- a/src/sfnt/ttmtx.h
+++ b/src/sfnt/ttmtx.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttmtx.h                                                                */
-/*                                                                         */
-/*    Load the metrics tables common to TTF and OTF fonts (specification). */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttmtx.h
+ *
+ *   Load the metrics tables common to TTF and OTF fonts (specification).
+ *
+ * Copyright 2006-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTMTX_H_
diff --git a/src/sfnt/ttpost.c b/src/sfnt/ttpost.c
index 6de99ef..7148301 100644
--- a/src/sfnt/ttpost.c
+++ b/src/sfnt/ttpost.c
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpost.c                                                               */
-/*                                                                         */
-/*    PostScript name table processing for TrueType and OpenType fonts     */
-/*    (body).                                                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttpost.c
+ *
+ *   PostScript name table processing for TrueType and OpenType fonts
+ *   (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The post table is not completely loaded by the core engine.  This     */
-  /* file loads the missing PS glyph names and implements an API to access */
-  /* them.                                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * The post table is not completely loaded by the core engine.  This
+   * file loads the missing PS glyph names and implements an API to access
+   * them.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -38,12 +38,12 @@
 #include "sferrors.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttpost
 
@@ -459,28 +459,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_get_ps_name                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the PostScript glyph name of a glyph.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the parent face.                             */
-  /*                                                                       */
-  /*    idx    :: The glyph index.                                         */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    PSname :: The address of a string pointer.  Undefined in case of   */
-  /*              error, otherwise it is a pointer to the glyph name.      */
-  /*                                                                       */
-  /*              You must not modify the returned string!                 */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_get_ps_name
+   *
+   * @Description:
+   *   Get the PostScript glyph name of a glyph.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the parent face.
+   *
+   *   idx ::
+   *     The glyph index.
+   *
+   * @InOut:
+   *   PSname ::
+   *     The address of a string pointer.  Undefined in case of
+   *     error, otherwise it is a pointer to the glyph name.
+   *
+   *     You must not modify the returned string!
+   *
+   * @Output:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_get_ps_name( TT_Face      face,
                        FT_UInt      idx,
diff --git a/src/sfnt/ttpost.h b/src/sfnt/ttpost.h
index 3bec07e..a6f2cf2 100644
--- a/src/sfnt/ttpost.h
+++ b/src/sfnt/ttpost.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpost.h                                                               */
-/*                                                                         */
-/*    PostScript name table processing for TrueType and OpenType fonts     */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttpost.h
+ *
+ *   PostScript name table processing for TrueType and OpenType fonts
+ *   (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTPOST_H_
diff --git a/src/sfnt/ttsbit.c b/src/sfnt/ttsbit.c
index 53e6175..322c000 100644
--- a/src/sfnt/ttsbit.c
+++ b/src/sfnt/ttsbit.c
@@ -1,22 +1,22 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttsbit.c                                                               */
-/*                                                                         */
-/*    TrueType and OpenType embedded bitmap support (body).                */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  Copyright 2013 by Google, Inc.                                         */
-/*  Google Author(s): Behdad Esfahbod.                                     */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttsbit.c
+ *
+ *   TrueType and OpenType embedded bitmap support (body).
+ *
+ * Copyright 2005-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Copyright 2013 by Google, Inc.
+ * Google Author(s): Behdad Esfahbod.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -36,12 +36,12 @@
 #include "pngshim.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttsbit
 
@@ -129,8 +129,8 @@
         }
 
         /*
-         *  Count the number of strikes available in the table.  We are a bit
-         *  paranoid there and don't trust the data.
+         * Count the number of strikes available in the table.  We are a bit
+         * paranoid there and don't trust the data.
          */
         count = (FT_UInt)num_strikes;
         if ( 8 + 48UL * count > table_size )
@@ -182,8 +182,8 @@
                       " expect bad rendering results\n" ));
 
         /*
-         *  Count the number of strikes available in the table.  We are a bit
-         *  paranoid there and don't trust the data.
+         * Count the number of strikes available in the table.  We are a bit
+         * paranoid there and don't trust the data.
          */
         count = (FT_UInt)num_strikes;
         if ( 8 + 4UL * count > table_size )
@@ -1514,7 +1514,7 @@
     FT_FRAME_EXIT();
 
     if ( glyph_start == glyph_end )
-      return FT_THROW( Invalid_Argument );
+      return FT_THROW( Missing_Bitmap );
     if ( glyph_start > glyph_end                     ||
          glyph_end - glyph_start < 8                 ||
          face->ebdt_size - strike_offset < glyph_end )
diff --git a/src/sfnt/ttsbit.h b/src/sfnt/ttsbit.h
index ce2af3c..99bf560 100644
--- a/src/sfnt/ttsbit.h
+++ b/src/sfnt/ttsbit.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttsbit.h                                                               */
-/*                                                                         */
-/*    TrueType and OpenType embedded bitmap support (specification).       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttsbit.h
+ *
+ *   TrueType and OpenType embedded bitmap support (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTSBIT_H_
diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c
index 6ce6f86..8f2a600 100644
--- a/src/smooth/ftgrays.c
+++ b/src/smooth/ftgrays.c
@@ -1,92 +1,92 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgrays.c                                                              */
-/*                                                                         */
-/*    A new `perfect' anti-aliasing renderer (body).                       */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgrays.c
+ *
+ *   A new `perfect' anti-aliasing renderer (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file can be compiled without the rest of the FreeType engine, by */
-  /* defining the STANDALONE_ macro when compiling it.  You also need to   */
-  /* put the files `ftgrays.h' and `ftimage.h' into the current            */
-  /* compilation directory.  Typically, you could do something like        */
-  /*                                                                       */
-  /* - copy `src/smooth/ftgrays.c' (this file) to your current directory   */
-  /*                                                                       */
-  /* - copy `include/freetype/ftimage.h' and `src/smooth/ftgrays.h' to the */
-  /*   same directory                                                      */
-  /*                                                                       */
-  /* - compile `ftgrays' with the STANDALONE_ macro defined, as in         */
-  /*                                                                       */
-  /*     cc -c -DSTANDALONE_ ftgrays.c                                     */
-  /*                                                                       */
-  /* The renderer can be initialized with a call to                        */
-  /* `ft_gray_raster.raster_new'; an anti-aliased bitmap can be generated  */
-  /* with a call to `ft_gray_raster.raster_render'.                        */
-  /*                                                                       */
-  /* See the comments and documentation in the file `ftimage.h' for more   */
-  /* details on how the raster works.                                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file can be compiled without the rest of the FreeType engine, by
+   * defining the STANDALONE_ macro when compiling it.  You also need to
+   * put the files `ftgrays.h' and `ftimage.h' into the current
+   * compilation directory.  Typically, you could do something like
+   *
+   * - copy `src/smooth/ftgrays.c' (this file) to your current directory
+   *
+   * - copy `include/freetype/ftimage.h' and `src/smooth/ftgrays.h' to the
+   *   same directory
+   *
+   * - compile `ftgrays' with the STANDALONE_ macro defined, as in
+   *
+   *     cc -c -DSTANDALONE_ ftgrays.c
+   *
+   * The renderer can be initialized with a call to
+   * `ft_gray_raster.raster_new'; an anti-aliased bitmap can be generated
+   * with a call to `ft_gray_raster.raster_render'.
+   *
+   * See the comments and documentation in the file `ftimage.h' for more
+   * details on how the raster works.
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This is a new anti-aliasing scan-converter for FreeType 2.  The       */
-  /* algorithm used here is _very_ different from the one in the standard  */
-  /* `ftraster' module.  Actually, `ftgrays' computes the _exact_          */
-  /* coverage of the outline on each pixel cell.                           */
-  /*                                                                       */
-  /* It is based on ideas that I initially found in Raph Levien's          */
-  /* excellent LibArt graphics library (see http://www.levien.com/libart   */
-  /* for more information, though the web pages do not tell anything       */
-  /* about the renderer; you'll have to dive into the source code to       */
-  /* understand how it works).                                             */
-  /*                                                                       */
-  /* Note, however, that this is a _very_ different implementation         */
-  /* compared to Raph's.  Coverage information is stored in a very         */
-  /* different way, and I don't use sorted vector paths.  Also, it doesn't */
-  /* use floating point values.                                            */
-  /*                                                                       */
-  /* This renderer has the following advantages:                           */
-  /*                                                                       */
-  /* - It doesn't need an intermediate bitmap.  Instead, one can supply a  */
-  /*   callback function that will be called by the renderer to draw gray  */
-  /*   spans on any target surface.  You can thus do direct composition on */
-  /*   any kind of bitmap, provided that you give the renderer the right   */
-  /*   callback.                                                           */
-  /*                                                                       */
-  /* - A perfect anti-aliaser, i.e., it computes the _exact_ coverage on   */
-  /*   each pixel cell.                                                    */
-  /*                                                                       */
-  /* - It performs a single pass on the outline (the `standard' FT2        */
-  /*   renderer makes two passes).                                         */
-  /*                                                                       */
-  /* - It can easily be modified to render to _any_ number of gray levels  */
-  /*   cheaply.                                                            */
-  /*                                                                       */
-  /* - For small (< 20) pixel sizes, it is faster than the standard        */
-  /*   renderer.                                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This is a new anti-aliasing scan-converter for FreeType 2.  The
+   * algorithm used here is _very_ different from the one in the standard
+   * `ftraster' module.  Actually, `ftgrays' computes the _exact_
+   * coverage of the outline on each pixel cell.
+   *
+   * It is based on ideas that I initially found in Raph Levien's
+   * excellent LibArt graphics library (see http://www.levien.com/libart
+   * for more information, though the web pages do not tell anything
+   * about the renderer; you'll have to dive into the source code to
+   * understand how it works).
+   *
+   * Note, however, that this is a _very_ different implementation
+   * compared to Raph's.  Coverage information is stored in a very
+   * different way, and I don't use sorted vector paths.  Also, it doesn't
+   * use floating point values.
+   *
+   * This renderer has the following advantages:
+   *
+   * - It doesn't need an intermediate bitmap.  Instead, one can supply a
+   *   callback function that will be called by the renderer to draw gray
+   *   spans on any target surface.  You can thus do direct composition on
+   *   any kind of bitmap, provided that you give the renderer the right
+   *   callback.
+   *
+   * - A perfect anti-aliaser, i.e., it computes the _exact_ coverage on
+   *   each pixel cell.
+   *
+   * - It performs a single pass on the outline (the `standard' FT2
+   *   renderer makes two passes).
+   *
+   * - It can easily be modified to render to _any_ number of gray levels
+   *   cheaply.
+   *
+   * - For small (< 20) pixel sizes, it is faster than the standard
+   *   renderer.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_smooth
 
@@ -112,9 +112,9 @@
 
 
   /*
-   *  Approximate sqrt(x*x+y*y) using the `alpha max plus beta min'
-   *  algorithm.  We use alpha = 1, beta = 3/8, giving us results with a
-   *  largest error less than 7% compared to the exact value.
+   * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min'
+   * algorithm.  We use alpha = 1, beta = 3/8, giving us results with a
+   * largest error less than 7% compared to the exact value.
    */
 #define FT_HYPOT( x, y )                 \
           ( x = FT_ABS( x ),             \
@@ -279,8 +279,6 @@
 
 #include "ftsmerrs.h"
 
-#include "ftspic.h"
-
 #define Smooth_Err_Invalid_Mode     Smooth_Err_Cannot_Render_Glyph
 #define Smooth_Err_Memory_Overflow  Smooth_Err_Out_Of_Memory
 #define ErrRaster_Memory_Overflow   Smooth_Err_Out_Of_Memory
@@ -395,16 +393,16 @@
     ( sizeof( long ) * FT_CHAR_BIT - PIXEL_BITS ) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*   TYPE DEFINITIONS                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TYPE DEFINITIONS
+   */
 
   /* don't change the following types to FT_Int or FT_Pos, since we might */
   /* need to define them to "float" or "double" when experimenting with   */
   /* new algorithms                                                       */
 
-  typedef long  TPos;     /* sub-pixel coordinate              */
+  typedef long  TPos;     /* subpixel coordinate               */
   typedef int   TCoord;   /* integer scanline/pixel coordinate */
   typedef int   TArea;    /* cell areas, coordinate products   */
 
@@ -516,10 +514,10 @@
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Record the current cell in the table.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Record the current cell in the table.
+   */
   static void
   gray_record_cell( RAS_ARG )
   {
@@ -561,10 +559,10 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Set the current cell to a new position.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Set the current cell to a new position.
+   */
   static void
   gray_set_cell( RAS_ARG_ TCoord  ex,
                           TCoord  ey )
@@ -598,10 +596,10 @@
 
 #ifndef FT_LONG64
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Render a scanline as one or more cells.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Render a scanline as one or more cells.
+   */
   static void
   gray_render_scanline( RAS_ARG_ TCoord  ey,
                                  TPos    x1,
@@ -696,10 +694,10 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Render a given line as a series of scanlines.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Render a given line as a series of scanlines.
+   */
   static void
   gray_render_line( RAS_ARG_ TPos  to_x,
                              TPos  to_y )
@@ -837,10 +835,10 @@
 
 #else
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Render a straight line across multiple cells in any direction.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Render a straight line across multiple cells in any direction.
+   */
   static void
   gray_render_line( RAS_ARG_ TPos  to_x,
                              TPos  to_y )
@@ -1330,40 +1328,43 @@
 
 #ifdef STANDALONE_
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  The following functions should only compile in stand-alone mode,     */
-  /*  i.e., when building this component without the rest of FreeType.     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * The following functions should only compile in stand-alone mode,
+   * i.e., when building this component without the rest of FreeType.
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Decompose                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Walk over an outline's structure to decompose it into individual   */
-  /*    segments and Bézier arcs.  This function is also able to emit      */
-  /*    `move to' and `close to' operations to indicate the start and end  */
-  /*    of new contours in the outline.                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    outline        :: A pointer to the source target.                  */
-  /*                                                                       */
-  /*    func_interface :: A table of `emitters', i.e., function pointers   */
-  /*                      called during decomposition to indicate path     */
-  /*                      operations.                                      */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    user           :: A typeless pointer which is passed to each       */
-  /*                      emitter during the decomposition.  It can be     */
-  /*                      used to store the state during the               */
-  /*                      decomposition.                                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   FT_Outline_Decompose
+   *
+   * @Description:
+   *   Walk over an outline's structure to decompose it into individual
+   *   segments and Bézier arcs.  This function is also able to emit
+   *   `move to' and `close to' operations to indicate the start and end
+   *   of new contours in the outline.
+   *
+   * @Input:
+   *   outline ::
+   *     A pointer to the source target.
+   *
+   *   func_interface ::
+   *     A table of `emitters', i.e., function pointers
+   *     called during decomposition to indicate path
+   *     operations.
+   *
+   * @InOut:
+   *   user ::
+   *     A typeless pointer which is passed to each
+   *     emitter during the decomposition.  It can be
+   *     used to store the state during the
+   *     decomposition.
+   *
+   * @Return:
+   *   Error code.  0 means success.
+   */
   static int
   FT_Outline_Decompose( const FT_Outline*        outline,
                         const FT_Outline_Funcs*  func_interface,
@@ -1610,81 +1611,6 @@
     return FT_THROW( Invalid_Outline );
   }
 
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Get_CBox                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return an outline's `control box'.  The control box encloses all   */
-  /*    the outline's points, including Bézier control points.  Though it  */
-  /*    coincides with the exact bounding box for most glyphs, it can be   */
-  /*    slightly larger in some situations (like when rotating an outline  */
-  /*    that contains Bézier outside arcs).                                */
-  /*                                                                       */
-  /*    Computing the control box is very fast, while getting the bounding */
-  /*    box can take much more time as it needs to walk over all segments  */
-  /*    and arcs in the outline.  To get the latter, you can use the       */
-  /*    `ftbbox' component, which is dedicated to this single task.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    outline :: A pointer to the source outline descriptor.             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    acbox   :: The outline's control box.                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See @FT_Glyph_Get_CBox for a discussion of tricky fonts.           */
-  /*                                                                       */
-
-  static void
-  FT_Outline_Get_CBox( const FT_Outline*  outline,
-                       FT_BBox           *acbox )
-  {
-    TPos  xMin, yMin, xMax, yMax;
-
-
-    if ( outline && acbox )
-    {
-      if ( outline->n_points == 0 )
-      {
-        xMin = 0;
-        yMin = 0;
-        xMax = 0;
-        yMax = 0;
-      }
-      else
-      {
-        FT_Vector*  vec   = outline->points;
-        FT_Vector*  limit = vec + outline->n_points;
-
-
-        xMin = xMax = vec->x;
-        yMin = yMax = vec->y;
-        vec++;
-
-        for ( ; vec < limit; vec++ )
-        {
-          TPos  x, y;
-
-
-          x = vec->x;
-          if ( x < xMin ) xMin = x;
-          if ( x > xMax ) xMax = x;
-
-          y = vec->y;
-          if ( y < yMin ) yMin = y;
-          if ( y > yMax ) yMax = y;
-        }
-      }
-      acbox->xMin = xMin;
-      acbox->xMax = xMax;
-      acbox->yMin = yMin;
-      acbox->yMax = yMax;
-    }
-  }
-
 #endif /* STANDALONE_ */
 
 
@@ -1702,19 +1628,20 @@
 
 
   static int
-  gray_convert_glyph_inner( RAS_ARG )
+  gray_convert_glyph_inner( RAS_ARG,
+                            int  continued )
   {
-
     volatile int  error = 0;
 
-#ifdef FT_CONFIG_OPTION_PIC
-      FT_Outline_Funcs func_interface;
-      Init_Class_func_interface(&func_interface);
-#endif
 
     if ( ft_setjmp( ras.jump_buffer ) == 0 )
     {
+      if ( continued )
+        FT_Trace_Disable();
       error = FT_Outline_Decompose( &ras.outline, &func_interface, &ras );
+      if ( continued )
+        FT_Trace_Enable();
+
       if ( !ras.invalid )
         gray_record_cell( RAS_VAR );
 
@@ -1741,8 +1668,6 @@
   {
     const TCoord  yMin = ras.min_ey;
     const TCoord  yMax = ras.max_ey;
-    const TCoord  xMin = ras.min_ex;
-    const TCoord  xMax = ras.max_ex;
 
     TCell    buffer[FT_MAX_GRAY_POOL];
     size_t   height = (size_t)( yMax - yMin );
@@ -1751,6 +1676,8 @@
     TCoord   bands[32];  /* enough to accommodate bisections */
     TCoord*  band;
 
+    int  continued = 0;
+
 
     /* set up vertical bands */
     if ( height > n )
@@ -1774,8 +1701,8 @@
       ras.max_ey = FT_MIN( y, yMax );
 
       band    = bands;
-      band[1] = xMin;
-      band[0] = xMax;
+      band[1] = ras.min_ey;
+      band[0] = ras.max_ey;
 
       do
       {
@@ -1787,10 +1714,11 @@
 
         ras.num_cells = 0;
         ras.invalid   = 1;
-        ras.min_ex    = band[1];
-        ras.max_ex    = band[0];
+        ras.min_ey    = band[1];
+        ras.max_ey    = band[0];
 
-        error = gray_convert_glyph_inner( RAS_VAR );
+        error     = gray_convert_glyph_inner( RAS_VAR, continued );
+        continued = 1;
 
         if ( !error )
         {
@@ -1827,7 +1755,7 @@
   {
     const FT_Outline*  outline    = (const FT_Outline*)params->source;
     const FT_Bitmap*   target_map = params->target;
-    FT_BBox            cbox, clip;
+    FT_BBox            clip;
 
 #ifndef FT_STATIC_RASTER
     gray_TWorker  worker[1];
@@ -1890,21 +1818,11 @@
       ras.render_span_data = NULL;
     }
 
-    FT_Outline_Get_CBox( outline, &cbox );
-
-    /* reject too large outline coordinates */
-    if ( cbox.xMin < -0x1000000L || cbox.xMax > 0x1000000L ||
-         cbox.yMin < -0x1000000L || cbox.yMax > 0x1000000L )
-      return FT_THROW( Invalid_Outline );
-
-    /* truncate the bounding box to integer pixels */
-    cbox.xMin = cbox.xMin >> 6;
-    cbox.yMin = cbox.yMin >> 6;
-    cbox.xMax = ( cbox.xMax + 63 ) >> 6;
-    cbox.yMax = ( cbox.yMax + 63 ) >> 6;
-
     /* compute clipping box */
-    if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) )
+    if ( params->flags & FT_RASTER_FLAG_DIRECT &&
+         params->flags & FT_RASTER_FLAG_CLIP   )
+      clip = params->clip_box;
+    else
     {
       /* compute clip box from target pixmap */
       clip.xMin = 0;
@@ -1912,21 +1830,12 @@
       clip.xMax = (FT_Pos)target_map->width;
       clip.yMax = (FT_Pos)target_map->rows;
     }
-    else if ( params->flags & FT_RASTER_FLAG_CLIP )
-      clip = params->clip_box;
-    else
-    {
-      clip.xMin = -32768L;
-      clip.yMin = -32768L;
-      clip.xMax =  32767L;
-      clip.yMax =  32767L;
-    }
 
     /* clip to target bitmap, exit if nothing to do */
-    ras.min_ex = FT_MAX( cbox.xMin, clip.xMin );
-    ras.min_ey = FT_MAX( cbox.yMin, clip.yMin );
-    ras.max_ex = FT_MIN( cbox.xMax, clip.xMax );
-    ras.max_ey = FT_MIN( cbox.yMax, clip.yMax );
+    ras.min_ex = clip.xMin;
+    ras.min_ey = clip.yMin;
+    ras.max_ex = clip.xMax;
+    ras.max_ey = clip.yMax;
 
     if ( ras.max_ex <= ras.min_ex || ras.max_ey <= ras.min_ey )
       return 0;
diff --git a/src/smooth/ftgrays.h b/src/smooth/ftgrays.h
index 9e11ca6..6aa7f35 100644
--- a/src/smooth/ftgrays.h
+++ b/src/smooth/ftgrays.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgrays.h                                                              */
-/*                                                                         */
-/*    FreeType smooth renderer declaration                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgrays.h
+ *
+ *   FreeType smooth renderer declaration
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTGRAYS_H_
@@ -28,19 +28,18 @@
 #include "ftimage.h"
 #else
 #include <ft2build.h>
-#include FT_CONFIG_CONFIG_H /* for FT_CONFIG_OPTION_PIC */
 #include FT_IMAGE_H
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* To make ftgrays.h independent from configuration files we check       */
-  /* whether FT_EXPORT_VAR has been defined already.                       */
-  /*                                                                       */
-  /* On some systems and compilers (Win32 mostly), an extra keyword is     */
-  /* necessary to compile the library as a DLL.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * To make ftgrays.h independent from configuration files we check
+   * whether FT_EXPORT_VAR has been defined already.
+   *
+   * On some systems and compilers (Win32 mostly), an extra keyword is
+   * necessary to compile the library as a DLL.
+   */
 #ifndef FT_EXPORT_VAR
 #define FT_EXPORT_VAR( x )  extern  x
 #endif
diff --git a/src/smooth/ftsmerrs.h b/src/smooth/ftsmerrs.h
index 226dc1b..4c55e32 100644
--- a/src/smooth/ftsmerrs.h
+++ b/src/smooth/ftsmerrs.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsmerrs.h                                                             */
-/*                                                                         */
-/*    smooth renderer error codes (specification only).                    */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsmerrs.h
+ *
+ *   smooth renderer error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the smooth renderer error enumeration     */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the smooth renderer error enumeration
+   * constants.
+   *
+   */
 
 #ifndef FTSMERRS_H_
 #define FTSMERRS_H_
diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c
index ef176bd..c6b7e21 100644
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsmooth.c                                                             */
-/*                                                                         */
-/*    Anti-aliasing renderer interface (body).                             */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsmooth.c
+ *
+ *   Anti-aliasing renderer interface (body).
+ *
+ * Copyright 2000-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -22,7 +22,6 @@
 #include FT_OUTLINE_H
 #include "ftsmooth.h"
 #include "ftgrays.h"
-#include "ftspic.h"
 
 #include "ftsmerrs.h"
 
@@ -31,6 +30,22 @@
   static FT_Error
   ft_smooth_init( FT_Renderer  render )
   {
+
+#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
+    FT_Vector*  sub = render->root.library->lcd_geometry;
+
+
+    /* set up default subpixel geometry for striped RGB panels. */
+    sub[0].x = -21;
+    sub[0].y = 0;
+    sub[1].x = 0;
+    sub[1].y = 0;
+    sub[2].x = 21;
+    sub[2].y = 0;
+
+#endif
+
     render->clazz->raster_class->raster_reset( render->raster, NULL, 0 );
 
     return 0;
@@ -132,6 +147,14 @@
 
     ft_glyphslot_preset_bitmap( slot, mode, origin );
 
+    if ( bitmap->width > 0x7FFF || bitmap->rows > 0x7FFF )
+    {
+      FT_ERROR(( "ft_smooth_render_generic: glyph is too large: %u x %u\n",
+                 bitmap->width, bitmap->rows ));
+      error = FT_THROW( Raster_Overflow );
+      goto Exit;
+    }
+
     /* allocate new one */
     if ( FT_ALLOC_MULT( bitmap->buffer, bitmap->rows, bitmap->pitch ) )
       goto Exit;
@@ -235,33 +258,34 @@
       unsigned int  width  = bitmap->width;
       int           pitch  = bitmap->pitch;
 
+      FT_Vector*  sub = slot->library->lcd_geometry;
 
-      /* Render 3 separate monochrome bitmaps, shifting the outline  */
-      /* by 1/3 pixel.                                               */
+
+      /* Render 3 separate monochrome bitmaps, shifting the outline.  */
       width /= 3;
 
-      bitmap->buffer += width;
-
+      FT_Outline_Translate( outline,           -sub[0].x,           -sub[0].y );
       error = render->raster_render( render->raster, &params );
       if ( error )
         goto Exit;
 
-      FT_Outline_Translate( outline, -21, 0 );
-      x_shift        -= 21;
       bitmap->buffer += width;
-
+      FT_Outline_Translate( outline, sub[0].x - sub[1].x, sub[0].y - sub[1].y );
       error = render->raster_render( render->raster, &params );
+      bitmap->buffer -= width;
       if ( error )
         goto Exit;
 
-      FT_Outline_Translate( outline,  42, 0 );
-      x_shift        += 42;
+      bitmap->buffer += 2 * width;
+      FT_Outline_Translate( outline, sub[1].x - sub[2].x, sub[1].y - sub[2].y );
+      error = render->raster_render( render->raster, &params );
       bitmap->buffer -= 2 * width;
-
-      error = render->raster_render( render->raster, &params );
       if ( error )
         goto Exit;
 
+      x_shift        -= sub[2].x;
+      y_shift        -= sub[2].y;
+
       /* XXX: Rearrange the bytes according to FT_PIXEL_MODE_LCD.    */
       /* XXX: It is more efficient to render every third byte above. */
 
@@ -286,34 +310,37 @@
     {
       int  pitch  = bitmap->pitch;
 
+      FT_Vector*  sub = slot->library->lcd_geometry;
 
-      /* Render 3 separate monochrome bitmaps, shifting the outline  */
-      /* by 1/3 pixel. Triple the pitch to render on each third row. */
+
+      /* Render 3 separate monochrome bitmaps, shifting the outline. */
+      /* Notice that the subpixel geometry vectors are rotated.      */
+      /* Triple the pitch to render on each third row.               */
       bitmap->pitch *= 3;
       bitmap->rows  /= 3;
 
-      bitmap->buffer += pitch;
-
+      FT_Outline_Translate( outline,           -sub[0].y, sub[0].x            );
       error = render->raster_render( render->raster, &params );
       if ( error )
         goto Exit;
 
-      FT_Outline_Translate( outline, 0,  21 );
-      y_shift        += 21;
       bitmap->buffer += pitch;
-
+      FT_Outline_Translate( outline, sub[0].y - sub[1].y, sub[1].x - sub[0].x );
       error = render->raster_render( render->raster, &params );
+      bitmap->buffer -= pitch;
       if ( error )
         goto Exit;
 
-      FT_Outline_Translate( outline, 0, -42 );
-      y_shift        -= 42;
+      bitmap->buffer += 2 * pitch;
+      FT_Outline_Translate( outline, sub[1].y - sub[2].y, sub[2].x - sub[1].x );
+      error = render->raster_render( render->raster, &params );
       bitmap->buffer -= 2 * pitch;
-
-      error = render->raster_render( render->raster, &params );
       if ( error )
         goto Exit;
 
+      x_shift        -= sub[2].y;
+      y_shift        += sub[2].x;
+
       bitmap->pitch /= 3;
       bitmap->rows  *= 3;
     }
@@ -403,7 +430,7 @@
     (FT_Renderer_GetCBoxFunc)  ft_smooth_get_cbox,   /* get_glyph_cbox  */
     (FT_Renderer_SetModeFunc)  ft_smooth_set_mode,   /* set_mode        */
 
-    (FT_Raster_Funcs*)&FT_GRAYS_RASTER_GET           /* raster_class    */
+    (FT_Raster_Funcs*)&ft_grays_raster               /* raster_class    */
   )
 
 
@@ -430,7 +457,7 @@
     (FT_Renderer_GetCBoxFunc)  ft_smooth_get_cbox,    /* get_glyph_cbox  */
     (FT_Renderer_SetModeFunc)  ft_smooth_set_mode,    /* set_mode        */
 
-    (FT_Raster_Funcs*)&FT_GRAYS_RASTER_GET            /* raster_class    */
+    (FT_Raster_Funcs*)&ft_grays_raster                /* raster_class    */
   )
 
 
@@ -457,7 +484,7 @@
     (FT_Renderer_GetCBoxFunc)  ft_smooth_get_cbox,      /* get_glyph_cbox  */
     (FT_Renderer_SetModeFunc)  ft_smooth_set_mode,      /* set_mode        */
 
-    (FT_Raster_Funcs*)&FT_GRAYS_RASTER_GET              /* raster_class    */
+    (FT_Raster_Funcs*)&ft_grays_raster                  /* raster_class    */
   )
 
 
diff --git a/src/smooth/ftsmooth.h b/src/smooth/ftsmooth.h
index c76ffc5..782f11a 100644
--- a/src/smooth/ftsmooth.h
+++ b/src/smooth/ftsmooth.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsmooth.h                                                             */
-/*                                                                         */
-/*    Anti-aliasing renderer interface (specification).                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsmooth.h
+ *
+ *   Anti-aliasing renderer interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef FTSMOOTH_H_
diff --git a/src/smooth/ftspic.c b/src/smooth/ftspic.c
deleted file mode 100644
index 10f04cf..0000000
--- a/src/smooth/ftspic.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftspic.c                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for smooth module.   */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "ftspic.h"
-#include "ftsmerrs.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from ftgrays.c */
-  void
-  FT_Init_Class_ft_grays_raster( FT_Raster_Funcs*  funcs );
-
-
-  void
-  ft_smooth_renderer_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->smooth )
-    {
-      SmoothPIC*  container = (SmoothPIC*)pic_container->smooth;
-
-
-      if ( --container->ref_count )
-        return;
-
-      FT_FREE( container );
-      pic_container->smooth = NULL;
-    }
-  }
-
-
-  FT_Error
-  ft_smooth_renderer_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    SmoothPIC*         container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* since this function also serve smooth_lcd and smooth_lcdv renderers,
-       it implements reference counting */
-    if ( pic_container->smooth )
-    {
-      ((SmoothPIC*)pic_container->smooth)->ref_count++;
-      return error;
-    }
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->smooth = container;
-
-    container->ref_count = 1;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    FT_Init_Class_ft_grays_raster( &container->ft_grays_raster );
-
-    return error;
-  }
-
-
-  /* re-route these init and free functions to the above functions */
-  FT_Error
-  ft_smooth_lcd_renderer_class_pic_init( FT_Library  library )
-  {
-    return ft_smooth_renderer_class_pic_init( library );
-  }
-
-
-  void
-  ft_smooth_lcd_renderer_class_pic_free( FT_Library  library )
-  {
-    ft_smooth_renderer_class_pic_free( library );
-  }
-
-
-  FT_Error
-  ft_smooth_lcdv_renderer_class_pic_init( FT_Library  library )
-  {
-    return ft_smooth_renderer_class_pic_init( library );
-  }
-
-
-  void
-  ft_smooth_lcdv_renderer_class_pic_free( FT_Library  library )
-  {
-    ft_smooth_renderer_class_pic_free( library );
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/smooth/ftspic.h b/src/smooth/ftspic.h
deleted file mode 100644
index 80fb64c..0000000
--- a/src/smooth/ftspic.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftspic.h                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for smooth module.   */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef FTSPIC_H_
-#define FTSPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-FT_BEGIN_HEADER
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define FT_GRAYS_RASTER_GET  ft_grays_raster
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-  typedef struct  SmoothPIC_
-  {
-    int              ref_count;
-    FT_Raster_Funcs  ft_grays_raster;
-
-  } SmoothPIC;
-
-
-#define GET_PIC( lib ) \
-          ( (SmoothPIC*)( (lib)->pic_container.smooth ) )
-#define FT_GRAYS_RASTER_GET  ( GET_PIC( library )->ft_grays_raster )
-
-
-  /* see ftspic.c for the implementation */
-  void
-  ft_smooth_renderer_class_pic_free( FT_Library  library );
-
-  void
-  ft_smooth_lcd_renderer_class_pic_free( FT_Library  library );
-
-  void
-  ft_smooth_lcdv_renderer_class_pic_free( FT_Library  library );
-
-  FT_Error
-  ft_smooth_renderer_class_pic_init( FT_Library  library );
-
-  FT_Error
-  ft_smooth_lcd_renderer_class_pic_init( FT_Library  library );
-
-  FT_Error
-  ft_smooth_lcdv_renderer_class_pic_init( FT_Library  library );
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-FT_END_HEADER
-
-#endif /* FTSPIC_H_ */
-
-
-/* END */
diff --git a/src/smooth/rules.mk b/src/smooth/rules.mk
index f30824a..8f808f8 100644
--- a/src/smooth/rules.mk
+++ b/src/smooth/rules.mk
@@ -29,8 +29,7 @@
 # smooth driver sources (i.e., C files)
 #
 SMOOTH_DRV_SRC := $(SMOOTH_DIR)/ftgrays.c  \
-                  $(SMOOTH_DIR)/ftsmooth.c \
-                  $(SMOOTH_DIR)/ftspic.c
+                  $(SMOOTH_DIR)/ftsmooth.c
 
 
 # smooth driver headers
diff --git a/src/smooth/smooth.c b/src/smooth/smooth.c
index 5249a89..ac414f3 100644
--- a/src/smooth/smooth.c
+++ b/src/smooth/smooth.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  smooth.c                                                               */
-/*                                                                         */
-/*    FreeType anti-aliasing rasterer module component (body only).        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * smooth.c
+ *
+ *   FreeType anti-aliasing rasterer module component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
@@ -21,7 +21,6 @@
 
 #include "ftgrays.c"
 #include "ftsmooth.c"
-#include "ftspic.c"
 
 
 /* END */
diff --git a/src/tools/docmaker/content.py b/src/tools/docmaker/content.py
index c9969db..198780a 100644
--- a/src/tools/docmaker/content.py
+++ b/src/tools/docmaker/content.py
@@ -109,7 +109,7 @@
     def  dump( self, prefix = "", width = 60 ):
         lines = self.dump_lines( 0, width )
         for l in lines:
-            print prefix + l
+            print( prefix + l )
 
     def  dump_lines( self, margin = 0, width = 60 ):
         result = []
@@ -139,7 +139,7 @@
     def  dump( self, prefix = "", width = 60 ):
         lines = self.dump_lines( 0, width )
         for l in lines:
-            print prefix + l
+            print( prefix + l )
 
     def  dump_lines( self, margin = 0, width = 60 ):
         cur    = ""  # current line
@@ -243,13 +243,13 @@
 
     def  dump( self, prefix = "" ):
         if self.field:
-            print prefix + self.field + " ::"
+            print( prefix + self.field + " ::" )
             prefix = prefix + "----"
 
         first = 1
         for p in self.items:
             if not first:
-                print ""
+                print( "" )
             p.dump( prefix )
             first = 0
 
@@ -330,10 +330,10 @@
             return None
 
     def  dump( self, margin ):
-        print " " * margin + "<" + self.tag + ">"
+        print( " " * margin + "<" + self.tag + ">" )
         for f in self.fields:
             f.dump( "  " )
-        print " " * margin + "</" + self.tag + ">"
+        print( " " * margin + "</" + self.tag + ">" )
 
 
 ################################################################
diff --git a/src/tools/docmaker/docbeauty.py b/src/tools/docmaker/docbeauty.py
index 3ddf4a9..0b021fa 100644
--- a/src/tools/docmaker/docbeauty.py
+++ b/src/tools/docmaker/docbeauty.py
@@ -10,9 +10,7 @@
 from content import *
 from utils   import *
 
-import utils
-
-import sys, os, time, string, getopt
+import sys, os, string, getopt
 
 
 content_processor = ContentProcessor()
@@ -40,13 +38,13 @@
 
 
 def  usage():
-    print "\nDocBeauty 0.1 Usage information\n"
-    print "  docbeauty [options] file1 [file2 ...]\n"
-    print "using the following options:\n"
-    print "  -h : print this page"
-    print "  -b : backup original files with the 'orig' extension"
-    print ""
-    print "  --backup : same as -b"
+    print( "\nDocBeauty 0.1 Usage information\n" )
+    print( "  docbeauty [options] file1 [file2 ...]\n" )
+    print( "using the following options:\n" )
+    print( "  -h : print this page" )
+    print( "  -b : backup original files with the 'orig' extension" )
+    print( "" )
+    print( "  --backup : same as -b" )
 
 
 def  main( argv ):
diff --git a/src/tools/docmaker/docmaker.py b/src/tools/docmaker/docmaker.py
index 253a4d3..eb49afb 100644
--- a/src/tools/docmaker/docmaker.py
+++ b/src/tools/docmaker/docmaker.py
@@ -31,21 +31,21 @@
 
 import utils
 
-import sys, os, time, string, glob, getopt
+import sys, glob, getopt
 
 
 def  usage():
-    print "\nDocMaker Usage information\n"
-    print "  docmaker [options] file1 [file2 ...]\n"
-    print "using the following options:\n"
-    print "  -h : print this page"
-    print "  -t : set project title, as in '-t \"My Project\"'"
-    print "  -o : set output directory, as in '-o mydir'"
-    print "  -p : set documentation prefix, as in '-p ft2'"
-    print ""
-    print "  --title  : same as -t, as in '--title=\"My Project\"'"
-    print "  --output : same as -o, as in '--output=mydir'"
-    print "  --prefix : same as -p, as in '--prefix=ft2'"
+    print( "\nDocMaker Usage information\n" )
+    print( "  docmaker [options] file1 [file2 ...]\n" )
+    print( "using the following options:\n" )
+    print( "  -h : print this page" )
+    print( "  -t : set project title, as in '-t \"My Project\"'" )
+    print( "  -o : set output directory, as in '-o mydir'" )
+    print( "  -p : set documentation prefix, as in '-p ft2'" )
+    print( "" )
+    print( "  --title  : same as -t, as in '--title=\"My Project\"'" )
+    print( "  --output : same as -o, as in '--output=mydir'" )
+    print( "  --prefix : same as -p, as in '--prefix=ft2'" )
 
 
 def  main( argv ):
diff --git a/src/tools/docmaker/sources.py b/src/tools/docmaker/sources.py
index 2cd5a33..e3b95e0 100644
--- a/src/tools/docmaker/sources.py
+++ b/src/tools/docmaker/sources.py
@@ -29,7 +29,7 @@
 #
 
 
-import fileinput, re, sys, os, string
+import fileinput, re, string
 
 
 ################################################################
@@ -296,10 +296,10 @@
     # debugging only -- not used in normal operations
     def  dump( self ):
         if self.content:
-            print "{{{content start---"
+            print( "{{{content start---" )
             for l in self.content:
-                print l
-            print "---content end}}}"
+                print( l )
+            print( "---content end}}}" )
             return
 
         fmt = ""
@@ -307,7 +307,7 @@
             fmt = repr( self.format.id ) + " "
 
         for line in self.lines:
-            print line
+            print( line )
 
 
 ################################################################
diff --git a/src/tools/docmaker/tohtml.py b/src/tools/docmaker/tohtml.py
index 7f5ecda..97a5459 100644
--- a/src/tools/docmaker/tohtml.py
+++ b/src/tools/docmaker/tohtml.py
@@ -406,7 +406,7 @@
         return string.join( lines, '\n' )
 
     def  print_html_items( self, items ):
-        print self.make_html_items( items )
+        print( self.make_html_items( items ) )
 
     def  print_html_field( self, field ):
         if field.name:
@@ -414,10 +414,10 @@
                    + field.name
                    + "</b></td><td>" )
 
-        print self.make_html_items( field.items )
+        print( self.make_html_items( field.items ) )
 
         if field.name:
-            print "</td></tr></table>"
+            print( "</td></tr></table>" )
 
     def  html_source_quote( self, line, block_name = None ):
         result = ""
@@ -468,14 +468,14 @@
         return result
 
     def  print_html_field_list( self, fields ):
-        print '<table class="fields">'
+        print( '<table class="fields">' )
         for field in fields:
-            print ( '<tr><td class="val" id="' + field.name + '">'
-                    + field.name
-                    + '</td><td class="desc">' )
+            print( '<tr><td class="val" id="' + field.name + '">'
+                   + field.name
+                   + '</td><td class="desc">' )
             self.print_html_items( field.items )
-            print "</td></tr>"
-        print "</table>"
+            print( "</td></tr>" )
+        print( "</table>" )
 
     def  print_html_markup( self, markup ):
         table_fields = []
@@ -499,7 +499,7 @@
     # formatting the index
     #
     def  index_enter( self ):
-        print self.html_index_header
+        print( self.html_index_header )
         self.index_items = {}
 
     def  index_name_enter( self, name ):
@@ -512,7 +512,7 @@
         count = len( self.block_index )
         rows  = ( count + self.columns - 1 ) // self.columns
 
-        print '<table class="index">'
+        print( '<table class="index">' )
         for r in range( rows ):
             line = "<tr>"
             for c in range( self.columns ):
@@ -531,15 +531,15 @@
                 else:
                     line = line + '<td></td>'
             line = line + "</tr>"
-            print line
+            print( line )
 
-        print "</table>"
+        print( "</table>" )
 
         print( index_footer_start
                + self.file_prefix + "toc.html"
                + index_footer_end )
 
-        print self.html_footer
+        print( self.html_footer )
 
         self.index_items = {}
 
@@ -553,25 +553,25 @@
     # formatting the table of contents
     #
     def  toc_enter( self ):
-        print self.html_toc_header
-        print "<h1>Table of Contents</h1>"
+        print( self.html_toc_header )
+        print( "<h1>Table of Contents</h1>" )
 
     def  toc_chapter_enter( self, chapter ):
-        print chapter_header + string.join( chapter.title ) + chapter_inter
-        print '<table class="toc">'
+        print( chapter_header + string.join( chapter.title ) + chapter_inter )
+        print( '<table class="toc">' )
 
     def  toc_section_enter( self, section ):
-        print ( '<tr><td class="link">'
-                + '<a href="' + self.make_section_url( section ) + '">'
-                + section.title + '</a></td><td class="desc">' )
-        print self.make_html_para( section.abstract )
+        print( '<tr><td class="link">'
+               + '<a href="' + self.make_section_url( section ) + '">'
+               + section.title + '</a></td><td class="desc">' )
+        print( self.make_html_para( section.abstract ) )
 
     def  toc_section_exit( self, section ):
-        print "</td></tr>"
+        print( "</td></tr>" )
 
     def  toc_chapter_exit( self, chapter ):
-        print "</table>"
-        print chapter_footer
+        print( "</table>" )
+        print( chapter_footer )
 
     def  toc_index( self, index_filename ):
         print( chapter_header
@@ -583,7 +583,7 @@
                + self.file_prefix + "index.html"
                + toc_footer_end )
 
-        print self.html_footer
+        print( self.html_footer )
 
     def  toc_dump( self, toc_filename = None, index_filename = None ):
         if toc_filename == None:
@@ -598,11 +598,11 @@
     # formatting sections
     #
     def  section_enter( self, section ):
-        print self.html_header
+        print( self.html_header )
 
-        print ( section_title_header1 + section.name + section_title_header2
-                + section.title
-                + section_title_footer )
+        print( section_title_header1 + section.name + section_title_header2
+               + section.title
+               + section_title_footer )
 
         maxwidth = 0
         for b in section.blocks.values():
@@ -612,8 +612,8 @@
         width = 70  # XXX magic number
         if maxwidth > 0:
             # print section synopsis
-            print section_synopsis_header
-            print '<table class="synopsis">'
+            print( section_synopsis_header )
+            print( '<table class="synopsis">' )
 
             columns = width // maxwidth
             if columns < 1:
@@ -650,17 +650,17 @@
 
                     line = line + '</td>'
                 line = line + "</tr>"
-                print line
+                print( line )
 
-            print "</table>"
-            print section_synopsis_footer
+            print( "</table>" )
+            print( section_synopsis_footer )
 
-        print description_header
-        print self.make_html_items( section.description )
-        print description_footer
+        print( description_header )
+        print( self.make_html_items( section.description ) )
+        print( description_footer )
 
     def  block_enter( self, block ):
-        print block_header
+        print( block_header )
 
         # place html anchor if needed
         if block.name:
@@ -676,7 +676,8 @@
         if block.code:
             header = ''
             for f in self.headers.keys():
-                if block.source.filename.find( f ) >= 0:
+                header_filename = os.path.normpath(block.source.filename)
+                if header_filename.find( os.path.normpath( f ) ) >= 0:
                     header = self.headers[f] + ' (' + f + ')'
                     break
 
@@ -686,28 +687,28 @@
 #                 + " '" + block.source.filename + "'.\n" )
 
             if header:
-                print ( header_location_header
-                        + 'Defined in ' + header + '.'
-                        + header_location_footer )
+                print( header_location_header
+                       + 'Defined in ' + header + '.'
+                       + header_location_footer )
 
-            print source_header
+            print( source_header )
             for l in block.code:
-                print self.html_source_quote( l, block.name )
-            print source_footer
+                print( self.html_source_quote( l, block.name ) )
+            print( source_footer )
 
     def  markup_enter( self, markup, block ):
         if markup.tag == "description":
-            print description_header
+            print( description_header )
         else:
-            print marker_header + markup.tag + marker_inter
+            print( marker_header + markup.tag + marker_inter )
 
         self.print_html_markup( markup )
 
     def  markup_exit( self, markup, block ):
         if markup.tag == "description":
-            print description_footer
+            print( description_footer )
         else:
-            print marker_footer
+            print( marker_footer )
 
     def  block_exit( self, block ):
         print( block_footer_start + self.file_prefix + "index.html"
@@ -715,7 +716,7 @@
                + block_footer_end )
 
     def  section_exit( self, section ):
-        print html_footer
+        print( html_footer )
 
     def  section_dump_all( self ):
         for section in self.sections:
diff --git a/src/tools/ftfuzzer/README b/src/tools/ftfuzzer/README
deleted file mode 100644
index 09d8e9f..0000000
--- a/src/tools/ftfuzzer/README
+++ /dev/null
@@ -1,81 +0,0 @@
-ftfuzzer
-========
-
-
-ftfuzzer.cc
------------
-
-This file contains a target function  for FreeType fuzzing.  It can be
-used   with    libFuzzer   (https://llvm.org/docs/LibFuzzer.html)   or
-potentially any other similar fuzzer.
-
-Usage:
-
-  1. Build  `libfreetype.a' and  `ftfuzzer.cc' using  the most  recent
-     clang compiler with these flags:
-
-       # for fuzzer coverage feedback
-       -fsanitize-coverage=edge,8bit-counters
-       # for bug checking
-       -fsanitize=address,signed-integer-overflow,shift
-
-     You  also need  the header  files from  the `libarchive'  library
-     (https://www.libarchive.org/)  for handling  tar files  (see file
-     `ftmutator.cc' below for more).
-
-  2. Link with `libFuzzer' (it contains `main') and `libarchive'.
-
-  3. Run the fuzzer on some test corpus.
-
-The exact flags and commands may vary.
-
-  https://github.com/google/oss-fuzz/tree/master/projects/freetype2
-
-There is a continuous fuzzing bot that runs ftfuzzer.
-
-  https://oss-fuzz.com
-
-(You need an account  to be able to see coverage  reports and the like
-on oss-fuzz.com.)
-
-Check the bot configuration for the most current settings.
-
-
-ftmutator.cc
-------------
-
-FreeType has the  ability to `attach' auxiliary files to  a font file,
-providing additional information.  The main usage is to load AFM files
-for PostScript Type 1 fonts.
-
-However, libFuzzer currently only supports  mutation of a single input
-file.   For  this  reason,  `ftmutator.cc' contains  a  custom  fuzzer
-mutator that uses an uncompressed tar  file archive as the input.  The
-first file in  such a tarball gets  opened by FreeType as  a font, all
-other files are treated as input for `FT_Attach_Stream'.
-
-Compilation is similar to `ftfuzzer.c'.
-
-
-runinput.cc
------------
-
-To run the target function on a set of input files, this file contains
-a   convenience  `main'   function.   Link   it  with   `ftfuzzer.cc',
-`libfreetype.a', and `libarchive' and run like
-
-  ./a.out my_tests_inputs/*
-
-----------------------------------------------------------------------
-
-Copyright 2015-2018 by
-David Turner, Robert Wilhelm, and Werner Lemberg.
-
-This  file is  part of  the FreeType  project, and  may only  be used,
-modified,  and distributed  under the  terms of  the  FreeType project
-license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
-this file you  indicate that you have read  the license and understand
-and accept it fully.
-
-
---- end of README ---
diff --git a/src/tools/ftfuzzer/ftfuzzer.cc b/src/tools/ftfuzzer/ftfuzzer.cc
deleted file mode 100644
index acf2bc9..0000000
--- a/src/tools/ftfuzzer/ftfuzzer.cc
+++ /dev/null
@@ -1,428 +0,0 @@
-// ftfuzzer.cc
-//
-//   A fuzzing function to test FreeType with libFuzzer.
-//
-// Copyright 2015-2018 by
-// David Turner, Robert Wilhelm, and Werner Lemberg.
-//
-// This file is part of the FreeType project, and may only be used,
-// modified, and distributed under the terms of the FreeType project
-// license, LICENSE.TXT.  By continuing to use, modify, or distribute
-// this file you indicate that you have read the license and
-// understand and accept it fully.
-
-
-// we use `unique_ptr', `decltype', and other gimmicks defined since C++11
-#if __cplusplus < 201103L
-#  error "a C++11 compiler is needed"
-#endif
-
-#include <archive.h>
-#include <archive_entry.h>
-
-#include <assert.h>
-#include <stdint.h>
-
-#include <memory>
-#include <vector>
-
-
-  using namespace std;
-
-
-#include <ft2build.h>
-
-#include FT_FREETYPE_H
-#include FT_GLYPH_H
-#include FT_CACHE_H
-#include FT_CACHE_CHARMAP_H
-#include FT_CACHE_IMAGE_H
-#include FT_CACHE_SMALL_BITMAPS_H
-#include FT_SYNTHESIS_H
-#include FT_ADVANCES_H
-#include FT_OUTLINE_H
-#include FT_BBOX_H
-#include FT_MODULE_H
-#include FT_DRIVER_H
-#include FT_MULTIPLE_MASTERS_H
-
-
-  static FT_Library  library;
-  static int         InitResult;
-
-
-  struct FT_Global
-  {
-    FT_Global()
-    {
-      InitResult = FT_Init_FreeType( &library );
-      if ( InitResult )
-        return;
-
-      // try to activate Adobe's CFF engine; it might not be the default
-      unsigned int  cff_hinting_engine = FT_HINTING_ADOBE;
-      FT_Property_Set( library,
-                       "cff",
-                       "hinting-engine", &cff_hinting_engine );
-    }
-
-    ~FT_Global()
-    {
-      FT_Done_FreeType( library );
-    }
-  };
-
-  FT_Global  global_ft;
-
-
-  // We want to select n values at random (without repetition),
-  // with 0 < n <= N.  The algorithm is taken from TAoCP, Vol. 2
-  // (Algorithm S, selection sampling technique)
-  struct Random
-  {
-    int  n;
-    int  N;
-
-    int  t; // total number of values so far
-    int  m; // number of selected values so far
-
-    uint32_t  r; // the current pseudo-random number
-
-    Random( int n_,
-            int N_ )
-    : n( n_ ),
-      N( N_ )
-    {
-      t = 0;
-      m = 0;
-
-      // Ideally, this should depend on the input file,
-      // for example, taking the sha256 as input;
-      // however, this is overkill for fuzzying tests.
-      r = 12345;
-    }
-
-    int get()
-    {
-      if ( m >= n )
-        return -1;
-
-    Redo:
-      // We can't use `rand': different C libraries might provide
-      // different implementations of this function.  As a replacement,
-      // we use a 32bit version of the `xorshift' algorithm.
-      r ^= r << 13;
-      r ^= r >> 17;
-      r ^= r << 5;
-
-      double  U = double( r ) / UINT32_MAX;
-
-      if ( ( N - t ) * U >= ( n - m ) )
-      {
-        t++;
-        goto Redo;
-      }
-
-      t++;
-      m++;
-
-      return t;
-    }
-  };
-
-
-  static int
-  archive_read_entry_data( struct archive   *ar,
-                           vector<FT_Byte>  *vw )
-  {
-    int             r;
-    const FT_Byte*  buff;
-    size_t          size;
-    int64_t         offset;
-
-    for (;;)
-    {
-      r = archive_read_data_block( ar,
-                                   reinterpret_cast<const void**>( &buff ),
-                                   &size,
-                                   &offset );
-      if ( r == ARCHIVE_EOF )
-        return ARCHIVE_OK;
-      if ( r != ARCHIVE_OK )
-        return r;
-
-      vw->insert( vw->end(), buff, buff + size );
-    }
-  }
-
-
-  static vector<vector<FT_Byte>>
-  parse_data( const uint8_t*  data,
-              size_t          size )
-  {
-    struct archive_entry*    entry;
-    int                      r;
-    vector<vector<FT_Byte>>  files;
-
-    unique_ptr<struct  archive,
-               decltype ( archive_read_free )*>  a( archive_read_new(),
-                                                    archive_read_free );
-
-    // activate reading of uncompressed tar archives
-    archive_read_support_format_tar( a.get() );
-
-    // the need for `const_cast' was removed with libarchive commit be4d4dd
-    if ( !( r = archive_read_open_memory(
-                  a.get(),
-                  const_cast<void*>(static_cast<const void*>( data ) ),
-                  size ) ) )
-    {
-      unique_ptr<struct  archive,
-                 decltype ( archive_read_close )*>  a_open( a.get(),
-                                                            archive_read_close );
-
-      // read files contained in archive
-      for (;;)
-      {
-        r = archive_read_next_header( a_open.get(), &entry );
-        if ( r == ARCHIVE_EOF )
-          break;
-        if ( r != ARCHIVE_OK )
-          break;
-
-        vector<FT_Byte>  entry_data;
-        r = archive_read_entry_data( a.get(), &entry_data );
-        if ( r != ARCHIVE_OK )
-          break;
-
-        files.push_back( move( entry_data ) );
-      }
-    }
-
-    if ( files.size() == 0 )
-      files.emplace_back( data, data + size );
-
-    return files;
-  }
-
-
-  static void
-  setIntermediateAxis( FT_Face  face )
-  {
-    // only handle Multiple Masters and GX variation fonts
-    if ( !FT_HAS_MULTIPLE_MASTERS( face ) )
-      return;
-
-    // get variation data for current instance
-    FT_MM_Var*  variations_ptr = nullptr;
-    if ( FT_Get_MM_Var( face, &variations_ptr ) )
-      return;
-
-    unique_ptr<FT_MM_Var,
-               decltype ( free )*>  variations( variations_ptr, free );
-    vector<FT_Fixed>                coords( variations->num_axis );
-
-    // select an arbitrary instance
-    for ( unsigned int  i = 0; i < variations->num_axis; i++ )
-      coords[i] = ( variations->axis[i].minimum +
-                    variations->axis[i].def     ) / 2;
-
-    if ( FT_Set_Var_Design_Coordinates( face,
-                                        FT_UInt( coords.size() ),
-                                        coords.data() ) )
-      return;
-  }
-
-
-  // the interface function to the libFuzzer library
-  extern "C" int
-  LLVMFuzzerTestOneInput( const uint8_t*  data,
-                          size_t          size_ )
-  {
-    assert( !InitResult );
-
-    if ( size_ < 1 )
-      return 0;
-
-    const vector<vector<FT_Byte>>&  files = parse_data( data, size_ );
-
-    FT_Face         face;
-    FT_Int32        load_flags  = FT_LOAD_DEFAULT;
-#if 0
-    FT_Render_Mode  render_mode = FT_RENDER_MODE_NORMAL;
-#endif
-
-    // We use a conservative approach here, at the cost of calling
-    // `FT_New_Face' quite often.  The idea is that the fuzzer should be
-    // able to try all faces and named instances of a font, expecting that
-    // some faces don't work for various reasons, e.g., a broken subfont, or
-    // an unsupported NFNT bitmap font in a Mac dfont resource that holds
-    // more than a single font.
-
-    // get number of faces
-    if ( FT_New_Memory_Face( library,
-                             files[0].data(),
-                             (FT_Long)files[0].size(),
-                             -1,
-                             &face ) )
-      return 0;
-    long  num_faces = face->num_faces;
-    FT_Done_Face( face );
-
-    // loop over up to 20 arbitrarily selected faces
-    // from index range [0;num-faces-1]
-    long  max_face_cnt = num_faces < 20
-                           ? num_faces
-                           : 20;
-
-    Random  faces_pool( (int)max_face_cnt, (int)num_faces );
-
-    for ( long  face_cnt = 0;
-          face_cnt < max_face_cnt;
-          face_cnt++ )
-    {
-      long  face_index = faces_pool.get() - 1;
-
-      // get number of instances
-      if ( FT_New_Memory_Face( library,
-                               files[0].data(),
-                               (FT_Long)files[0].size(),
-                               -( face_index + 1 ),
-                               &face ) )
-        continue;
-      long  num_instances = face->style_flags >> 16;
-      FT_Done_Face( face );
-
-      // loop over the face without instance (index 0)
-      // and up to 20 arbitrarily selected instances
-      // from index range [1;num_instances]
-      long  max_instance_cnt = num_instances < 20
-                                 ? num_instances
-                                 : 20;
-
-      Random  instances_pool( (int)max_instance_cnt, (int)num_instances );
-
-      for ( long  instance_cnt = 0;
-            instance_cnt <= max_instance_cnt;
-            instance_cnt++ )
-      {
-        long  instance_index = 0;
-
-        if ( !instance_cnt )
-        {
-          if ( FT_New_Memory_Face( library,
-                                   files[0].data(),
-                                   (FT_Long)files[0].size(),
-                                   face_index,
-                                   &face ) )
-            continue;
-        }
-        else
-        {
-          instance_index = instances_pool.get();
-
-          if ( FT_New_Memory_Face( library,
-                                   files[0].data(),
-                                   (FT_Long)files[0].size(),
-                                   ( instance_index << 16 ) + face_index,
-                                   &face ) )
-            continue;
-        }
-
-        // if we have more than a single input file coming from an archive,
-        // attach them (starting with the second file) using the order given
-        // in the archive
-        for ( size_t  files_index = 1;
-              files_index < files.size();
-              files_index++ )
-        {
-          FT_Open_Args  open_args = {};
-          open_args.flags         = FT_OPEN_MEMORY;
-          open_args.memory_base   = files[files_index].data();
-          open_args.memory_size   = (FT_Long)files[files_index].size();
-
-          // the last archive element will be eventually used as the
-          // attachment
-          FT_Attach_Stream( face, &open_args );
-        }
-
-        // loop over an arbitrary size for outlines
-        // and up to ten arbitrarily selected bitmap strike sizes
-        // from the range [0;num_fixed_sizes - 1]
-        int  max_size_cnt = face->num_fixed_sizes < 10
-                              ? face->num_fixed_sizes
-                              : 10;
-
-        Random sizes_pool( max_size_cnt, face->num_fixed_sizes );
-
-        for ( int  size_cnt = 0;
-              size_cnt <= max_size_cnt;
-              size_cnt++ )
-        {
-          FT_Int32  flags = load_flags;
-
-          int  size_index = 0;
-
-          if ( !size_cnt )
-          {
-            // set up 20pt at 72dpi as an arbitrary size
-            if ( FT_Set_Char_Size( face, 20 * 64, 20 * 64, 72, 72 ) )
-              continue;
-            flags |= FT_LOAD_NO_BITMAP;
-          }
-          else
-          {
-            // bitmap strikes are not active for font variations
-            if ( instance_index )
-              continue;
-
-            size_index = sizes_pool.get() - 1;
-
-            if ( FT_Select_Size( face, size_index ) )
-              continue;
-            flags |= FT_LOAD_COLOR;
-          }
-
-          // test MM interface only for a face without a selected instance
-          // and without a selected bitmap strike
-          if ( !instance_index && !size_cnt )
-            setIntermediateAxis( face );
-
-          // loop over all glyphs
-          for ( unsigned int  glyph_index = 0;
-                glyph_index < (unsigned int)face->num_glyphs;
-                glyph_index++ )
-          {
-            if ( FT_Load_Glyph( face, glyph_index, flags ) )
-              continue;
-
-            // Rendering is the most expensive and the least interesting part.
-            //
-            // if ( FT_Render_Glyph( face->glyph, render_mode) )
-            //   continue;
-            // FT_GlyphSlot_Embolden( face->glyph );
-
-#if 0
-            FT_Glyph  glyph;
-            if ( !FT_Get_Glyph( face->glyph, &glyph ) )
-              FT_Done_Glyph( glyph );
-
-            FT_Outline*  outline = &face->glyph->outline;
-            FT_Matrix    rot30   = { 0xDDB4, -0x8000, 0x8000, 0xDDB4 };
-
-            FT_Outline_Transform( outline, &rot30 );
-
-            FT_BBox  bbox;
-            FT_Outline_Get_BBox( outline, &bbox );
-#endif
-          }
-        }
-        FT_Done_Face( face );
-      }
-    }
-
-    return 0;
-  }
-
-
-// END
diff --git a/src/tools/ftfuzzer/ftmutator.cc b/src/tools/ftfuzzer/ftmutator.cc
deleted file mode 100644
index ae4b140..0000000
--- a/src/tools/ftfuzzer/ftmutator.cc
+++ /dev/null
@@ -1,314 +0,0 @@
-// ftmutator.cc
-//
-//   A custom fuzzer mutator to test for FreeType with libFuzzer.
-//
-// Copyright 2015-2018 by
-// David Turner, Robert Wilhelm, and Werner Lemberg.
-//
-// This file is part of the FreeType project, and may only be used,
-// modified, and distributed under the terms of the FreeType project
-// license, LICENSE.TXT.  By continuing to use, modify, or distribute
-// this file you indicate that you have read the license and
-// understand and accept it fully.
-
-
-// Since `tar' is not a valid format for input to FreeType, treat any input
-// that looks like `tar' as multiple files and mutate them separately.
-//
-// In the future, a variation of this may be used to guide mutation on a
-// logically higher level.
-
-
-// we use `unique_ptr', `decltype', and other gimmicks defined since C++11
-#if __cplusplus < 201103L
-#  error "a C++11 compiler is needed"
-#endif
-
-#include <cstdint>
-#include <cassert>
-#include <cstdio>
-#include <cstdlib>
-#include <cstddef>
-#include <cstring>
-#include <iostream>
-
-#include <memory>
-#include <vector>
-
-#include <archive.h>
-#include <archive_entry.h>
-
-#include "FuzzerInterface.h"
-
-
-  using namespace std;
-
-
-  // This function should be defined by `ftfuzzer.cc'.
-  extern "C" int
-  LLVMFuzzerTestOneInput( const uint8_t*  Data,
-                          size_t          Size );
-
-
-  static void
-  check_result( struct archive*  a,
-                int              r )
-  {
-    if ( r == ARCHIVE_OK )
-      return;
-
-    const char*  m = archive_error_string( a );
-    write( 1, m, strlen( m ) );
-    exit( 1 );
-  }
-
-
-  static int
-  archive_read_entry_data( struct archive   *ar,
-                           vector<uint8_t>  *vw )
-  {
-    int             r;
-    const uint8_t*  buff;
-    size_t          size;
-    int64_t         offset;
-
-    for (;;)
-    {
-      r = archive_read_data_block( ar,
-                                   reinterpret_cast<const void**>( &buff ),
-                                   &size,
-                                   &offset );
-      if ( r == ARCHIVE_EOF )
-        return ARCHIVE_OK;
-      if ( r != ARCHIVE_OK )
-        return r;
-
-      vw->insert( vw->end(), buff, buff + size );
-    }
-  }
-
-
-  static vector<vector<uint8_t>>
-  parse_data( const uint8_t*  data,
-              size_t          size )
-  {
-    struct archive_entry*    entry;
-    int                      r;
-    vector<vector<uint8_t>>  files;
-
-    unique_ptr<struct  archive,
-               decltype ( archive_read_free )*>  a( archive_read_new(),
-                                                    archive_read_free );
-
-    // activate reading of uncompressed tar archives
-    archive_read_support_format_tar( a.get() );
-
-    // the need for `const_cast' was removed with libarchive commit be4d4dd
-    if ( !( r = archive_read_open_memory(
-                  a.get(),
-                  const_cast<void*>(static_cast<const void*>( data ) ),
-                  size ) ) )
-    {
-      unique_ptr<struct  archive,
-                 decltype ( archive_read_close )*>  a_open( a.get(),
-                                                            archive_read_close );
-
-      // read files contained in archive
-      for (;;)
-      {
-        r = archive_read_next_header( a_open.get(), &entry );
-        if ( r == ARCHIVE_EOF )
-          break;
-        if ( r != ARCHIVE_OK )
-          break;
-
-        vector<uint8_t>  entry_data;
-        r = archive_read_entry_data( a.get(), &entry_data );
-        if ( entry_data.size() == 0 )
-          continue;
-
-        files.push_back( move( entry_data ) );
-        if ( r != ARCHIVE_OK )
-          break;
-      }
-    }
-
-    return files;
-  }
-
-
-  class FTFuzzer
-  : public fuzzer::UserSuppliedFuzzer
-  {
-
-  public:
-    FTFuzzer( fuzzer::FuzzerRandomBase*  Rand )
-    : fuzzer::UserSuppliedFuzzer( Rand ) {}
-
-
-    int
-    TargetFunction( const uint8_t*  Data,
-                    size_t          Size )
-    {
-      return LLVMFuzzerTestOneInput( Data, Size );
-    }
-
-
-    // Custom mutator.
-    virtual size_t
-    Mutate( uint8_t*  Data,
-            size_t    Size,
-            size_t    MaxSize )
-    {
-      vector<vector<uint8_t>>  files = parse_data( Data, Size );
-
-      // If the file was not recognized as a tar file, treat it as non-tar.
-      if ( files.size() == 0 )
-        return fuzzer::UserSuppliedFuzzer::Mutate( Data, Size, MaxSize );
-
-      // This is somewhat `white box' on tar.  The tar format uses 512 byte
-      // blocks.  One block as header for each file, two empty blocks of 0's
-      // at the end.  File data is padded to fill its last block.
-      size_t  used_blocks = files.size() + 2;
-      for ( const auto&  file : files )
-        used_blocks += ( file.size() + 511 ) / 512;
-
-      size_t  max_blocks = MaxSize / 512;
-
-      // If the input is big, it will need to be downsized.  If the original
-      // tar file was too big, it may have been clipped to fit.  In this
-      // case it may not be possible to properly write out the data, as
-      // there may not be enough space for the trailing two blocks.  Start
-      // dropping file data or files from the end.
-      for ( size_t  i = files.size();
-            i-- > 1 && used_blocks > max_blocks; )
-      {
-        size_t  blocks_to_free = used_blocks - max_blocks;
-        size_t  blocks_currently_used_by_file_data =
-                  ( files[i].size() + 511 ) / 512;
-
-        if ( blocks_currently_used_by_file_data >= blocks_to_free )
-        {
-          files[i].resize( ( blocks_currently_used_by_file_data -
-                               blocks_to_free ) * 512 );
-          used_blocks -= blocks_to_free;
-          continue;
-        }
-
-        files.pop_back();
-        used_blocks -= blocks_currently_used_by_file_data + 1;
-      }
-
-      // If we get down to one file, don't use tar.
-      if ( files.size() == 1 )
-      {
-        memcpy( Data, files[0].data(), files[0].size() );
-        return fuzzer::UserSuppliedFuzzer::Mutate( Data,
-                                                   files[0].size(),
-                                                   MaxSize );
-      }
-
-      size_t  free_blocks = max_blocks - used_blocks;
-
-      // Allow each file to use up as much of the currently available space
-      // it can.  If it uses or gives up blocks, add them or remove them
-      // from the pool.
-      for ( auto&&  file : files )
-      {
-        size_t  blocks_currently_used_by_file = ( file.size() + 511 ) / 512;
-        size_t  blocks_available = blocks_currently_used_by_file +
-                                     free_blocks;
-        size_t  max_size = blocks_available * 512;
-        size_t  data_size = file.size();
-
-        file.resize( max_size );
-        file.resize( fuzzer::UserSuppliedFuzzer::Mutate( file.data(),
-                                                         data_size,
-                                                         max_size ) );
-
-        size_t  blocks_now_used_by_file = ( file.size() + 511 ) / 512;
-        free_blocks = free_blocks +
-                        blocks_currently_used_by_file -
-                        blocks_now_used_by_file;
-      }
-
-      unique_ptr<struct  archive,
-                 decltype ( archive_write_free )*>  a( archive_write_new(),
-                                                       archive_write_free );
-
-      check_result( a.get(), archive_write_add_filter_none( a.get() ) );
-      check_result( a.get(), archive_write_set_format_ustar( a.get() ) );
-
-      // `used' may not be correct until after the archive is closed.
-      size_t  used = 0xbadbeef;
-      check_result( a.get(), archive_write_open_memory( a.get(),
-                                                        Data,
-                                                        MaxSize,
-                                                        &used ) );
-
-      {
-        unique_ptr<struct  archive,
-                   decltype ( archive_write_close )*>  a_open( a.get(),
-                                                               archive_write_close );
-
-        int  file_index = 0;
-        for ( const auto&  file : files )
-        {
-          unique_ptr<struct  archive_entry,
-                     decltype ( archive_entry_free )*>
-            e( archive_entry_new2( a_open.get() ),
-                                   archive_entry_free );
-
-          char  name_buffer[100];
-          snprintf( name_buffer, 100, "file%d", file_index++ );
-
-          archive_entry_set_pathname( e.get(), name_buffer );
-          archive_entry_set_size( e.get(), file.size() );
-          archive_entry_set_filetype( e.get(), AE_IFREG );
-          archive_entry_set_perm( e.get(), 0644 );
-
-          check_result( a_open.get(),
-                        archive_write_header( a_open.get(), e.get() ) );
-          archive_write_data( a_open.get(), file.data(), file.size() );
-          check_result( a_open.get(),
-                        archive_write_finish_entry( a_open.get() ) );
-        }
-      }
-
-      return used;
-    }
-
-
-    // Cross `Data1' and `Data2', write up to `MaxOutSize' bytes into `Out',
-    // return the number of bytes written, which should be positive.
-    virtual size_t
-    CrossOver( const uint8_t*  Data1,
-               size_t          Size1,
-               const uint8_t*  Data2,
-               size_t          Size2,
-               uint8_t*        Out,
-               size_t          MaxOutSize )
-    {
-      return fuzzer::UserSuppliedFuzzer::CrossOver( Data1,
-                                                    Size1,
-                                                    Data2,
-                                                    Size2,
-                                                    Out,
-                                                    MaxOutSize );
-    }
-
-  }; // end of FTFuzzer class
-
-
-  int
-  main( int     argc,
-        char*  *argv )
-  {
-    fuzzer::FuzzerRandomLibc  Rand( 0 );
-    FTFuzzer                  F( &Rand );
-
-    fuzzer::FuzzerDriver( argc, argv, F );
-  }
-
-
-// END
diff --git a/src/tools/ftfuzzer/rasterfuzzer.cc b/src/tools/ftfuzzer/rasterfuzzer.cc
deleted file mode 100644
index c69b95e..0000000
--- a/src/tools/ftfuzzer/rasterfuzzer.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-// rasterfuzzer.cc
-//
-//   A fuzzing function to test FreeType's rasterizers with libFuzzer.
-//
-// Copyright 2016-2018 by
-// David Turner, Robert Wilhelm, and Werner Lemberg.
-//
-// This file is part of the FreeType project, and may only be used,
-// modified, and distributed under the terms of the FreeType project
-// license, LICENSE.TXT.  By continuing to use, modify, or distribute
-// this file you indicate that you have read the license and
-// understand and accept it fully.
-
-
-#include <stdint.h>
-
-#include <vector>
-
-
-  using namespace std;
-
-
-#include <ft2build.h>
-
-#include FT_FREETYPE_H
-#include FT_IMAGE_H
-#include FT_OUTLINE_H
-
-
-  static FT_Library  library;
-  static int         InitResult;
-
-
-  struct FT_Global {
-    FT_Global() {
-      InitResult = FT_Init_FreeType( &library );
-    }
-    ~FT_Global() {
-      FT_Done_FreeType( library );
-    }
-  };
-
-  FT_Global  global_ft;
-
-
-  extern "C" int
-  LLVMFuzzerTestOneInput( const uint8_t*  data,
-                          size_t          size_ )
-  {
-    unsigned char  pixels[4];
-
-    FT_Bitmap  bitmap_mono = {
-      1,                  // rows
-      1,                  // width
-      4,                  // pitch
-      pixels,             // buffer
-      2,                  // num_grays
-      FT_PIXEL_MODE_MONO, // pixel_mode
-      0,                  // palette_mode
-      NULL                // palette
-    };
-
-    FT_Bitmap  bitmap_gray = {
-      1,                  // rows
-      1,                  // width
-      4,                  // pitch
-      pixels,             // buffer
-      256,                // num_grays
-      FT_PIXEL_MODE_GRAY, // pixel_mode
-      0,                  // palette_mode
-      NULL                // palette
-    };
-
-    const size_t vsize = sizeof ( FT_Vector );
-    const size_t tsize = sizeof ( char );
-
-    // we use the input data for both points and tags
-    short  n_points = short( size_ / ( vsize + tsize ) );
-    if ( n_points <= 2 )
-      return 0;
-
-    FT_Vector*  points = reinterpret_cast<FT_Vector*>(
-                           const_cast<uint8_t*>(
-                             data ) );
-    char*       tags   = reinterpret_cast<char*>(
-                           const_cast<uint8_t*>(
-                             data + size_t( n_points ) * vsize ) );
-
-    // to reduce the number of invalid outlines that are immediately
-    // rejected in `FT_Outline_Render', limit values to 2^18 pixels
-    // (i.e., 2^24 bits)
-    for ( short  i = 0; i < n_points; i++ )
-    {
-      if ( points[i].x == LONG_MIN )
-        points[i].x = 0;
-      else if ( points[i].x < 0 )
-        points[i].x = -( -points[i].x & 0xFFFFFF ) - 1;
-      else
-        points[i].x = ( points[i].x & 0xFFFFFF ) + 1;
-
-      if ( points[i].y == LONG_MIN )
-        points[i].y = 0;
-      else if ( points[i].y < 0 )
-        points[i].y = -( -points[i].y & 0xFFFFFF ) - 1;
-      else
-        points[i].y = ( points[i].y & 0xFFFFFF ) + 1;
-    }
-
-    short  contours[1];
-    contours[0] = n_points - 1;
-
-    FT_Outline  outline =
-    {
-      1,               // n_contours
-      n_points,        // n_points
-      points,          // points
-      tags,            // tags
-      contours,        // contours
-      FT_OUTLINE_NONE  // flags
-    };
-
-    FT_Outline_Get_Bitmap( library, &outline, &bitmap_mono );
-    FT_Outline_Get_Bitmap( library, &outline, &bitmap_gray );
-
-    return 0;
-  }
-
-
-// END
diff --git a/src/tools/ftfuzzer/runinput.cc b/src/tools/ftfuzzer/runinput.cc
deleted file mode 100644
index 2b02f57..0000000
--- a/src/tools/ftfuzzer/runinput.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-// runinput.cc
-//
-//   A `main' function for fuzzers like `ftfuzzer.cc'.
-//
-// Copyright 2015-2018 by
-// David Turner, Robert Wilhelm, and Werner Lemberg.
-//
-// This file is part of the FreeType project, and may only be used,
-// modified, and distributed under the terms of the FreeType project
-// license, LICENSE.TXT.  By continuing to use, modify, or distribute
-// this file you indicate that you have read the license and
-// understand and accept it fully.
-
-
-#include <assert.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdint.h>
-
-
-  extern "C" void
-  LLVMFuzzerTestOneInput( const uint8_t*  data,
-                          size_t          size );
-
-
-  unsigned char a[1 << 24];
-
-
-  int
-  main( int     argc,
-        char*  *argv )
-  {
-    assert( argc >= 2 );
-
-    for ( int i = 1; i < argc; i++ )
-    {
-      fprintf( stderr, "%s\n", argv[i] );
-
-      FILE*  f = fopen( argv[i], "r" );
-      assert( f );
-
-      size_t  n = fread( a, 1, sizeof ( a ), f );
-      fclose( f );
-      if ( !n )
-        continue;
-
-      unsigned char*  b = (unsigned char*)malloc( n );
-      memcpy( b, a, n );
-
-      LLVMFuzzerTestOneInput( b, n );
-
-      free( b );
-    }
-  }
-
-
-// END
diff --git a/src/tools/glnames.py b/src/tools/glnames.py
index b048d29..e88f710 100644
--- a/src/tools/glnames.py
+++ b/src/tools/glnames.py
@@ -5310,24 +5310,24 @@
   mac_extras_count = len( mac_extras )
   base_list        = mac_extras + sid_standard_names
 
-  write( "/***************************************************************************/\n" )
-  write( "/*                                                                         */\n" )
+  write( "/****************************************************************************\n" )
+  write( " *\n" )
 
-  write( "/*  %-71s*/\n" % os.path.basename( sys.argv[1] ) )
+  write( " * %-71s\n" % os.path.basename( sys.argv[1] ) )
 
-  write( "/*                                                                         */\n" )
-  write( "/*    PostScript glyph names.                                              */\n" )
-  write( "/*                                                                         */\n" )
-  write( "/*  Copyright 2005-2018 by                                                 */\n" )
-  write( "/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */\n" )
-  write( "/*                                                                         */\n" )
-  write( "/*  This file is part of the FreeType project, and may only be used,       */\n" )
-  write( "/*  modified, and distributed under the terms of the FreeType project      */\n" )
-  write( "/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */\n" )
-  write( "/*  this file you indicate that you have read the license and              */\n" )
-  write( "/*  understand and accept it fully.                                        */\n" )
-  write( "/*                                                                         */\n" )
-  write( "/***************************************************************************/\n" )
+  write( " *\n" )
+  write( " *   PostScript glyph names.\n" )
+  write( " *\n" )
+  write( " * Copyright 2005-2018 by\n" )
+  write( " * David Turner, Robert Wilhelm, and Werner Lemberg.\n" )
+  write( " *\n" )
+  write( " * This file is part of the FreeType project, and may only be used,\n" )
+  write( " * modified, and distributed under the terms of the FreeType project\n" )
+  write( " * license, LICENSE.TXT.  By continuing to use, modify, or distribute\n" )
+  write( " * this file you indicate that you have read the license and\n" )
+  write( " * understand and accept it fully.\n" )
+  write( " *\n" )
+  write( " */\n" )
   write( "\n" )
   write( "\n" )
   write( "  /* This file has been generated automatically -- do not edit! */\n" )
@@ -5361,12 +5361,12 @@
 
   write( """\
   /*
-   *  This table is a compressed version of the Adobe Glyph List (AGL),
-   *  optimized for efficient searching.  It has been generated by the
-   *  `glnames.py' python script located in the `src/tools' directory.
+   * This table is a compressed version of the Adobe Glyph List (AGL),
+   * optimized for efficient searching.  It has been generated by the
+   * `glnames.py' python script located in the `src/tools' directory.
    *
-   *  The lookup function to get the Unicode value for a given string
-   *  is defined below the table.
+   * The lookup function to get the Unicode value for a given string
+   * is defined below the table.
    */
 
 #ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
@@ -5380,7 +5380,7 @@
   write( """\
 #ifdef  DEFINE_PS_TABLES
   /*
-   *  This function searches the compressed table efficiently.
+   * This function searches the compressed table efficiently.
    */
   static unsigned long
   ft_get_adobe_glyph_index( const char*  name,
diff --git a/src/truetype/rules.mk b/src/truetype/rules.mk
index e16113f..e1547ed 100644
--- a/src/truetype/rules.mk
+++ b/src/truetype/rules.mk
@@ -33,7 +33,6 @@
               $(TT_DIR)/ttgxvar.c  \
               $(TT_DIR)/ttinterp.c \
               $(TT_DIR)/ttobjs.c   \
-              $(TT_DIR)/ttpic.c    \
               $(TT_DIR)/ttpload.c  \
               $(TT_DIR)/ttsubpix.c
 
diff --git a/src/truetype/truetype.c b/src/truetype/truetype.c
index 4843709..dd64db8 100644
--- a/src/truetype/truetype.c
+++ b/src/truetype/truetype.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  truetype.c                                                             */
-/*                                                                         */
-/*    FreeType TrueType driver component (body only).                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * truetype.c
+ *
+ *   FreeType TrueType driver component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
@@ -24,7 +24,6 @@
 #include "ttgxvar.c"    /* gx distortable font */
 #include "ttinterp.c"
 #include "ttobjs.c"     /* object manager      */
-#include "ttpic.c"
 #include "ttpload.c"    /* tables loader       */
 #include "ttsubpix.c"
 
diff --git a/src/truetype/ttdriver.c b/src/truetype/ttdriver.c
index 820cafb..eac736c 100644
--- a/src/truetype/ttdriver.c
+++ b/src/truetype/ttdriver.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttdriver.c                                                             */
-/*                                                                         */
-/*    TrueType font driver implementation (body).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttdriver.c
+ *
+ *   TrueType font driver implementation (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -43,20 +43,19 @@
 
 #include "tterrors.h"
 
-#include "ttpic.h"
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttdriver
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
   static FT_Error
@@ -164,38 +163,42 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_get_kerning                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A driver method used to return the kerning vector between two      */
-  /*    glyphs of the same face.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: A handle to the source face object.                 */
-  /*                                                                       */
-  /*    left_glyph  :: The index of the left glyph in the kern pair.       */
-  /*                                                                       */
-  /*    right_glyph :: The index of the right glyph in the kern pair.      */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    kerning     :: The kerning vector.  This is in font units for      */
-  /*                   scalable formats, and in pixels for fixed-sizes     */
-  /*                   formats.                                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only horizontal layouts (left-to-right & right-to-left) are        */
-  /*    supported by this function.  Other layouts, or more sophisticated  */
-  /*    kernings, are out of scope of this method (the basic driver        */
-  /*    interface is meant to be simple).                                  */
-  /*                                                                       */
-  /*    They can be implemented by format-specific interfaces.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_get_kerning
+   *
+   * @Description:
+   *   A driver method used to return the kerning vector between two
+   *   glyphs of the same face.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   left_glyph ::
+   *     The index of the left glyph in the kern pair.
+   *
+   *   right_glyph ::
+   *     The index of the right glyph in the kern pair.
+   *
+   * @Output:
+   *   kerning ::
+   *     The kerning vector.  This is in font units for
+   *     scalable formats, and in pixels for fixed-sizes
+   *     formats.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   *
+   * @Note:
+   *   Only horizontal layouts (left-to-right & right-to-left) are
+   *   supported by this function.  Other layouts, or more sophisticated
+   *   kernings, are out of scope of this method (the basic driver
+   *   interface is meant to be simple).
+   *
+   *   They can be implemented by format-specific interfaces.
+   */
   static FT_Error
   tt_get_kerning( FT_Face     ttface,          /* TT_Face */
                   FT_UInt     left_glyph,
@@ -384,32 +387,36 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_glyph_load                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A driver method used to load a glyph within a given glyph slot.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    slot        :: A handle to the target slot object where the glyph  */
-  /*                   will be loaded.                                     */
-  /*                                                                       */
-  /*    size        :: A handle to the source face size at which the glyph */
-  /*                   must be scaled, loaded, etc.                        */
-  /*                                                                       */
-  /*    glyph_index :: The index of the glyph in the font file.            */
-  /*                                                                       */
-  /*    load_flags  :: A flag indicating what to load for this glyph.  The */
-  /*                   FT_LOAD_XXX constants can be used to control the    */
-  /*                   glyph loading process (e.g., whether the outline    */
-  /*                   should be scaled, whether to load bitmaps or not,   */
-  /*                   whether to hint the outline, etc).                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_glyph_load
+   *
+   * @Description:
+   *   A driver method used to load a glyph within a given glyph slot.
+   *
+   * @Input:
+   *   slot ::
+   *     A handle to the target slot object where the glyph
+   *     will be loaded.
+   *
+   *   size ::
+   *     A handle to the source face size at which the glyph
+   *     must be scaled, loaded, etc.
+   *
+   *   glyph_index ::
+   *     The index of the glyph in the font file.
+   *
+   *   load_flags ::
+   *     A flag indicating what to load for this glyph.  The
+   *     FT_LOAD_XXX constants can be used to control the
+   *     glyph loading process (e.g., whether the outline
+   *     should be scaled, whether to load bitmaps or not,
+   *     whether to hint the outline, etc).
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   tt_glyph_load( FT_GlyphSlot  ttslot,      /* TT_GlyphSlot */
                  FT_Size       ttsize,      /* TT_Size      */
@@ -464,7 +471,7 @@
                       ? &ttsize->metrics
                       : &size->hinted_metrics;
 
-    /* now load the glyph outline if necessary */
+    /* now fill in the glyph slot with outline/bitmap/layered */
     error = TT_Load_Glyph( size, slot, glyph_index, load_flags );
 
     /* force drop-out mode to 2 - irrelevant now */
@@ -548,19 +555,19 @@
     tt_services,
 
     FT_SERVICE_ID_FONT_FORMAT,        FT_FONT_FORMAT_TRUETYPE,
-    FT_SERVICE_ID_MULTI_MASTERS,      &TT_SERVICE_GX_MULTI_MASTERS_GET,
-    FT_SERVICE_ID_METRICS_VARIATIONS, &TT_SERVICE_METRICS_VARIATIONS_GET,
+    FT_SERVICE_ID_MULTI_MASTERS,      &tt_service_gx_multi_masters,
+    FT_SERVICE_ID_METRICS_VARIATIONS, &tt_service_metrics_variations,
     FT_SERVICE_ID_TRUETYPE_ENGINE,    &tt_service_truetype_engine,
-    FT_SERVICE_ID_TT_GLYF,            &TT_SERVICE_TRUETYPE_GLYF_GET,
-    FT_SERVICE_ID_PROPERTIES,         &TT_SERVICE_PROPERTIES_GET )
+    FT_SERVICE_ID_TT_GLYF,            &tt_service_truetype_glyf,
+    FT_SERVICE_ID_PROPERTIES,         &tt_service_properties )
 #else
   FT_DEFINE_SERVICEDESCREC4(
     tt_services,
 
     FT_SERVICE_ID_FONT_FORMAT,     FT_FONT_FORMAT_TRUETYPE,
     FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine,
-    FT_SERVICE_ID_TT_GLYF,         &TT_SERVICE_TRUETYPE_GLYF_GET,
-    FT_SERVICE_ID_PROPERTIES,      &TT_SERVICE_PROPERTIES_GET )
+    FT_SERVICE_ID_TT_GLYF,         &tt_service_truetype_glyf,
+    FT_SERVICE_ID_PROPERTIES,      &tt_service_properties )
 #endif
 
 
@@ -574,26 +581,15 @@
     SFNT_Service         sfnt;
 
 
-    /* TT_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    if ( !driver )
-      return NULL;
-    library = driver->library;
-    if ( !library )
-      return NULL;
-#endif
-
-    result = ft_service_list_lookup( TT_SERVICES_GET, tt_interface );
+    result = ft_service_list_lookup( tt_services, tt_interface );
     if ( result )
       return result;
 
-#ifndef FT_CONFIG_OPTION_PIC
     if ( !driver )
       return NULL;
     library = driver->library;
     if ( !library )
       return NULL;
-#endif
 
     /* only return the default interface from the SFNT module */
     sfntd = FT_Get_Module( library, "sfnt" );
diff --git a/src/truetype/ttdriver.h b/src/truetype/ttdriver.h
index 707aa68..45e25b6 100644
--- a/src/truetype/ttdriver.h
+++ b/src/truetype/ttdriver.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttdriver.h                                                             */
-/*                                                                         */
-/*    High-level TrueType driver interface (specification).                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttdriver.h
+ *
+ *   High-level TrueType driver interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTDRIVER_H_
@@ -26,10 +26,8 @@
 
 FT_BEGIN_HEADER
 
-
   FT_DECLARE_DRIVER( tt_driver_class )
 
-
 FT_END_HEADER
 
 #endif /* TTDRIVER_H_ */
diff --git a/src/truetype/tterrors.h b/src/truetype/tterrors.h
index 88bca3a..a14dee3 100644
--- a/src/truetype/tterrors.h
+++ b/src/truetype/tterrors.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  tterrors.h                                                             */
-/*                                                                         */
-/*    TrueType error codes (specification only).                           */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * tterrors.h
+ *
+ *   TrueType error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the TrueType error enumeration            */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the TrueType error enumeration
+   * constants.
+   *
+   */
 
 #ifndef TTERRORS_H_
 #define TTERRORS_H_
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index 32ed34a..9e98f11 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttgload.c                                                              */
-/*                                                                         */
-/*    TrueType Glyph Loader (body).                                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttgload.c
+ *
+ *   TrueType Glyph Loader (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -38,20 +38,20 @@
 #include "ttsubpix.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttgload
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Composite glyph flags.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Composite glyph flags.
+   */
 #define ARGS_ARE_WORDS             0x0001
 #define ARGS_ARE_XY_VALUES         0x0002
 #define ROUND_XY_TO_GRID           0x0004
@@ -67,10 +67,10 @@
 #define UNSCALED_COMPONENT_OFFSET  0x1000
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Return the horizontal metrics in font units for a given glyph.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Return the horizontal metrics in font units for a given glyph.
+   */
   FT_LOCAL_DEF( void )
   TT_Get_HMetrics( TT_Face     face,
                    FT_UInt     idx,
@@ -84,11 +84,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Return the vertical metrics in font units for a given glyph.          */
-  /* See function `tt_loader_set_pp' below for explanations.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Return the vertical metrics in font units for a given glyph.
+   * See function `tt_loader_set_pp' below for explanations.
+   */
   FT_LOCAL_DEF( void )
   TT_Get_VMetrics( TT_Face     face,
                    FT_UInt     idx,
@@ -250,13 +250,13 @@
 #endif /* FT_CONFIG_OPTION_INCREMENTAL */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The following functions are used by default with TrueType fonts.      */
-  /* However, they can be replaced by alternatives if we need to support   */
-  /* TrueType-compressed formats (like MicroType) in the future.           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * The following functions are used by default with TrueType fonts.
+   * However, they can be replaced by alternatives if we need to support
+   * TrueType-compressed formats (like MicroType) in the future.
+   *
+   */
 
   FT_CALLBACK_DEF( FT_Error )
   TT_Access_Glyph_Frame( TT_Loader  loader,
@@ -382,6 +382,8 @@
         goto Invalid_Outline;
     }
 
+    FT_TRACE5(( "  # of points: %d\n", n_points ));
+
     /* note that we will add four phantom points later */
     error = FT_GLYPHLOADER_CHECK_POINTS( gloader, n_points + 4, 0 );
     if ( error )
@@ -559,9 +561,10 @@
   TT_Load_Composite_Glyph( TT_Loader  loader )
   {
     FT_Error        error;
-    FT_Byte*        p       = loader->cursor;
-    FT_Byte*        limit   = loader->limit;
-    FT_GlyphLoader  gloader = loader->gloader;
+    FT_Byte*        p          = loader->cursor;
+    FT_Byte*        limit      = loader->limit;
+    FT_GlyphLoader  gloader    = loader->gloader;
+    FT_Long         num_glyphs = loader->face->root.num_glyphs;
     FT_SubGlyph     subglyph;
     FT_UInt         num_subglyphs;
 
@@ -590,6 +593,11 @@
       subglyph->flags = FT_NEXT_USHORT( p );
       subglyph->index = FT_NEXT_USHORT( p );
 
+      /* we reject composites that have components */
+      /* with invalid glyph indices                */
+      if ( subglyph->index >= num_glyphs )
+        goto Invalid_Composite;
+
       /* check space */
       count = 2;
       if ( subglyph->flags & ARGS_ARE_WORDS )
@@ -768,15 +776,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Hint_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Hint the glyph using the zone prepared by the caller.  Note that   */
-  /*    the zone is supposed to include four phantom points.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Hint_Glyph
+   *
+   * @Description:
+   *   Hint the glyph using the zone prepared by the caller.  Note that
+   *   the zone is supposed to include four phantom points.
+   */
   static FT_Error
   TT_Hint_Glyph( TT_Loader  loader,
                  FT_Bool    is_composite )
@@ -896,16 +904,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Process_Simple_Glyph                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Once a simple glyph has been loaded, it needs to be processed.     */
-  /*    Usually, this means scaling and hinting through bytecode           */
-  /*    interpretation.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Process_Simple_Glyph
+   *
+   * @Description:
+   *   Once a simple glyph has been loaded, it needs to be processed.
+   *   Usually, this means scaling and hinting through bytecode
+   *   interpretation.
+   */
   static FT_Error
   TT_Process_Simple_Glyph( TT_Loader  loader )
   {
@@ -1071,15 +1079,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Process_Composite_Component                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Once a composite component has been loaded, it needs to be         */
-  /*    processed.  Usually, this means transforming and translating.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Process_Composite_Component
+   *
+   * @Description:
+   *   Once a composite component has been loaded, it needs to be
+   *   processed.  Usually, this means transforming and translating.
+   */
   static FT_Error
   TT_Process_Composite_Component( TT_Loader    loader,
                                   FT_SubGlyph  subglyph,
@@ -1153,10 +1161,10 @@
 
 #if 0
 
-        /*******************************************************************/
-        /*                                                                 */
-        /* This algorithm is what Apple documents.  But it doesn't work.   */
-        /*                                                                 */
+        /********************************************************************
+         *
+         * This algorithm is what Apple documents.  But it doesn't work.
+         */
         int  a = subglyph->transform.xx > 0 ?  subglyph->transform.xx
                                             : -subglyph->transform.xx;
         int  b = subglyph->transform.yx > 0 ?  subglyph->transform.yx
@@ -1178,10 +1186,10 @@
 
 #else /* 1 */
 
-        /*******************************************************************/
-        /*                                                                 */
-        /* This algorithm is a guess and works much better than the above. */
-        /*                                                                 */
+        /********************************************************************
+         *
+         * This algorithm is a guess and works much better than the above.
+         */
         FT_Fixed  mac_xscale = FT_Hypot( subglyph->transform.xx,
                                          subglyph->transform.xy );
         FT_Fixed  mac_yscale = FT_Hypot( subglyph->transform.yy,
@@ -1219,7 +1227,7 @@
              * Theoretically, a glyph's bytecode can toggle ClearType's
              * `backward compatibility' mode, which would allow modification
              * of the advance width.  In reality, however, applications
-             * neither allow nor expect modified advance widths if sub-pixel
+             * neither allow nor expect modified advance widths if subpixel
              * rendering is active.
              *
              */
@@ -1239,16 +1247,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Process_Composite_Glyph                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This is slightly different from TT_Process_Simple_Glyph, in that   */
-  /*    its sole purpose is to hint the glyph.  Thus this function is      */
-  /*    only available when bytecode interpreter is enabled.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Process_Composite_Glyph
+   *
+   * @Description:
+   *   This is slightly different from TT_Process_Simple_Glyph, in that
+   *   its sole purpose is to hint the glyph.  Thus this function is
+   *   only available when bytecode interpreter is enabled.
+   */
   static FT_Error
   TT_Process_Composite_Glyph( TT_Loader  loader,
                               FT_UInt    start_point,
@@ -1497,15 +1505,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    load_truetype_glyph                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads a given truetype glyph.  Handles composites and uses a       */
-  /*    TT_Loader object.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   load_truetype_glyph
+   *
+   * @Description:
+   *   Loads a given truetype glyph.  Handles composites and uses a
+   *   TT_Loader object.
+   */
   static FT_Error
   load_truetype_glyph( TT_Loader  loader,
                        FT_UInt    glyph_index,
@@ -2276,13 +2284,13 @@
       /* XXX: for now, we have no better algorithm for the lsb, but it */
       /*      should work fine.                                        */
       /*                                                               */
-      glyph->metrics.vertBearingX = glyph->metrics.horiBearingX -
-                                      glyph->metrics.horiAdvance / 2;
+      glyph->metrics.vertBearingX = SUB_LONG( glyph->metrics.horiBearingX,
+                                              glyph->metrics.horiAdvance / 2 );
       glyph->metrics.vertBearingY = top;
       glyph->metrics.vertAdvance  = advance;
     }
 
-    return 0;
+    return FT_Err_Ok;
   }
 
 
@@ -2656,33 +2664,37 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Load_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to load a single glyph within a given glyph slot,  */
-  /*    for a given size.                                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    glyph       :: A handle to a target slot object where the glyph    */
-  /*                   will be loaded.                                     */
-  /*                                                                       */
-  /*    size        :: A handle to the source face size at which the glyph */
-  /*                   must be scaled/loaded.                              */
-  /*                                                                       */
-  /*    glyph_index :: The index of the glyph in the font file.            */
-  /*                                                                       */
-  /*    load_flags  :: A flag indicating what to load for this glyph.  The */
-  /*                   FT_LOAD_XXX constants can be used to control the    */
-  /*                   glyph loading process (e.g., whether the outline    */
-  /*                   should be scaled, whether to load bitmaps or not,   */
-  /*                   whether to hint the outline, etc).                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Load_Glyph
+   *
+   * @Description:
+   *   A function used to load a single glyph within a given glyph slot,
+   *   for a given size.
+   *
+   * @Input:
+   *   glyph ::
+   *     A handle to a target slot object where the glyph
+   *     will be loaded.
+   *
+   *   size ::
+   *     A handle to the source face size at which the glyph
+   *     must be scaled/loaded.
+   *
+   *   glyph_index ::
+   *     The index of the glyph in the font file.
+   *
+   *   load_flags ::
+   *     A flag indicating what to load for this glyph.  The
+   *     FT_LOAD_XXX constants can be used to control the
+   *     glyph loading process (e.g., whether the outline
+   *     should be scaled, whether to load bitmaps or not,
+   *     whether to hint the outline, etc).
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Load_Glyph( TT_Size       size,
                  TT_GlyphSlot  glyph,
@@ -2709,6 +2721,10 @@
          ( load_flags & FT_LOAD_NO_BITMAP ) == 0 &&
          IS_DEFAULT_INSTANCE                     )
     {
+      FT_Fixed  x_scale = size->root.metrics.x_scale;
+      FT_Fixed  y_scale = size->root.metrics.y_scale;
+
+
       error = load_sbit_image( size, glyph, glyph_index, load_flags );
       if ( FT_ERR_EQ( error, Missing_Bitmap ) )
       {
@@ -2716,9 +2732,13 @@
         /* if we have a bitmap-only font, return an empty glyph            */
         if ( !FT_IS_SCALABLE( glyph->face ) )
         {
-          TT_Face    face = (TT_Face)glyph->face;
-          FT_Short   left_bearing = 0, top_bearing = 0;
-          FT_UShort  advance_width = 0, advance_height = 0;
+          TT_Face  face = (TT_Face)glyph->face;
+
+          FT_Short  left_bearing = 0;
+          FT_Short  top_bearing  = 0;
+
+          FT_UShort  advance_width  = 0;
+          FT_UShort  advance_height = 0;
 
 
           /* to return an empty glyph, however, we need metrics data   */
@@ -2744,13 +2764,13 @@
           glyph->metrics.width  = 0;
           glyph->metrics.height = 0;
 
-          glyph->metrics.horiBearingX = left_bearing;
+          glyph->metrics.horiBearingX = FT_MulFix( left_bearing, x_scale );
           glyph->metrics.horiBearingY = 0;
-          glyph->metrics.horiAdvance  = advance_width;
+          glyph->metrics.horiAdvance  = FT_MulFix( advance_width, x_scale );
 
           glyph->metrics.vertBearingX = 0;
-          glyph->metrics.vertBearingY = top_bearing;
-          glyph->metrics.vertAdvance  = advance_height;
+          glyph->metrics.vertBearingY = FT_MulFix( top_bearing, y_scale );
+          glyph->metrics.vertAdvance  = FT_MulFix( advance_height, y_scale );
 
           glyph->format            = FT_GLYPH_FORMAT_BITMAP;
           glyph->bitmap.pixel_mode = FT_PIXEL_MODE_MONO;
@@ -2781,13 +2801,11 @@
           /* sanity checks: if `xxxAdvance' in the sbit metric */
           /* structure isn't set, use `linearXXXAdvance'      */
           if ( !glyph->metrics.horiAdvance && glyph->linearHoriAdvance )
-            glyph->metrics.horiAdvance =
-              FT_MulFix( glyph->linearHoriAdvance,
-                         size->metrics->x_scale );
+            glyph->metrics.horiAdvance = FT_MulFix( glyph->linearHoriAdvance,
+                                                    x_scale );
           if ( !glyph->metrics.vertAdvance && glyph->linearVertAdvance )
-            glyph->metrics.vertAdvance =
-              FT_MulFix( glyph->linearVertAdvance,
-                         size->metrics->y_scale );
+            glyph->metrics.vertAdvance = FT_MulFix( glyph->linearVertAdvance,
+                                                    y_scale );
         }
 
         return FT_Err_Ok;
diff --git a/src/truetype/ttgload.h b/src/truetype/ttgload.h
index d237cfd..c117728 100644
--- a/src/truetype/ttgload.h
+++ b/src/truetype/ttgload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttgload.h                                                              */
-/*                                                                         */
-/*    TrueType Glyph Loader (specification).                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttgload.h
+ *
+ *   TrueType Glyph Loader (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTGLOAD_H_
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index b3e9ec7..3df50d6 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -1,42 +1,42 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttgxvar.c                                                              */
-/*                                                                         */
-/*    TrueType GX Font Variation loader                                    */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, Werner Lemberg, and George Williams.     */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttgxvar.c
+ *
+ *   TrueType GX Font Variation loader
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, Werner Lemberg, and George Williams.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Apple documents the `fvar', `gvar', `cvar', and `avar' tables at      */
-  /*                                                                       */
-  /*   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6[fgca]var.html */
-  /*                                                                       */
-  /* The documentation for `gvar' is not intelligible; `cvar' refers you   */
-  /* to `gvar' and is thus also incomprehensible.                          */
-  /*                                                                       */
-  /* The documentation for `avar' appears correct, but Apple has no fonts  */
-  /* with an `avar' table, so it is hard to test.                          */
-  /*                                                                       */
-  /* Many thanks to John Jenkins (at Apple) in figuring this out.          */
-  /*                                                                       */
-  /*                                                                       */
-  /* Apple's `kern' table has some references to tuple indices, but as     */
-  /* there is no indication where these indices are defined, nor how to    */
-  /* interpolate the kerning values (different tuples have different       */
-  /* classes) this issue is ignored.                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Apple documents the `fvar', `gvar', `cvar', and `avar' tables at
+   *
+   *   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6[fgca]var.html
+   *
+   * The documentation for `gvar' is not intelligible; `cvar' refers you
+   * to `gvar' and is thus also incomprehensible.
+   *
+   * The documentation for `avar' appears correct, but Apple has no fonts
+   * with an `avar' table, so it is hard to test.
+   *
+   * Many thanks to John Jenkins (at Apple) in figuring this out.
+   *
+   *
+   * Apple's `kern' table has some references to tuple indices, but as
+   * there is no indication where these indices are defined, nor how to
+   * interpolate the kerning values (different tuples have different
+   * classes) this issue is ignored.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -67,12 +67,23 @@
                         : (stream)->limit
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /* some macros we need */
+#define FT_FIXED_ONE  ( (FT_Fixed)0x10000 )
+
+#define FT_fdot14ToFixed( x )                \
+        ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
+#define FT_intToFixed( i )                    \
+        ( (FT_Fixed)( (FT_ULong)(i) << 16 ) )
+#define FT_fixedToInt( x )                                   \
+        ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
+
+
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttgxvar
 
@@ -86,12 +97,12 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro ALL_POINTS is used in `ft_var_readpackedpoints'.  It        */
-  /* indicates that there is a delta for every point without needing to    */
-  /* enumerate all of them.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro ALL_POINTS is used in `ft_var_readpackedpoints'.  It
+   * indicates that there is a delta for every point without needing to
+   * enumerate all of them.
+   */
 
   /* ensure that value `0' has the same width as a pointer */
 #define ALL_POINTS  (FT_UShort*)~(FT_PtrDist)0
@@ -101,29 +112,32 @@
 #define GX_PT_POINT_RUN_COUNT_MASK  0x7FU
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_readpackedpoints                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Read a set of points to which the following deltas will apply.     */
-  /*    Points are packed with a run length encoding.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream    :: The data stream.                                      */
-  /*                                                                       */
-  /*    size      :: The size of the table holding the data.               */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    point_cnt :: The number of points read.  A zero value means that   */
-  /*                 all points in the glyph will be affected, without     */
-  /*                 enumerating them individually.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    An array of FT_UShort containing the affected points or the        */
-  /*    special value ALL_POINTS.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_readpackedpoints
+   *
+   * @Description:
+   *   Read a set of points to which the following deltas will apply.
+   *   Points are packed with a run length encoding.
+   *
+   * @Input:
+   *   stream ::
+   *     The data stream.
+   *
+   *   size ::
+   *     The size of the table holding the data.
+   *
+   * @Output:
+   *   point_cnt ::
+   *     The number of points read.  A zero value means that
+   *     all points in the glyph will be affected, without
+   *     enumerating them individually.
+   *
+   * @Return:
+   *   An array of FT_UShort containing the affected points or the
+   *   special value ALL_POINTS.
+   */
   static FT_UShort*
   ft_var_readpackedpoints( FT_Stream  stream,
                            FT_ULong   size,
@@ -211,34 +225,41 @@
 #define GX_DT_DELTA_RUN_COUNT_MASK  0x3FU
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_readpackeddeltas                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Read a set of deltas.  These are packed slightly differently than  */
-  /*    points.  In particular there is no overall count.                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream    :: The data stream.                                      */
-  /*                                                                       */
-  /*    size      :: The size of the table holding the data.               */
-  /*                                                                       */
-  /*    delta_cnt :: The number of deltas to be read.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    An array of FT_Short containing the deltas for the affected        */
-  /*    points.  (This only gets the deltas for one dimension.  It will    */
-  /*    generally be called twice, once for x, once for y.  When used in   */
-  /*    cvt table, it will only be called once.)                           */
-  /*                                                                       */
-  static FT_Short*
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_readpackeddeltas
+   *
+   * @Description:
+   *   Read a set of deltas.  These are packed slightly differently than
+   *   points.  In particular there is no overall count.
+   *
+   * @Input:
+   *   stream ::
+   *     The data stream.
+   *
+   *   size ::
+   *     The size of the table holding the data.
+   *
+   *   delta_cnt ::
+   *     The number of deltas to be read.
+   *
+   * @Return:
+   *   An array of FT_Fixed containing the deltas for the affected
+   *   points.  (This only gets the deltas for one dimension.  It will
+   *   generally be called twice, once for x, once for y.  When used in
+   *   cvt table, it will only be called once.)
+   *
+   *   We use FT_Fixed to avoid accumulation errors while summing up all
+   *   deltas (the rounding to integer values happens as the very last
+   *   step).
+   */
+  static FT_Fixed*
   ft_var_readpackeddeltas( FT_Stream  stream,
                            FT_ULong   size,
                            FT_UInt    delta_cnt )
   {
-    FT_Short  *deltas = NULL;
+    FT_Fixed  *deltas = NULL;
     FT_UInt    runcnt, cnt;
     FT_UInt    i, j;
     FT_Memory  memory = stream->memory;
@@ -272,13 +293,13 @@
       {
         /* `runcnt' shorts from the stack */
         for ( j = 0; j <= cnt && i < delta_cnt; j++ )
-          deltas[i++] = FT_GET_SHORT();
+          deltas[i++] = FT_intToFixed( FT_GET_SHORT() );
       }
       else
       {
         /* `runcnt' signed bytes from the stack */
         for ( j = 0; j <= cnt && i < delta_cnt; j++ )
-          deltas[i++] = FT_GET_CHAR();
+          deltas[i++] = FT_intToFixed( FT_GET_CHAR() );
       }
 
       if ( j <= cnt )
@@ -293,18 +314,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_load_avar                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parse the `avar' table if present.  It need not be, so we return   */
-  /*    nothing.                                                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: The font face.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_load_avar
+   *
+   * @Description:
+   *   Parse the `avar' table if present.  It need not be, so we return
+   *   nothing.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   */
   static void
   ft_var_load_avar( TT_Face  face )
   {
@@ -394,17 +416,6 @@
   }
 
 
-  /* some macros we need */
-#define FT_FIXED_ONE  ( (FT_Fixed)0x10000 )
-
-#define FT_fdot14ToFixed( x )                \
-        ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
-#define FT_intToFixed( i )                    \
-        ( (FT_Fixed)( (FT_ULong)(i) << 16 ) )
-#define FT_fixedToInt( x )                                   \
-        ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
-
-
   static FT_Error
   ft_var_load_item_variation_store( TT_Face          face,
                                     FT_ULong         offset,
@@ -702,29 +713,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_load_hvvar                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    If `vertical' is zero, parse the `HVAR' table and set              */
-  /*    `blend->hvar_loaded' to TRUE.  On success, `blend->hvar_checked'   */
-  /*    is set to TRUE.                                                    */
-  /*                                                                       */
-  /*    If `vertical' is not zero, parse the `VVAR' table and set          */
-  /*    `blend->vvar_loaded' to TRUE.  On success, `blend->vvar_checked'   */
-  /*    is set to TRUE.                                                    */
-  /*                                                                       */
-  /*    Some memory may remain allocated on error; it is always freed in   */
-  /*    `tt_done_blend', however.                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: The font face.                                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_load_hvvar
+   *
+   * @Description:
+   *   If `vertical' is zero, parse the `HVAR' table and set
+   *   `blend->hvar_loaded' to TRUE.  On success, `blend->hvar_checked'
+   *   is set to TRUE.
+   *
+   *   If `vertical' is not zero, parse the `VVAR' table and set
+   *   `blend->vvar_loaded' to TRUE.  On success, `blend->vvar_checked'
+   *   is set to TRUE.
+   *
+   *   Some memory may remain allocated on error; it is always freed in
+   *   `tt_done_blend', however.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   ft_var_load_hvvar( TT_Face  face,
                      FT_Bool  vertical )
@@ -937,25 +949,29 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_hvadvance_adjust                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply `HVAR' advance width or `VVAR' advance height adjustment of  */
-  /*    a given glyph.                                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    gindex   :: The glyph index.                                       */
-  /*                                                                       */
-  /*    vertical :: If set, handle `VVAR' table.                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face     :: The font face.                                         */
-  /*                                                                       */
-  /*    adelta   :: Points to width or height value that gets modified.    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_hvadvance_adjust
+   *
+   * @Description:
+   *   Apply `HVAR' advance width or `VVAR' advance height adjustment of
+   *   a given glyph.
+   *
+   * @Input:
+   *   gindex ::
+   *     The glyph index.
+   *
+   *   vertical ::
+   *     If set, handle `VVAR' table.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   *
+   *   adelta ::
+   *     Points to width or height value that gets modified.
+   */
   static FT_Error
   tt_hvadvance_adjust( TT_Face  face,
                        FT_UInt  gindex,
@@ -1151,20 +1167,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_load_mvar                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parse the `MVAR' table.                                            */
-  /*                                                                       */
-  /*    Some memory may remain allocated on error; it is always freed in   */
-  /*    `tt_done_blend', however.                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: The font face.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_load_mvar
+   *
+   * @Description:
+   *   Parse the `MVAR' table.
+   *
+   *   Some memory may remain allocated on error; it is always freed in
+   *   `tt_done_blend', however.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   */
   static void
   ft_var_load_mvar( TT_Face  face )
   {
@@ -1297,17 +1314,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_apply_mvar                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply `MVAR' table adjustments.                                    */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: The font face.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_apply_mvar
+   *
+   * @Description:
+   *   Apply `MVAR' table adjustments.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   */
   FT_LOCAL_DEF( void )
   tt_apply_mvar( TT_Face  face )
   {
@@ -1400,21 +1418,22 @@
   } GX_GVar_Head;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_load_gvar                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parse the `gvar' table if present.  If `fvar' is there, `gvar' had */
-  /*    better be there too.                                               */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: The font face.                                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_load_gvar
+   *
+   * @Description:
+   *   Parse the `gvar' table if present.  If `fvar' is there, `gvar' had
+   *   better be there too.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   ft_var_load_gvar( TT_Face  face )
   {
@@ -1567,33 +1586,38 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_apply_tuple                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Figure out whether a given tuple (design) applies to the current   */
-  /*    blend, and if so, what is the scaling factor.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    blend           :: The current blend of the font.                  */
-  /*                                                                       */
-  /*    tupleIndex      :: A flag saying whether this is an intermediate   */
-  /*                       tuple or not.                                   */
-  /*                                                                       */
-  /*    tuple_coords    :: The coordinates of the tuple in normalized axis */
-  /*                       units.                                          */
-  /*                                                                       */
-  /*    im_start_coords :: The initial coordinates where this tuple starts */
-  /*                       to apply (for intermediate coordinates).        */
-  /*                                                                       */
-  /*    im_end_coords   :: The final coordinates after which this tuple no */
-  /*                       longer applies (for intermediate coordinates).  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    An FT_Fixed value containing the scaling factor.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_apply_tuple
+   *
+   * @Description:
+   *   Figure out whether a given tuple (design) applies to the current
+   *   blend, and if so, what is the scaling factor.
+   *
+   * @Input:
+   *   blend ::
+   *     The current blend of the font.
+   *
+   *   tupleIndex ::
+   *     A flag saying whether this is an intermediate
+   *     tuple or not.
+   *
+   *   tuple_coords ::
+   *     The coordinates of the tuple in normalized axis
+   *     units.
+   *
+   *   im_start_coords ::
+   *     The initial coordinates where this tuple starts
+   *     to apply (for intermediate coordinates).
+   *
+   *   im_end_coords ::
+   *     The final coordinates after which this tuple no
+   *     longer applies (for intermediate coordinates).
+   *
+   * @Return:
+   *   An FT_Fixed value containing the scaling factor.
+   */
   static FT_Fixed
   ft_var_apply_tuple( GX_Blend   blend,
                       FT_UShort  tupleIndex,
@@ -1756,11 +1780,11 @@
       }
 
       if ( coord < a->def )
-        normalized[i] = -FT_DivFix( coord - a->def,
-                                    a->minimum - a->def );
+        normalized[i] = -FT_DivFix( SUB_LONG( coord, a->def ),
+                                    SUB_LONG( a->minimum, a->def ) );
       else if ( coord > a->def )
-        normalized[i] = FT_DivFix( coord - a->def,
-                                   a->maximum - a->def );
+        normalized[i] = FT_DivFix( SUB_LONG( coord, a->def ),
+                                   SUB_LONG( a->maximum, a->def ) );
       else
         normalized[i] = 0;
     }
@@ -1910,27 +1934,29 @@
   } GX_FVar_Axis;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Get_MM_Var                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Check that the font's `fvar' table is valid, parse it, and return  */
-  /*    those data.  It also loads (and parses) the `MVAR' table, if       */
-  /*    possible.                                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: The font face.                                           */
-  /*              TT_Get_MM_Var initializes the blend structure.           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    master :: The `fvar' data (must be freed by caller).  Can be NULL, */
-  /*              which makes this function simply load MM support.        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Get_MM_Var
+   *
+   * @Description:
+   *   Check that the font's `fvar' table is valid, parse it, and return
+   *   those data.  It also loads (and parses) the `MVAR' table, if
+   *   possible.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   *     TT_Get_MM_Var initializes the blend structure.
+   *
+   * @Output:
+   *   master ::
+   *     The `fvar' data (must be freed by caller).  Can be NULL,
+   *     which makes this function simply load MM support.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Get_MM_Var( TT_Face      face,
                  FT_MM_Var*  *master )
@@ -2280,6 +2306,9 @@
                       psname ? "PS name: `" : "",
                       psname ? psname : "no PS name",
                       psname ? "'" : "" ));
+
+          FT_FREE( strname );
+          FT_FREE( psname );
         }
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
@@ -2504,11 +2533,14 @@
 
       if ( FT_IS_NAMED_INSTANCE( FT_FACE( face ) ) )
       {
-        FT_UInt  idx = (FT_UInt)face->root.face_index >> 16;
+        FT_UInt  instance_index = (FT_UInt)face->root.face_index >> 16;
 
 
         c = blend->normalizedcoords + i;
-        n = blend->normalized_stylecoords + idx * mmvar->num_axis + i;
+        n = blend->normalized_stylecoords            +
+            ( instance_index - 1 ) * mmvar->num_axis +
+            i;
+
         for ( j = i; j < mmvar->num_axis; j++, n++, c++ )
           if ( *c != *n )
             have_diff = 1;
@@ -2523,7 +2555,11 @@
 
       /* return value -1 indicates `no change' */
       if ( !have_diff )
+      {
+        face->doblend = TRUE;
+
         return -1;
+      }
 
       for ( ; i < mmvar->num_axis; i++ )
       {
@@ -2587,31 +2623,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Set_MM_Blend                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set the blend (normalized) coordinates for this instance of the    */
-  /*    font.  Check that the `gvar' table is reasonable and does some     */
-  /*    initial preparation.                                               */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The font.                                            */
-  /*                  Initialize the blend structure with `gvar' data.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available coordinates.  If it is       */
-  /*                  larger than the number of axes, ignore the excess    */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use the default value (0) for the remaining axes.    */
-  /*                                                                       */
-  /*    coords     :: An array of `num_coords', each between [-1,1].       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Set_MM_Blend
+   *
+   * @Description:
+   *   Set the blend (normalized) coordinates for this instance of the
+   *   font.  Check that the `gvar' table is reasonable and does some
+   *   initial preparation.
+   *
+   * @InOut:
+   *   face ::
+   *     The font.
+   *     Initialize the blend structure with `gvar' data.
+   *
+   * @Input:
+   *   num_coords ::
+   *     The number of available coordinates.  If it is
+   *     larger than the number of axes, ignore the excess
+   *     values.  If it is smaller than the number of axes,
+   *     use the default value (0) for the remaining axes.
+   *
+   *   coords ::
+   *     An array of `num_coords', each between [-1,1].
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Set_MM_Blend( TT_Face    face,
                    FT_UInt    num_coords,
@@ -2633,29 +2672,32 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Get_MM_Blend                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the blend (normalized) coordinates for this instance of the    */
-  /*    font.                                                              */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The font.                                            */
-  /*                  Initialize the blend structure with `gvar' data.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available coordinates.  If it is       */
-  /*                  larger than the number of axes, set the excess       */
-  /*                  values to 0.                                         */
-  /*                                                                       */
-  /*    coords     :: An array of `num_coords', each between [-1,1].       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Get_MM_Blend
+   *
+   * @Description:
+   *   Get the blend (normalized) coordinates for this instance of the
+   *   font.
+   *
+   * @InOut:
+   *   face ::
+   *     The font.
+   *     Initialize the blend structure with `gvar' data.
+   *
+   * @Input:
+   *   num_coords ::
+   *     The number of available coordinates.  If it is
+   *     larger than the number of axes, set the excess
+   *     values to 0.
+   *
+   *   coords ::
+   *     An array of `num_coords', each between [-1,1].
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Get_MM_Blend( TT_Face    face,
                    FT_UInt    num_coords,
@@ -2709,31 +2751,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Set_Var_Design                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set the coordinates for the instance, measured in the user         */
-  /*    coordinate system.  Parse the `avar' table (if present) to convert */
-  /*    from user to normalized coordinates.                               */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The font face.                                       */
-  /*                  Initialize the blend struct with `gvar' data.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available coordinates.  If it is       */
-  /*                  larger than the number of axes, ignore the excess    */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use the default values for the remaining axes.       */
-  /*                                                                       */
-  /*    coords     :: A coordinate array with `num_coords' elements.       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Set_Var_Design
+   *
+   * @Description:
+   *   Set the coordinates for the instance, measured in the user
+   *   coordinate system.  Parse the `avar' table (if present) to convert
+   *   from user to normalized coordinates.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   *     Initialize the blend struct with `gvar' data.
+   *
+   * @Input:
+   *   num_coords ::
+   *     The number of available coordinates.  If it is
+   *     larger than the number of axes, ignore the excess
+   *     values.  If it is smaller than the number of axes,
+   *     use the default values for the remaining axes.
+   *
+   *   coords ::
+   *     A coordinate array with `num_coords' elements.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Set_Var_Design( TT_Face    face,
                      FT_UInt    num_coords,
@@ -2851,28 +2896,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Get_Var_Design                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the design coordinates of the currently selected interpolated  */
-  /*    font.                                                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /*    num_coords :: The number of design coordinates to retrieve.  If it */
-  /*                  is larger than the number of axes, set the excess    */
-  /*                  values to~0.                                         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    coords     :: The design coordinates array.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Get_Var_Design
+   *
+   * @Description:
+   *   Get the design coordinates of the currently selected interpolated
+   *   font.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   num_coords ::
+   *     The number of design coordinates to retrieve.  If it
+   *     is larger than the number of axes, set the excess
+   *     values to~0.
+   *
+   * @Output:
+   *   coords ::
+   *     The design coordinates array.
+   *
+   * @Return:
+   *   FreeType error code.  0~means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Get_Var_Design( TT_Face    face,
                      FT_UInt    num_coords,
@@ -2926,24 +2974,26 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Set_Named_Instance                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set the given named instance, also resetting any further           */
-  /*    variation.                                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face           :: A handle to the source face.                     */
-  /*                                                                       */
-  /*    instance_index :: The instance index, starting with value 1.       */
-  /*                      Value 0 indicates to not use an instance.        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Set_Named_Instance
+   *
+   * @Description:
+   *   Set the given named instance, also resetting any further
+   *   variation.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   instance_index ::
+   *     The instance index, starting with value 1.
+   *     Value 0 indicates to not use an instance.
+   *
+   * @Return:
+   *   FreeType error code.  0~means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Set_Named_Instance( TT_Face  face,
                          FT_UInt  instance_index )
@@ -3019,48 +3069,60 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_vary_cvt                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Modify the loaded cvt table according to the `cvar' table and the  */
-  /*    font's blend.                                                      */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /*    Most errors are ignored.  It is perfectly valid not to have a      */
-  /*    `cvar' table even if there is a `gvar' and `fvar' table.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_vary_cvt
+   *
+   * @Description:
+   *   Modify the loaded cvt table according to the `cvar' table and the
+   *   font's blend.
+   *
+   * @InOut:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   * @Input:
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   *
+   *   Most errors are ignored.  It is perfectly valid not to have a
+   *   `cvar' table even if there is a `gvar' and `fvar' table.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_vary_cvt( TT_Face    face,
                     FT_Stream  stream )
   {
-    FT_Error    error;
-    FT_Memory   memory = stream->memory;
-    FT_ULong    table_start;
-    FT_ULong    table_len;
-    FT_UInt     tupleCount;
-    FT_ULong    offsetToData;
-    FT_ULong    here;
-    FT_UInt     i, j;
-    FT_Fixed*   tuple_coords    = NULL;
-    FT_Fixed*   im_start_coords = NULL;
-    FT_Fixed*   im_end_coords   = NULL;
-    GX_Blend    blend           = face->blend;
-    FT_UInt     point_count, spoint_count = 0;
+    FT_Error   error;
+    FT_Memory  memory = stream->memory;
+
+    FT_ULong  table_start;
+    FT_ULong  table_len;
+
+    FT_UInt   tupleCount;
+    FT_ULong  offsetToData;
+
+    FT_ULong  here;
+    FT_UInt   i, j;
+
+    FT_Fixed*  tuple_coords    = NULL;
+    FT_Fixed*  im_start_coords = NULL;
+    FT_Fixed*  im_end_coords   = NULL;
+
+    GX_Blend  blend = face->blend;
+
+    FT_UInt  point_count;
+    FT_UInt  spoint_count = 0;
+
     FT_UShort*  sharedpoints = NULL;
     FT_UShort*  localpoints  = NULL;
     FT_UShort*  points;
-    FT_Short*   deltas;
+
+    FT_Fixed*  deltas     = NULL;
+    FT_Fixed*  cvt_deltas = NULL;
 
 
     FT_TRACE2(( "CVAR " ));
@@ -3147,6 +3209,9 @@
                 tupleCount & 0xFFF,
                 ( tupleCount & 0xFFF ) == 1 ? "" : "s" ));
 
+    if ( FT_NEW_ARRAY( cvt_deltas, face->cvt_size ) )
+      goto FExit;
+
     for ( i = 0; i < ( tupleCount & 0xFFF ); i++ )
     {
       FT_UInt   tupleDataSize;
@@ -3238,17 +3303,21 @@
         /* this means that there are deltas for every entry in cvt */
         for ( j = 0; j < face->cvt_size; j++ )
         {
-          FT_Long  orig_cvt = face->cvt[j];
+          FT_Fixed  old_cvt_delta;
 
 
-          face->cvt[j] = (FT_Short)( orig_cvt +
-                                     FT_MulFix( deltas[j], apply ) );
+          old_cvt_delta = cvt_deltas[j];
+          cvt_deltas[j] = old_cvt_delta + FT_MulFix( deltas[j], apply );
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-          if ( orig_cvt != face->cvt[j] )
+          if ( old_cvt_delta != cvt_deltas[j] )
           {
-            FT_TRACE7(( "      %d: %d -> %d\n",
-                        j, orig_cvt, face->cvt[j] ));
+            FT_TRACE7(( "      %d: %f -> %f\n",
+                        j,
+                        ( FT_intToFixed( face->cvt[j] ) +
+                          old_cvt_delta ) / 65536.0,
+                        ( FT_intToFixed( face->cvt[j] ) +
+                          cvt_deltas[j] ) / 65536.0 ));
             count++;
           }
 #endif
@@ -3271,23 +3340,26 @@
 
         for ( j = 0; j < point_count; j++ )
         {
-          int      pindex;
-          FT_Long  orig_cvt;
+          int       pindex;
+          FT_Fixed  old_cvt_delta;
 
 
           pindex = points[j];
           if ( (FT_ULong)pindex >= face->cvt_size )
             continue;
 
-          orig_cvt          = face->cvt[pindex];
-          face->cvt[pindex] = (FT_Short)( orig_cvt +
-                                          FT_MulFix( deltas[j], apply ) );
+          old_cvt_delta      = cvt_deltas[pindex];
+          cvt_deltas[pindex] = old_cvt_delta + FT_MulFix( deltas[j], apply );
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-          if ( orig_cvt != face->cvt[pindex] )
+          if ( old_cvt_delta != cvt_deltas[pindex] )
           {
-            FT_TRACE7(( "      %d: %d -> %d\n",
-                        pindex, orig_cvt, face->cvt[pindex] ));
+            FT_TRACE7(( "      %d: %f -> %f\n",
+                        pindex,
+                        ( FT_intToFixed( face->cvt[pindex] ) +
+                          old_cvt_delta ) / 65536.0,
+                        ( FT_intToFixed( face->cvt[pindex] ) +
+                          cvt_deltas[pindex] ) / 65536.0 ));
             count++;
           }
 #endif
@@ -3310,6 +3382,9 @@
 
     FT_TRACE5(( "\n" ));
 
+    for ( i = 0; i < face->cvt_size; i++ )
+      face->cvt[i] += FT_fixedToInt( cvt_deltas[i] );
+
   FExit:
     FT_FRAME_EXIT();
 
@@ -3319,6 +3394,7 @@
     FT_FREE( tuple_coords );
     FT_FREE( im_start_coords );
     FT_FREE( im_end_coords );
+    FT_FREE( cvt_deltas );
 
     return error;
   }
@@ -3525,56 +3601,71 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Vary_Apply_Glyph_Deltas                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply the appropriate deltas to the current glyph.                 */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: A handle to the target face object.                 */
-  /*                                                                       */
-  /*    glyph_index :: The index of the glyph being modified.              */
-  /*                                                                       */
-  /*    n_points    :: The number of the points in the glyph, including    */
-  /*                   phantom points.                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    outline     :: The outline to change.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Vary_Apply_Glyph_Deltas
+   *
+   * @Description:
+   *   Apply the appropriate deltas to the current glyph.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   glyph_index ::
+   *     The index of the glyph being modified.
+   *
+   *   n_points ::
+   *     The number of the points in the glyph, including
+   *     phantom points.
+   *
+   * @InOut:
+   *   outline ::
+   *     The outline to change.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Vary_Apply_Glyph_Deltas( TT_Face      face,
                               FT_UInt      glyph_index,
                               FT_Outline*  outline,
                               FT_UInt      n_points )
   {
-    FT_Stream   stream = face->root.stream;
-    FT_Memory   memory = stream->memory;
-    GX_Blend    blend  = face->blend;
+    FT_Error   error;
+    FT_Stream  stream = face->root.stream;
+    FT_Memory  memory = stream->memory;
 
-    FT_Vector*  points_org = NULL;
-    FT_Vector*  points_out = NULL;
+    FT_Vector*  points_org = NULL;  /* coordinates in 16.16 format */
+    FT_Vector*  points_out = NULL;  /* coordinates in 16.16 format */
     FT_Bool*    has_delta  = NULL;
 
-    FT_Error    error;
-    FT_ULong    glyph_start;
-    FT_UInt     tupleCount;
-    FT_ULong    offsetToData;
-    FT_ULong    here;
-    FT_UInt     i, j;
-    FT_Fixed*   tuple_coords    = NULL;
-    FT_Fixed*   im_start_coords = NULL;
-    FT_Fixed*   im_end_coords   = NULL;
-    FT_UInt     point_count, spoint_count = 0;
+    FT_ULong  glyph_start;
+
+    FT_UInt   tupleCount;
+    FT_ULong  offsetToData;
+
+    FT_ULong  here;
+    FT_UInt   i, j;
+
+    FT_Fixed*  tuple_coords    = NULL;
+    FT_Fixed*  im_start_coords = NULL;
+    FT_Fixed*  im_end_coords   = NULL;
+
+    GX_Blend  blend = face->blend;
+
+    FT_UInt  point_count;
+    FT_UInt  spoint_count = 0;
+
     FT_UShort*  sharedpoints = NULL;
     FT_UShort*  localpoints  = NULL;
     FT_UShort*  points;
-    FT_Short    *deltas_x, *deltas_y;
+
+    FT_Fixed*  deltas_x       = NULL;
+    FT_Fixed*  deltas_y       = NULL;
+    FT_Fixed*  point_deltas_x = NULL;
+    FT_Fixed*  point_deltas_y = NULL;
 
 
     if ( !face->doblend || !blend )
@@ -3643,8 +3734,15 @@
                 tupleCount & GX_TC_TUPLE_COUNT_MASK,
                 ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) == 1 ? "" : "s" ));
 
+    if ( FT_NEW_ARRAY( point_deltas_x, n_points ) ||
+         FT_NEW_ARRAY( point_deltas_y, n_points ) )
+      goto Fail3;
+
     for ( j = 0; j < n_points; j++ )
-      points_org[j] = outline->points[j];
+    {
+      points_org[j].x = FT_intToFixed( outline->points[j].x );
+      points_org[j].y = FT_intToFixed( outline->points[j].y );
+    }
 
     for ( i = 0; i < ( tupleCount & GX_TC_TUPLE_COUNT_MASK ); i++ )
     {
@@ -3670,7 +3768,7 @@
                     " invalid tuple index\n" ));
 
         error = FT_THROW( Invalid_Table );
-        goto Fail2;
+        goto Fail3;
       }
       else
         FT_MEM_COPY(
@@ -3739,14 +3837,17 @@
         /* this means that there are deltas for every point in the glyph */
         for ( j = 0; j < n_points; j++ )
         {
-          FT_Pos  delta_x = FT_MulFix( deltas_x[j], apply );
-          FT_Pos  delta_y = FT_MulFix( deltas_y[j], apply );
+          FT_Fixed  old_point_delta_x = point_deltas_x[j];
+          FT_Fixed  old_point_delta_y = point_deltas_y[j];
+
+          FT_Fixed  point_delta_x = FT_MulFix( deltas_x[j], apply );
+          FT_Fixed  point_delta_y = FT_MulFix( deltas_y[j], apply );
 
 
           if ( j < n_points - 4 )
           {
-            outline->points[j].x += delta_x;
-            outline->points[j].y += delta_y;
+            point_deltas_x[j] = old_point_delta_x + point_delta_x;
+            point_deltas_y[j] = old_point_delta_y + point_delta_y;
           }
           else
           {
@@ -3756,33 +3857,37 @@
             if ( j == ( n_points - 4 )        &&
                  !( face->variation_support &
                     TT_FACE_FLAG_VAR_LSB    ) )
-              outline->points[j].x += delta_x;
+              point_deltas_x[j] = old_point_delta_x + point_delta_x;
 
             else if ( j == ( n_points - 3 )          &&
                       !( face->variation_support   &
                          TT_FACE_FLAG_VAR_HADVANCE ) )
-              outline->points[j].x += delta_x;
+              point_deltas_x[j] = old_point_delta_x + point_delta_x;
 
             else if ( j == ( n_points - 2 )        &&
                       !( face->variation_support &
                          TT_FACE_FLAG_VAR_TSB    ) )
-              outline->points[j].y += delta_y;
+              point_deltas_y[j] = old_point_delta_y + point_delta_y;
 
             else if ( j == ( n_points - 1 )          &&
                       !( face->variation_support   &
                          TT_FACE_FLAG_VAR_VADVANCE ) )
-              outline->points[j].y += delta_y;
+              point_deltas_y[j] = old_point_delta_y + point_delta_y;
           }
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-          if ( delta_x || delta_y )
+          if ( point_delta_x || point_delta_y )
           {
-            FT_TRACE7(( "      %d: (%d, %d) -> (%d, %d)\n",
+            FT_TRACE7(( "      %d: (%f, %f) -> (%f, %f)\n",
                         j,
-                        outline->points[j].x - delta_x,
-                        outline->points[j].y - delta_y,
-                        outline->points[j].x,
-                        outline->points[j].y ));
+                        ( FT_intToFixed( outline->points[j].x ) +
+                          old_point_delta_x ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].y ) +
+                          old_point_delta_y ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].x ) +
+                          point_deltas_x[j] ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].y ) +
+                          point_deltas_y[j] ) / 65536.0 ));
             count++;
           }
 #endif
@@ -3834,14 +3939,17 @@
 
         for ( j = 0; j < n_points; j++ )
         {
-          FT_Pos  delta_x = points_out[j].x - points_org[j].x;
-          FT_Pos  delta_y = points_out[j].y - points_org[j].y;
+          FT_Fixed  old_point_delta_x = point_deltas_x[j];
+          FT_Fixed  old_point_delta_y = point_deltas_y[j];
+
+          FT_Pos  point_delta_x = points_out[j].x - points_org[j].x;
+          FT_Pos  point_delta_y = points_out[j].y - points_org[j].y;
 
 
           if ( j < n_points - 4 )
           {
-            outline->points[j].x += delta_x;
-            outline->points[j].y += delta_y;
+            point_deltas_x[j] = old_point_delta_x + point_delta_x;
+            point_deltas_y[j] = old_point_delta_y + point_delta_y;
           }
           else
           {
@@ -3851,33 +3959,37 @@
             if ( j == ( n_points - 4 )        &&
                  !( face->variation_support &
                     TT_FACE_FLAG_VAR_LSB    ) )
-              outline->points[j].x += delta_x;
+              point_deltas_x[j] = old_point_delta_x + point_delta_x;
 
             else if ( j == ( n_points - 3 )          &&
                       !( face->variation_support   &
                          TT_FACE_FLAG_VAR_HADVANCE ) )
-              outline->points[j].x += delta_x;
+              point_deltas_x[j] = old_point_delta_x + point_delta_x;
 
             else if ( j == ( n_points - 2 )        &&
                       !( face->variation_support &
                          TT_FACE_FLAG_VAR_TSB    ) )
-              outline->points[j].y += delta_y;
+              point_deltas_y[j] = old_point_delta_y + point_delta_y;
 
             else if ( j == ( n_points - 1 )          &&
                       !( face->variation_support   &
                          TT_FACE_FLAG_VAR_VADVANCE ) )
-              outline->points[j].y += delta_y;
+              point_deltas_y[j] = old_point_delta_y + point_delta_y;
           }
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-          if ( delta_x || delta_y )
+          if ( point_delta_x || point_delta_y )
           {
-            FT_TRACE7(( "      %d: (%d, %d) -> (%d, %d)\n",
+            FT_TRACE7(( "      %d: (%f, %f) -> (%f, %f)\n",
                         j,
-                        outline->points[j].x - delta_x,
-                        outline->points[j].y - delta_y,
-                        outline->points[j].x,
-                        outline->points[j].y ));
+                        ( FT_intToFixed( outline->points[j].x ) +
+                          old_point_delta_x ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].y ) +
+                          old_point_delta_y ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].x ) +
+                          point_deltas_x[j] ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].y ) +
+                          point_deltas_y[j] ) / 65536.0 ));
             count++;
           }
 #endif
@@ -3901,6 +4013,16 @@
 
     FT_TRACE5(( "\n" ));
 
+    for ( i = 0; i < n_points; i++ )
+    {
+      outline->points[i].x += FT_fixedToInt( point_deltas_x[i] );
+      outline->points[i].y += FT_fixedToInt( point_deltas_y[i] );
+    }
+
+  Fail3:
+    FT_FREE( point_deltas_x );
+    FT_FREE( point_deltas_y );
+
   Fail2:
     if ( sharedpoints != ALL_POINTS )
       FT_FREE( sharedpoints );
@@ -3919,16 +4041,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_get_var_blend                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An extended internal version of `TT_Get_MM_Blend' that returns     */
-  /*    pointers instead of copying data, without any initialization of    */
-  /*    the MM machinery in case it isn't loaded yet.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_get_var_blend
+   *
+   * @Description:
+   *   An extended internal version of `TT_Get_MM_Blend' that returns
+   *   pointers instead of copying data, without any initialization of
+   *   the MM machinery in case it isn't loaded yet.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_get_var_blend( TT_Face      face,
                     FT_UInt     *num_coords,
@@ -3990,14 +4112,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_done_blend                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Free the blend internal data structure.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_done_blend
+   *
+   * @Description:
+   *   Free the blend internal data structure.
+   */
   FT_LOCAL_DEF( void )
   tt_done_blend( TT_Face  face )
   {
diff --git a/src/truetype/ttgxvar.h b/src/truetype/ttgxvar.h
index a37bb90..bdc09d1 100644
--- a/src/truetype/ttgxvar.h
+++ b/src/truetype/ttgxvar.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttgxvar.h                                                              */
-/*                                                                         */
-/*    TrueType GX Font Variation loader (specification)                    */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, Werner Lemberg and George Williams.      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttgxvar.h
+ *
+ *   TrueType GX Font Variation loader (specification)
+ *
+ * Copyright 2004-2018 by
+ * David Turner, Robert Wilhelm, Werner Lemberg and George Williams.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTGXVAR_H_
@@ -29,15 +29,15 @@
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_AVarCorrespondenceRec                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A data structure representing `shortFracCorrespondence' in `avar'  */
-  /*    table according to the specifications from Apple.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   GX_AVarCorrespondenceRec
+   *
+   * @Description:
+   *   A data structure representing `shortFracCorrespondence' in `avar'
+   *   table according to the specifications from Apple.
+   */
   typedef struct  GX_AVarCorrespondenceRec_
   {
     FT_Fixed  fromCoord;
@@ -46,15 +46,15 @@
   } GX_AVarCorrespondenceRec_, *GX_AVarCorrespondence;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_AVarRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Data from the segment field of `avar' table.                       */
-  /*    There is one of these for each axis.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   GX_AVarRec
+   *
+   * @Description:
+   *   Data from the segment field of `avar' table.
+   *   There is one of these for each axis.
+   */
   typedef struct  GX_AVarSegmentRec_
   {
     FT_UShort              pairCount;
@@ -114,14 +114,14 @@
   } GX_DeltaSetIdxMapRec, *GX_DeltaSetIdxMap;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_HVVarTableRec                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Data from either the `HVAR' or `VVAR' table.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   GX_HVVarTableRec
+   *
+   * @Description:
+   *   Data from either the `HVAR' or `VVAR' table.
+   */
   typedef struct  GX_HVVarTableRec_
   {
     GX_ItemVarStoreRec    itemStore;        /* Item Variation Store  */
@@ -191,14 +191,14 @@
   } GX_ValueRec, *GX_Value;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_MVarTableRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Data from the `MVAR' table.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   GX_MVarTableRec
+   *
+   * @Description:
+   *   Data from the `MVAR' table.
+   */
   typedef struct  GX_MVarTableRec_
   {
     FT_UShort  valueCount;
@@ -209,95 +209,95 @@
   } GX_MVarTableRec, *GX_MVarTable;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_BlendRec                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Data for interpolating a font from a distortable font specified    */
-  /*    by the GX *var tables ([fgcahvm]var).                              */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_axis ::                                                        */
-  /*      The number of axes along which interpolation may happen.         */
-  /*                                                                       */
-  /*    coords ::                                                          */
-  /*      An array of design coordinates (in user space) indicating the    */
-  /*      contribution along each axis to the final interpolated font.     */
-  /*      `normalizedcoords' holds the same values.                        */
-  /*                                                                       */
-  /*    normalizedcoords ::                                                */
-  /*      An array of normalized values (between [-1,1]) indicating the    */
-  /*      contribution along each axis to the final interpolated font.     */
-  /*      `coords' holds the same values.                                  */
-  /*                                                                       */
-  /*    mmvar ::                                                           */
-  /*      Data from the `fvar' table.                                      */
-  /*                                                                       */
-  /*    mmvar_len ::                                                       */
-  /*      The length of the `mmvar' structure.                             */
-  /*                                                                       */
-  /*    normalized_stylecoords ::                                          */
-  /*      A two-dimensional array that holds the named instance data from  */
-  /*      `mmvar' as normalized values.                                    */
-  /*                                                                       */
-  /*    avar_loaded ::                                                     */
-  /*      A Boolean; if set, FreeType tried to load (and parse) the `avar' */
-  /*      table.                                                           */
-  /*                                                                       */
-  /*    avar_segment ::                                                    */
-  /*      Data from the `avar' table.                                      */
-  /*                                                                       */
-  /*    hvar_loaded ::                                                     */
-  /*      A Boolean; if set, FreeType tried to load (and parse) the `hvar' */
-  /*      table.                                                           */
-  /*                                                                       */
-  /*    hvar_checked ::                                                    */
-  /*      A Boolean; if set, FreeType successfully loaded and parsed the   */
-  /*      `hvar' table.                                                    */
-  /*                                                                       */
-  /*    hvar_error ::                                                      */
-  /*      If loading and parsing of the `hvar' table failed, this field    */
-  /*      holds the corresponding error code.                              */
-  /*                                                                       */
-  /*    hvar_table ::                                                      */
-  /*      Data from the `hvar' table.                                      */
-  /*                                                                       */
-  /*    vvar_loaded ::                                                     */
-  /*      A Boolean; if set, FreeType tried to load (and parse) the `vvar' */
-  /*      table.                                                           */
-  /*                                                                       */
-  /*    vvar_checked ::                                                    */
-  /*      A Boolean; if set, FreeType successfully loaded and parsed the   */
-  /*      `vvar' table.                                                    */
-  /*                                                                       */
-  /*    vvar_error ::                                                      */
-  /*      If loading and parsing of the `vvar' table failed, this field    */
-  /*      holds the corresponding error code.                              */
-  /*                                                                       */
-  /*    vvar_table ::                                                      */
-  /*      Data from the `vvar' table.                                      */
-  /*                                                                       */
-  /*    mvar_table ::                                                      */
-  /*      Data from the `mvar' table.                                      */
-  /*                                                                       */
-  /*    tuplecount ::                                                      */
-  /*      The number of shared tuples in the `gvar' table.                 */
-  /*                                                                       */
-  /*    tuplecoords ::                                                     */
-  /*      A two-dimensional array that holds the shared tuple coordinates  */
-  /*      in the `gvar' table.                                             */
-  /*                                                                       */
-  /*    gv_glyphcnt ::                                                     */
-  /*      The number of glyphs handled in the `gvar' table.                */
-  /*                                                                       */
-  /*    glyphoffsets ::                                                    */
-  /*      Offsets into the glyph variation data array.                     */
-  /*                                                                       */
-  /*    gvar_size ::                                                       */
-  /*      The size of the `gvar' table.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   GX_BlendRec
+   *
+   * @Description:
+   *   Data for interpolating a font from a distortable font specified
+   *   by the GX *var tables ([fgcahvm]var).
+   *
+   * @Fields:
+   *   num_axis ::
+   *     The number of axes along which interpolation may happen.
+   *
+   *   coords ::
+   *     An array of design coordinates (in user space) indicating the
+   *     contribution along each axis to the final interpolated font.
+   *     `normalizedcoords' holds the same values.
+   *
+   *   normalizedcoords ::
+   *     An array of normalized values (between [-1,1]) indicating the
+   *     contribution along each axis to the final interpolated font.
+   *     `coords' holds the same values.
+   *
+   *   mmvar ::
+   *     Data from the `fvar' table.
+   *
+   *   mmvar_len ::
+   *     The length of the `mmvar' structure.
+   *
+   *   normalized_stylecoords ::
+   *     A two-dimensional array that holds the named instance data from
+   *     `mmvar' as normalized values.
+   *
+   *   avar_loaded ::
+   *     A Boolean; if set, FreeType tried to load (and parse) the `avar'
+   *     table.
+   *
+   *   avar_segment ::
+   *     Data from the `avar' table.
+   *
+   *   hvar_loaded ::
+   *     A Boolean; if set, FreeType tried to load (and parse) the `hvar'
+   *     table.
+   *
+   *   hvar_checked ::
+   *     A Boolean; if set, FreeType successfully loaded and parsed the
+   *     `hvar' table.
+   *
+   *   hvar_error ::
+   *     If loading and parsing of the `hvar' table failed, this field
+   *     holds the corresponding error code.
+   *
+   *   hvar_table ::
+   *     Data from the `hvar' table.
+   *
+   *   vvar_loaded ::
+   *     A Boolean; if set, FreeType tried to load (and parse) the `vvar'
+   *     table.
+   *
+   *   vvar_checked ::
+   *     A Boolean; if set, FreeType successfully loaded and parsed the
+   *     `vvar' table.
+   *
+   *   vvar_error ::
+   *     If loading and parsing of the `vvar' table failed, this field
+   *     holds the corresponding error code.
+   *
+   *   vvar_table ::
+   *     Data from the `vvar' table.
+   *
+   *   mvar_table ::
+   *     Data from the `mvar' table.
+   *
+   *   tuplecount ::
+   *     The number of shared tuples in the `gvar' table.
+   *
+   *   tuplecoords ::
+   *     A two-dimensional array that holds the shared tuple coordinates
+   *     in the `gvar' table.
+   *
+   *   gv_glyphcnt ::
+   *     The number of glyphs handled in the `gvar' table.
+   *
+   *   glyphoffsets ::
+   *     Offsets into the glyph variation data array.
+   *
+   *   gvar_size ::
+   *     The size of the `gvar' table.
+   */
   typedef struct  GX_BlendRec_
   {
     FT_UInt         num_axis;
@@ -336,14 +336,14 @@
   } GX_BlendRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <enum>                                                                */
-  /*    GX_TupleCountFlags                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Flags used within the `TupleCount' field of the `gvar' table.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   GX_TupleCountFlags
+   *
+   * @Description:
+   *   Flags used within the `TupleCount' field of the `gvar' table.
+   */
   typedef enum  GX_TupleCountFlags_
   {
     GX_TC_TUPLES_SHARE_POINT_NUMBERS = 0x8000,
@@ -353,15 +353,15 @@
   } GX_TupleCountFlags;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <enum>                                                                */
-  /*    GX_TupleIndexFlags                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Flags used within the `TupleIndex' field of the `gvar' and `cvar'  */
-  /*    tables.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   GX_TupleIndexFlags
+   *
+   * @Description:
+   *   Flags used within the `TupleIndex' field of the `gvar' and `cvar'
+   *   tables.
+   */
   typedef enum  GX_TupleIndexFlags_
   {
     GX_TI_EMBEDDED_TUPLE_COORD  = 0x8000,
diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index 551f14a..35aa399 100644
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttinterp.c                                                             */
-/*                                                                         */
-/*    TrueType bytecode interpreter (body).                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttinterp.c
+ *
+ *   TrueType bytecode interpreter (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 /* Greg Hitchcock from Microsoft has helped a lot in resolving unclear */
@@ -39,12 +39,12 @@
 #ifdef TT_USE_BYTECODE_INTERPRETER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttinterp
 
@@ -82,10 +82,10 @@
           exc->func_dualproj( exc, (v)->x, (v)->y )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Two simple bounds-checking macros.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Two simple bounds-checking macros.
+   */
 #define BOUNDS( x, n )   ( (FT_UInt)(x)  >= (FT_UInt)(n)  )
 #define BOUNDSL( x, n )  ( (FT_ULong)(x) >= (FT_ULong)(n) )
 
@@ -97,30 +97,33 @@
 #define FAILURE  1
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                        CODERANGE FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                       CODERANGE FUNCTIONS
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Goto_CodeRange                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Switches to a new code range (updates the code related elements in */
-  /*    `exec', and `IP').                                                 */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    range :: The new execution code range.                             */
-  /*                                                                       */
-  /*    IP    :: The new IP in the new code range.                         */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    exec  :: The target execution context.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Goto_CodeRange
+   *
+   * @Description:
+   *   Switches to a new code range (updates the code related elements in
+   *   `exec', and `IP').
+   *
+   * @Input:
+   *   range ::
+   *     The new execution code range.
+   *
+   *   IP ::
+   *     The new IP in the new code range.
+   *
+   * @InOut:
+   *   exec ::
+   *     The target execution context.
+   */
   FT_LOCAL_DEF( void )
   TT_Goto_CodeRange( TT_ExecContext  exec,
                      FT_Int          range,
@@ -148,24 +151,28 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Set_CodeRange                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Sets a code range.                                                 */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    range  :: The code range index.                                    */
-  /*                                                                       */
-  /*    base   :: The new code base.                                       */
-  /*                                                                       */
-  /*    length :: The range size in bytes.                                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    exec   :: The target execution context.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Set_CodeRange
+   *
+   * @Description:
+   *   Sets a code range.
+   *
+   * @Input:
+   *   range ::
+   *     The code range index.
+   *
+   *   base ::
+   *     The new code base.
+   *
+   *   length ::
+   *     The range size in bytes.
+   *
+   * @InOut:
+   *   exec ::
+   *     The target execution context.
+   */
   FT_LOCAL_DEF( void )
   TT_Set_CodeRange( TT_ExecContext  exec,
                     FT_Int          range,
@@ -179,20 +186,22 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Clear_CodeRange                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Clears a code range.                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    range :: The code range index.                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    exec  :: The target execution context.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Clear_CodeRange
+   *
+   * @Description:
+   *   Clears a code range.
+   *
+   * @Input:
+   *   range ::
+   *     The code range index.
+   *
+   * @InOut:
+   *   exec ::
+   *     The target execution context.
+   */
   FT_LOCAL_DEF( void )
   TT_Clear_CodeRange( TT_ExecContext  exec,
                       FT_Int          range )
@@ -204,29 +213,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                   EXECUTION CONTEXT ROUTINES                          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                  EXECUTION CONTEXT ROUTINES
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Done_Context                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroys a given context.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    exec   :: A handle to the target execution context.                */
-  /*                                                                       */
-  /*    memory :: A handle to the parent memory object.                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only the glyph loader and debugger should call this function.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Done_Context
+   *
+   * @Description:
+   *   Destroys a given context.
+   *
+   * @Input:
+   *   exec ::
+   *     A handle to the target execution context.
+   *
+   *   memory ::
+   *     A handle to the parent memory object.
+   *
+   * @Note:
+   *   Only the glyph loader and debugger should call this function.
+   */
   FT_LOCAL_DEF( void )
   TT_Done_Context( TT_ExecContext  exec )
   {
@@ -257,23 +268,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Init_Context                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a context object.                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory :: A handle to the parent memory object.                    */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    exec   :: A handle to the target execution context.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Init_Context
+   *
+   * @Description:
+   *   Initializes a context object.
+   *
+   * @Input:
+   *   memory ::
+   *     A handle to the parent memory object.
+   *
+   * @InOut:
+   *   exec ::
+   *     A handle to the target execution context.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   Init_Context( TT_ExecContext  exec,
                 FT_Memory       memory )
@@ -313,30 +326,35 @@
  }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Update_Max                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Checks the size of a buffer and reallocates it if necessary.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory     :: A handle to the parent memory object.                */
-  /*                                                                       */
-  /*    multiplier :: The size in bytes of each element in the buffer.     */
-  /*                                                                       */
-  /*    new_max    :: The new capacity (size) of the buffer.               */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    size       :: The address of the buffer's current size expressed   */
-  /*                  in elements.                                         */
-  /*                                                                       */
-  /*    buff       :: The address of the buffer base pointer.              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Update_Max
+   *
+   * @Description:
+   *   Checks the size of a buffer and reallocates it if necessary.
+   *
+   * @Input:
+   *   memory ::
+   *     A handle to the parent memory object.
+   *
+   *   multiplier ::
+   *     The size in bytes of each element in the buffer.
+   *
+   *   new_max ::
+   *     The new capacity (size) of the buffer.
+   *
+   * @InOut:
+   *   size ::
+   *     The address of the buffer's current size expressed
+   *     in elements.
+   *
+   *   buff ::
+   *     The address of the buffer base pointer.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   Update_Max( FT_Memory  memory,
               FT_ULong*  size,
@@ -359,28 +377,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Load_Context                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Prepare an execution context for glyph hinting.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the source face object.                        */
-  /*                                                                       */
-  /*    size :: A handle to the source size object.                        */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    exec :: A handle to the target execution context.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only the glyph loader and debugger should call this function.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Load_Context
+   *
+   * @Description:
+   *   Prepare an execution context for glyph hinting.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   size ::
+   *     A handle to the source size object.
+   *
+   * @InOut:
+   *   exec ::
+   *     A handle to the target execution context.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   *
+   * @Note:
+   *   Only the glyph loader and debugger should call this function.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Load_Context( TT_ExecContext  exec,
                    TT_Face         face,
@@ -467,23 +488,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Save_Context                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Saves the code ranges in a `size' object.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    exec :: A handle to the source execution context.                  */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    size :: A handle to the target size object.                        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only the glyph loader and debugger should call this function.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Save_Context
+   *
+   * @Description:
+   *   Saves the code ranges in a `size' object.
+   *
+   * @Input:
+   *   exec ::
+   *     A handle to the source execution context.
+   *
+   * @InOut:
+   *   size ::
+   *     A handle to the target size object.
+   *
+   * @Note:
+   *   Only the glyph loader and debugger should call this function.
+   */
   FT_LOCAL_DEF( void )
   TT_Save_Context( TT_ExecContext  exec,
                    TT_Size         size )
@@ -505,27 +528,29 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Run_Context                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Executes one or more instructions in the execution context.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    debug :: A Boolean flag.  If set, the function sets some internal  */
-  /*             variables and returns immediately, otherwise TT_RunIns()  */
-  /*             is called.                                                */
-  /*                                                                       */
-  /*             This is commented out currently.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    exec  :: A handle to the target execution context.                 */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    TrueType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Run_Context
+   *
+   * @Description:
+   *   Executes one or more instructions in the execution context.
+   *
+   * @Input:
+   *   debug ::
+   *     A Boolean flag.  If set, the function sets some internal
+   *     variables and returns immediately, otherwise TT_RunIns()
+   *     is called.
+   *
+   *     This is commented out currently.
+   *
+   * @Input:
+   *   exec ::
+   *     A handle to the target execution context.
+   *
+   * @Return:
+   *   TrueType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Run_Context( TT_ExecContext  exec )
   {
@@ -609,22 +634,22 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Before an opcode is executed, the interpreter verifies that there are */
-  /* enough arguments on the stack, with the help of the `Pop_Push_Count'  */
-  /* table.                                                                */
-  /*                                                                       */
-  /* For each opcode, the first column gives the number of arguments that  */
-  /* are popped from the stack; the second one gives the number of those   */
-  /* that are pushed in result.                                            */
-  /*                                                                       */
-  /* Opcodes which have a varying number of parameters in the data stream  */
-  /* (NPUSHB, NPUSHW) are handled specially; they have a negative value in */
-  /* the `opcode_length' table, and the value in `Pop_Push_Count' is set   */
-  /* to zero.                                                              */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Before an opcode is executed, the interpreter verifies that there are
+   * enough arguments on the stack, with the help of the `Pop_Push_Count'
+   * table.
+   *
+   * For each opcode, the first column gives the number of arguments that
+   * are popped from the stack; the second one gives the number of those
+   * that are pushed in result.
+   *
+   * Opcodes which have a varying number of parameters in the data stream
+   * (NPUSHB, NPUSHW) are handled specially; they have a negative value in
+   * the `opcode_length' table, and the value in `Pop_Push_Count' is set
+   * to zero.
+   *
+   */
 
 
 #undef  PACK
@@ -1129,73 +1154,73 @@
     "8 PushW[6]",
     "8 PushW[7]",
 
-    "8 MDRP[00]",
-    "8 MDRP[01]",
-    "8 MDRP[02]",
-    "8 MDRP[03]",
-    "8 MDRP[04]",
-    "8 MDRP[05]",
-    "8 MDRP[06]",
-    "8 MDRP[07]",
-    "8 MDRP[08]",
-    "8 MDRP[09]",
-    "8 MDRP[10]",
-    "8 MDRP[11]",
-    "8 MDRP[12]",
-    "8 MDRP[13]",
-    "8 MDRP[14]",
-    "8 MDRP[15]",
+    "7 MDRP[G]",
+    "7 MDRP[B]",
+    "7 MDRP[W]",
+    "7 MDRP[?]",
+    "8 MDRP[rG]",
+    "8 MDRP[rB]",
+    "8 MDRP[rW]",
+    "8 MDRP[r?]",
+    "8 MDRP[mG]",
+    "8 MDRP[mB]",
+    "8 MDRP[mW]",
+    "8 MDRP[m?]",
+    "9 MDRP[mrG]",
+    "9 MDRP[mrB]",
+    "9 MDRP[mrW]",
+    "9 MDRP[mr?]",
 
-    "8 MDRP[16]",
-    "8 MDRP[17]",
-    "8 MDRP[18]",
-    "8 MDRP[19]",
-    "8 MDRP[20]",
-    "8 MDRP[21]",
-    "8 MDRP[22]",
-    "8 MDRP[23]",
-    "8 MDRP[24]",
-    "8 MDRP[25]",
-    "8 MDRP[26]",
-    "8 MDRP[27]",
-    "8 MDRP[28]",
-    "8 MDRP[29]",
-    "8 MDRP[30]",
-    "8 MDRP[31]",
+    "8 MDRP[pG]",
+    "8 MDRP[pB]",
+    "8 MDRP[pW]",
+    "8 MDRP[p?]",
+    "9 MDRP[prG]",
+    "9 MDRP[prB]",
+    "9 MDRP[prW]",
+    "9 MDRP[pr?]",
+    "9 MDRP[pmG]",
+    "9 MDRP[pmB]",
+    "9 MDRP[pmW]",
+    "9 MDRP[pm?]",
+    "A MDRP[pmrG]",
+    "A MDRP[pmrB]",
+    "A MDRP[pmrW]",
+    "A MDRP[pmr?]",
 
-    "8 MIRP[00]",
-    "8 MIRP[01]",
-    "8 MIRP[02]",
-    "8 MIRP[03]",
-    "8 MIRP[04]",
-    "8 MIRP[05]",
-    "8 MIRP[06]",
-    "8 MIRP[07]",
-    "8 MIRP[08]",
-    "8 MIRP[09]",
-    "8 MIRP[10]",
-    "8 MIRP[11]",
-    "8 MIRP[12]",
-    "8 MIRP[13]",
-    "8 MIRP[14]",
-    "8 MIRP[15]",
+    "7 MIRP[G]",
+    "7 MIRP[B]",
+    "7 MIRP[W]",
+    "7 MIRP[?]",
+    "8 MIRP[rG]",
+    "8 MIRP[rB]",
+    "8 MIRP[rW]",
+    "8 MIRP[r?]",
+    "8 MIRP[mG]",
+    "8 MIRP[mB]",
+    "8 MIRP[mW]",
+    "8 MIRP[m?]",
+    "9 MIRP[mrG]",
+    "9 MIRP[mrB]",
+    "9 MIRP[mrW]",
+    "9 MIRP[mr?]",
 
-    "8 MIRP[16]",
-    "8 MIRP[17]",
-    "8 MIRP[18]",
-    "8 MIRP[19]",
-    "8 MIRP[20]",
-    "8 MIRP[21]",
-    "8 MIRP[22]",
-    "8 MIRP[23]",
-    "8 MIRP[24]",
-    "8 MIRP[25]",
-    "8 MIRP[26]",
-    "8 MIRP[27]",
-    "8 MIRP[28]",
-    "8 MIRP[29]",
-    "8 MIRP[30]",
-    "8 MIRP[31]"
+    "8 MIRP[pG]",
+    "8 MIRP[pB]",
+    "8 MIRP[pW]",
+    "8 MIRP[p?]",
+    "9 MIRP[prG]",
+    "9 MIRP[prB]",
+    "9 MIRP[prW]",
+    "9 MIRP[pr?]",
+    "9 MIRP[pmG]",
+    "9 MIRP[pmB]",
+    "9 MIRP[pmW]",
+    "9 MIRP[pm?]",
+    "A MIRP[pmrG]",
+    "A MIRP[pmrB]",
+    "A MIRP[pmrW]",
+    "A MIRP[pmr?]"
   };
 
 #endif /* FT_DEBUG_LEVEL_TRACE */
@@ -1448,18 +1473,18 @@
 #endif /* TT_DotFix14 */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Current_Ratio                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Returns the current aspect ratio scaling factor depending on the   */
-  /*    projection vector's state and device resolutions.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The aspect ratio in 16.16 format, always <= 1.0 .                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Current_Ratio
+   *
+   * @Description:
+   *   Returns the current aspect ratio scaling factor depending on the
+   *   projection vector's state and device resolutions.
+   *
+   * @Return:
+   *   The aspect ratio in 16.16 format, always <= 1.0 .
+   */
   static FT_Long
   Current_Ratio( TT_ExecContext  exc )
   {
@@ -1501,11 +1526,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Functions related to the control value table (CVT).                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Functions related to the control value table (CVT).
+   *
+   */
 
 
   FT_CALLBACK_DEF( FT_F26Dot6 )
@@ -1560,21 +1585,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    GetShortIns                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Returns a short integer taken from the instruction stream at       */
-  /*    address IP.                                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Short read at code[IP].                                            */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This one could become a macro.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   GetShortIns
+   *
+   * @Description:
+   *   Returns a short integer taken from the instruction stream at
+   *   address IP.
+   *
+   * @Return:
+   *   Short read at code[IP].
+   *
+   * @Note:
+   *   This one could become a macro.
+   */
   static FT_Short
   GetShortIns( TT_ExecContext  exc )
   {
@@ -1585,22 +1610,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Ins_Goto_CodeRange                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Goes to a certain code range in the instruction stream.            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    aRange :: The index of the code range.                             */
-  /*                                                                       */
-  /*    aIP    :: The new IP address in the code range.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS or FAILURE.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Ins_Goto_CodeRange
+   *
+   * @Description:
+   *   Goes to a certain code range in the instruction stream.
+   *
+   * @Input:
+   *   aRange ::
+   *     The index of the code range.
+   *
+   *   aIP ::
+   *     The new IP address in the code range.
+   *
+   * @Return:
+   *   SUCCESS or FAILURE.
+   */
   static FT_Bool
   Ins_Goto_CodeRange( TT_ExecContext  exc,
                       FT_Int          aRange,
@@ -1642,27 +1669,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Direct_Move                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Moves a point by a given distance along the freedom vector.  The   */
-  /*    point will be `touched'.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    point    :: The index of the point to move.                        */
-  /*                                                                       */
-  /*    distance :: The distance to apply.                                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    zone     :: The affected glyph zone.                               */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See `ttinterp.h' for details on backward compatibility mode.       */
-  /*    `Touches' the point.                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Direct_Move
+   *
+   * @Description:
+   *   Moves a point by a given distance along the freedom vector.  The
+   *   point will be `touched'.
+   *
+   * @Input:
+   *   point ::
+   *     The index of the point to move.
+   *
+   *   distance ::
+   *     The distance to apply.
+   *
+   * @InOut:
+   *   zone ::
+   *     The affected glyph zone.
+   *
+   * @Note:
+   *   See `ttinterp.h' for details on backward compatibility mode.
+   *   `Touches' the point.
+   */
   static void
   Direct_Move( TT_ExecContext  exc,
                TT_GlyphZone    zone,
@@ -1728,23 +1758,26 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Direct_Move_Orig                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Moves the *original* position of a point by a given distance along */
-  /*    the freedom vector.  Obviously, the point will not be `touched'.   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    point    :: The index of the point to move.                        */
-  /*                                                                       */
-  /*    distance :: The distance to apply.                                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    zone     :: The affected glyph zone.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Direct_Move_Orig
+   *
+   * @Description:
+   *   Moves the *original* position of a point by a given distance along
+   *   the freedom vector.  Obviously, the point will not be `touched'.
+   *
+   * @Input:
+   *   point ::
+   *     The index of the point to move.
+   *
+   *   distance ::
+   *     The distance to apply.
+   *
+   * @InOut:
+   *   zone ::
+   *     The affected glyph zone.
+   */
   static void
   Direct_Move_Orig( TT_ExecContext  exc,
                     TT_GlyphZone    zone,
@@ -1772,15 +1805,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Special versions of Direct_Move()                                     */
-  /*                                                                       */
-  /*   The following versions are used whenever both vectors are both      */
-  /*   along one of the coordinate unit vectors, i.e. in 90% of the cases. */
-  /*   See `ttinterp.h' for details on backward compatibility mode.        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Special versions of Direct_Move()
+   *
+   *   The following versions are used whenever both vectors are both
+   *   along one of the coordinate unit vectors, i.e. in 90% of the cases.
+   *   See `ttinterp.h' for details on backward compatibility mode.
+   *
+   */
 
 
   static void
@@ -1827,14 +1860,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Special versions of Direct_Move_Orig()                                */
-  /*                                                                       */
-  /*   The following versions are used whenever both vectors are both      */
-  /*   along one of the coordinate unit vectors, i.e. in 90% of the cases. */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Special versions of Direct_Move_Orig()
+   *
+   *   The following versions are used whenever both vectors are both
+   *   along one of the coordinate unit vectors, i.e. in 90% of the cases.
+   *
+   */
 
 
   static void
@@ -1861,28 +1894,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Round_None                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Does not round, but adds engine compensation.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    distance     :: The distance (not) to round.                       */
-  /*                                                                       */
-  /*    compensation :: The engine compensation.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The compensated distance.                                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The TrueType specification says very few about the relationship    */
-  /*    between rounding and engine compensation.  However, it seems from  */
-  /*    the description of super round that we should add the compensation */
-  /*    before rounding.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Round_None
+   *
+   * @Description:
+   *   Does not round, but adds engine compensation.
+   *
+   * @Input:
+   *   distance ::
+   *     The distance (not) to round.
+   *
+   *   compensation ::
+   *     The engine compensation.
+   *
+   * @Return:
+   *   The compensated distance.
+   *
+   * @Note:
+   *   The TrueType specification says very few about the relationship
+   *   between rounding and engine compensation.  However, it seems from
+   *   the description of super round that we should add the compensation
+   *   before rounding.
+   */
   static FT_F26Dot6
   Round_None( TT_ExecContext  exc,
               FT_F26Dot6      distance,
@@ -1909,22 +1944,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Round_To_Grid                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Rounds value to grid after adding engine compensation.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    distance     :: The distance to round.                             */
-  /*                                                                       */
-  /*    compensation :: The engine compensation.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Rounded distance.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Round_To_Grid
+   *
+   * @Description:
+   *   Rounds value to grid after adding engine compensation.
+   *
+   * @Input:
+   *   distance ::
+   *     The distance to round.
+   *
+   *   compensation ::
+   *     The engine compensation.
+   *
+   * @Return:
+   *   Rounded distance.
+   */
   static FT_F26Dot6
   Round_To_Grid( TT_ExecContext  exc,
                  FT_F26Dot6      distance,
@@ -1953,22 +1990,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Round_To_Half_Grid                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Rounds value to half grid after adding engine compensation.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    distance     :: The distance to round.                             */
-  /*                                                                       */
-  /*    compensation :: The engine compensation.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Rounded distance.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Round_To_Half_Grid
+   *
+   * @Description:
+   *   Rounds value to half grid after adding engine compensation.
+   *
+   * @Input:
+   *   distance ::
+   *     The distance to round.
+   *
+   *   compensation ::
+   *     The engine compensation.
+   *
+   * @Return:
+   *   Rounded distance.
+   */
   static FT_F26Dot6
   Round_To_Half_Grid( TT_ExecContext  exc,
                       FT_F26Dot6      distance,
@@ -1999,22 +2038,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Round_Down_To_Grid                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Rounds value down to grid after adding engine compensation.        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    distance     :: The distance to round.                             */
-  /*                                                                       */
-  /*    compensation :: The engine compensation.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Rounded distance.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Round_Down_To_Grid
+   *
+   * @Description:
+   *   Rounds value down to grid after adding engine compensation.
+   *
+   * @Input:
+   *   distance ::
+   *     The distance to round.
+   *
+   *   compensation ::
+   *     The engine compensation.
+   *
+   * @Return:
+   *   Rounded distance.
+   */
   static FT_F26Dot6
   Round_Down_To_Grid( TT_ExecContext  exc,
                       FT_F26Dot6      distance,
@@ -2042,22 +2083,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Round_Up_To_Grid                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Rounds value up to grid after adding engine compensation.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    distance     :: The distance to round.                             */
-  /*                                                                       */
-  /*    compensation :: The engine compensation.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Rounded distance.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Round_Up_To_Grid
+   *
+   * @Description:
+   *   Rounds value up to grid after adding engine compensation.
+   *
+   * @Input:
+   *   distance ::
+   *     The distance to round.
+   *
+   *   compensation ::
+   *     The engine compensation.
+   *
+   * @Return:
+   *   Rounded distance.
+   */
   static FT_F26Dot6
   Round_Up_To_Grid( TT_ExecContext  exc,
                     FT_F26Dot6      distance,
@@ -2086,22 +2129,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Round_To_Double_Grid                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Rounds value to double grid after adding engine compensation.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    distance     :: The distance to round.                             */
-  /*                                                                       */
-  /*    compensation :: The engine compensation.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Rounded distance.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Round_To_Double_Grid
+   *
+   * @Description:
+   *   Rounds value to double grid after adding engine compensation.
+   *
+   * @Input:
+   *   distance ::
+   *     The distance to round.
+   *
+   *   compensation ::
+   *     The engine compensation.
+   *
+   * @Return:
+   *   Rounded distance.
+   */
   static FT_F26Dot6
   Round_To_Double_Grid( TT_ExecContext  exc,
                         FT_F26Dot6      distance,
@@ -2130,28 +2175,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Round_Super                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Super-rounds value to grid after adding engine compensation.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    distance     :: The distance to round.                             */
-  /*                                                                       */
-  /*    compensation :: The engine compensation.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Rounded distance.                                                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The TrueType specification says very little about the relationship */
-  /*    between rounding and engine compensation.  However, it seems from  */
-  /*    the description of super round that we should add the compensation */
-  /*    before rounding.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Round_Super
+   *
+   * @Description:
+   *   Super-rounds value to grid after adding engine compensation.
+   *
+   * @Input:
+   *   distance ::
+   *     The distance to round.
+   *
+   *   compensation ::
+   *     The engine compensation.
+   *
+   * @Return:
+   *   Rounded distance.
+   *
+   * @Note:
+   *   The TrueType specification says very little about the relationship
+   *   between rounding and engine compensation.  However, it seems from
+   *   the description of super round that we should add the compensation
+   *   before rounding.
+   */
   static FT_F26Dot6
   Round_Super( TT_ExecContext  exc,
                FT_F26Dot6      distance,
@@ -2165,7 +2212,7 @@
       val = ADD_LONG( distance,
                       exc->threshold - exc->phase + compensation ) &
               -exc->period;
-      val += exc->phase;
+      val = ADD_LONG( val, exc->phase );
       if ( val < 0 )
         val = exc->phase;
     }
@@ -2174,7 +2221,7 @@
       val = NEG_LONG( SUB_LONG( exc->threshold - exc->phase + compensation,
                                 distance ) &
                         -exc->period );
-      val -= exc->phase;
+      val = SUB_LONG( val, exc->phase );
       if ( val > 0 )
         val = -exc->phase;
     }
@@ -2183,26 +2230,28 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Round_Super_45                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Super-rounds value to grid after adding engine compensation.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    distance     :: The distance to round.                             */
-  /*                                                                       */
-  /*    compensation :: The engine compensation.                           */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Rounded distance.                                                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    There is a separate function for Round_Super_45() as we may need   */
-  /*    greater precision.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Round_Super_45
+   *
+   * @Description:
+   *   Super-rounds value to grid after adding engine compensation.
+   *
+   * @Input:
+   *   distance ::
+   *     The distance to round.
+   *
+   *   compensation ::
+   *     The engine compensation.
+   *
+   * @Return:
+   *   Rounded distance.
+   *
+   * @Note:
+   *   There is a separate function for Round_Super_45() as we may need
+   *   greater precision.
+   */
   static FT_F26Dot6
   Round_Super_45( TT_ExecContext  exc,
                   FT_F26Dot6      distance,
@@ -2216,7 +2265,7 @@
       val = ( ADD_LONG( distance,
                         exc->threshold - exc->phase + compensation ) /
                 exc->period ) * exc->period;
-      val += exc->phase;
+      val = ADD_LONG( val, exc->phase );
       if ( val < 0 )
         val = exc->phase;
     }
@@ -2225,7 +2274,7 @@
       val = NEG_LONG( ( SUB_LONG( exc->threshold - exc->phase + compensation,
                                   distance ) /
                           exc->period ) * exc->period );
-      val -= exc->phase;
+      val = SUB_LONG( val, exc->phase );
       if ( val > 0 )
         val = -exc->phase;
     }
@@ -2234,17 +2283,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Compute_Round                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Sets the rounding mode.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    round_mode :: The rounding mode to be used.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Compute_Round
+   *
+   * @Description:
+   *   Sets the rounding mode.
+   *
+   * @Input:
+   *   round_mode ::
+   *     The rounding mode to be used.
+   */
   static void
   Compute_Round( TT_ExecContext  exc,
                  FT_Byte         round_mode )
@@ -2286,19 +2336,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    SetSuperRound                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Sets Super Round parameters.                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    GridPeriod :: The grid period.                                     */
-  /*                                                                       */
-  /*    selector   :: The SROUND opcode.                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   SetSuperRound
+   *
+   * @Description:
+   *   Sets Super Round parameters.
+   *
+   * @Input:
+   *   GridPeriod ::
+   *     The grid period.
+   *
+   *   selector ::
+   *     The SROUND opcode.
+   */
   static void
   SetSuperRound( TT_ExecContext  exc,
                  FT_F2Dot14      GridPeriod,
@@ -2355,22 +2407,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Project                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the projection of vector given by (v2-v1) along the       */
-  /*    current projection vector.                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    v1 :: First input vector.                                          */
-  /*    v2 :: Second input vector.                                         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The distance in F26dot6 format.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Project
+   *
+   * @Description:
+   *   Computes the projection of vector given by (v2-v1) along the
+   *   current projection vector.
+   *
+   * @Input:
+   *   v1 ::
+   *     First input vector.
+   *   v2 ::
+   *     Second input vector.
+   *
+   * @Return:
+   *   The distance in F26dot6 format.
+   */
   static FT_F26Dot6
   Project( TT_ExecContext  exc,
            FT_Pos          dx,
@@ -2382,22 +2436,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Dual_Project                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the projection of the vector given by (v2-v1) along the   */
-  /*    current dual vector.                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    v1 :: First input vector.                                          */
-  /*    v2 :: Second input vector.                                         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The distance in F26dot6 format.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Dual_Project
+   *
+   * @Description:
+   *   Computes the projection of the vector given by (v2-v1) along the
+   *   current dual vector.
+   *
+   * @Input:
+   *   v1 ::
+   *     First input vector.
+   *   v2 ::
+   *     Second input vector.
+   *
+   * @Return:
+   *   The distance in F26dot6 format.
+   */
   static FT_F26Dot6
   Dual_Project( TT_ExecContext  exc,
                 FT_Pos          dx,
@@ -2409,22 +2465,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Project_x                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the projection of the vector given by (v2-v1) along the   */
-  /*    horizontal axis.                                                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    v1 :: First input vector.                                          */
-  /*    v2 :: Second input vector.                                         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The distance in F26dot6 format.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Project_x
+   *
+   * @Description:
+   *   Computes the projection of the vector given by (v2-v1) along the
+   *   horizontal axis.
+   *
+   * @Input:
+   *   v1 ::
+   *     First input vector.
+   *   v2 ::
+   *     Second input vector.
+   *
+   * @Return:
+   *   The distance in F26dot6 format.
+   */
   static FT_F26Dot6
   Project_x( TT_ExecContext  exc,
              FT_Pos          dx,
@@ -2437,22 +2495,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Project_y                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the projection of the vector given by (v2-v1) along the   */
-  /*    vertical axis.                                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    v1 :: First input vector.                                          */
-  /*    v2 :: Second input vector.                                         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The distance in F26dot6 format.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Project_y
+   *
+   * @Description:
+   *   Computes the projection of the vector given by (v2-v1) along the
+   *   vertical axis.
+   *
+   * @Input:
+   *   v1 ::
+   *     First input vector.
+   *   v2 ::
+   *     Second input vector.
+   *
+   * @Return:
+   *   The distance in F26dot6 format.
+   */
   static FT_F26Dot6
   Project_y( TT_ExecContext  exc,
              FT_Pos          dx,
@@ -2465,15 +2525,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Compute_Funcs                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the projection and movement function pointers according   */
-  /*    to the current graphics state.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Compute_Funcs
+   *
+   * @Description:
+   *   Computes the projection and movement function pointers according
+   *   to the current graphics state.
+   */
   static void
   Compute_Funcs( TT_ExecContext  exc )
   {
@@ -2528,28 +2588,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Normalize                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Norms a vector.                                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    Vx :: The horizontal input vector coordinate.                      */
-  /*    Vy :: The vertical input vector coordinate.                        */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    R  :: The normed unit vector.                                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Returns FAILURE if a vector parameter is zero.                     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    In case Vx and Vy are both zero, `Normalize' returns SUCCESS, and  */
-  /*    R is undefined.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Normalize
+   *
+   * @Description:
+   *   Norms a vector.
+   *
+   * @Input:
+   *   Vx ::
+   *     The horizontal input vector coordinate.
+   *   Vy ::
+   *     The vertical input vector coordinate.
+   *
+   * @Output:
+   *   R ::
+   *     The normed unit vector.
+   *
+   * @Return:
+   *   Returns FAILURE if a vector parameter is zero.
+   *
+   * @Note:
+   *   In case Vx and Vy are both zero, `Normalize' returns SUCCESS, and
+   *   R is undefined.
+   */
   static FT_Bool
   Normalize( FT_F26Dot6      Vx,
              FT_F26Dot6      Vy,
@@ -2577,11 +2640,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Here we start with the implementation of the various opcodes.         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Here we start with the implementation of the various opcodes.
+   *
+   */
 
 
 #define ARRAY_BOUND_ERROR                         \
@@ -2592,12 +2655,12 @@
     } while (0)
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MPPEM[]:      Measure Pixel Per EM                                    */
-  /* Opcode range: 0x4B                                                    */
-  /* Stack:        --> Euint16                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MPPEM[]:      Measure Pixel Per EM
+   * Opcode range: 0x4B
+   * Stack:        --> Euint16
+   */
   static void
   Ins_MPPEM( TT_ExecContext  exc,
              FT_Long*        args )
@@ -2606,12 +2669,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MPS[]:        Measure Point Size                                      */
-  /* Opcode range: 0x4C                                                    */
-  /* Stack:        --> Euint16                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MPS[]:        Measure Point Size
+   * Opcode range: 0x4C
+   * Stack:        --> Euint16
+   */
   static void
   Ins_MPS( TT_ExecContext  exc,
            FT_Long*        args )
@@ -2633,12 +2696,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DUP[]:        DUPlicate the stack's top element                       */
-  /* Opcode range: 0x20                                                    */
-  /* Stack:        StkElt --> StkElt StkElt                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DUP[]:        DUPlicate the stack's top element
+   * Opcode range: 0x20
+   * Stack:        StkElt --> StkElt StkElt
+   */
   static void
   Ins_DUP( FT_Long*  args )
   {
@@ -2646,12 +2709,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* POP[]:        POP the stack's top element                             */
-  /* Opcode range: 0x21                                                    */
-  /* Stack:        StkElt -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * POP[]:        POP the stack's top element
+   * Opcode range: 0x21
+   * Stack:        StkElt -->
+   */
   static void
   Ins_POP( void )
   {
@@ -2659,12 +2722,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CLEAR[]:      CLEAR the entire stack                                  */
-  /* Opcode range: 0x22                                                    */
-  /* Stack:        StkElt... -->                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CLEAR[]:      CLEAR the entire stack
+   * Opcode range: 0x22
+   * Stack:        StkElt... -->
+   */
   static void
   Ins_CLEAR( TT_ExecContext  exc )
   {
@@ -2672,12 +2735,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SWAP[]:       SWAP the stack's top two elements                       */
-  /* Opcode range: 0x23                                                    */
-  /* Stack:        2 * StkElt --> 2 * StkElt                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SWAP[]:       SWAP the stack's top two elements
+   * Opcode range: 0x23
+   * Stack:        2 * StkElt --> 2 * StkElt
+   */
   static void
   Ins_SWAP( FT_Long*  args )
   {
@@ -2690,12 +2753,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DEPTH[]:      return the stack DEPTH                                  */
-  /* Opcode range: 0x24                                                    */
-  /* Stack:        --> uint32                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DEPTH[]:      return the stack DEPTH
+   * Opcode range: 0x24
+   * Stack:        --> uint32
+   */
   static void
   Ins_DEPTH( TT_ExecContext  exc,
              FT_Long*        args )
@@ -2704,12 +2767,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* LT[]:         Less Than                                               */
-  /* Opcode range: 0x50                                                    */
-  /* Stack:        int32? int32? --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * LT[]:         Less Than
+   * Opcode range: 0x50
+   * Stack:        int32? int32? --> bool
+   */
   static void
   Ins_LT( FT_Long*  args )
   {
@@ -2717,12 +2780,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* LTEQ[]:       Less Than or EQual                                      */
-  /* Opcode range: 0x51                                                    */
-  /* Stack:        int32? int32? --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * LTEQ[]:       Less Than or EQual
+   * Opcode range: 0x51
+   * Stack:        int32? int32? --> bool
+   */
   static void
   Ins_LTEQ( FT_Long*  args )
   {
@@ -2730,12 +2793,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GT[]:         Greater Than                                            */
-  /* Opcode range: 0x52                                                    */
-  /* Stack:        int32? int32? --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GT[]:         Greater Than
+   * Opcode range: 0x52
+   * Stack:        int32? int32? --> bool
+   */
   static void
   Ins_GT( FT_Long*  args )
   {
@@ -2743,12 +2806,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GTEQ[]:       Greater Than or EQual                                   */
-  /* Opcode range: 0x53                                                    */
-  /* Stack:        int32? int32? --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GTEQ[]:       Greater Than or EQual
+   * Opcode range: 0x53
+   * Stack:        int32? int32? --> bool
+   */
   static void
   Ins_GTEQ( FT_Long*  args )
   {
@@ -2756,12 +2819,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* EQ[]:         EQual                                                   */
-  /* Opcode range: 0x54                                                    */
-  /* Stack:        StkElt StkElt --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * EQ[]:         EQual
+   * Opcode range: 0x54
+   * Stack:        StkElt StkElt --> bool
+   */
   static void
   Ins_EQ( FT_Long*  args )
   {
@@ -2769,12 +2832,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NEQ[]:        Not EQual                                               */
-  /* Opcode range: 0x55                                                    */
-  /* Stack:        StkElt StkElt --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NEQ[]:        Not EQual
+   * Opcode range: 0x55
+   * Stack:        StkElt StkElt --> bool
+   */
   static void
   Ins_NEQ( FT_Long*  args )
   {
@@ -2782,12 +2845,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ODD[]:        Is ODD                                                  */
-  /* Opcode range: 0x56                                                    */
-  /* Stack:        f26.6 --> bool                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ODD[]:        Is ODD
+   * Opcode range: 0x56
+   * Stack:        f26.6 --> bool
+   */
   static void
   Ins_ODD( TT_ExecContext  exc,
            FT_Long*        args )
@@ -2796,12 +2859,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* EVEN[]:       Is EVEN                                                 */
-  /* Opcode range: 0x57                                                    */
-  /* Stack:        f26.6 --> bool                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * EVEN[]:       Is EVEN
+   * Opcode range: 0x57
+   * Stack:        f26.6 --> bool
+   */
   static void
   Ins_EVEN( TT_ExecContext  exc,
             FT_Long*        args )
@@ -2810,12 +2873,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* AND[]:        logical AND                                             */
-  /* Opcode range: 0x5A                                                    */
-  /* Stack:        uint32 uint32 --> uint32                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * AND[]:        logical AND
+   * Opcode range: 0x5A
+   * Stack:        uint32 uint32 --> uint32
+   */
   static void
   Ins_AND( FT_Long*  args )
   {
@@ -2823,12 +2886,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* OR[]:         logical OR                                              */
-  /* Opcode range: 0x5B                                                    */
-  /* Stack:        uint32 uint32 --> uint32                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * OR[]:         logical OR
+   * Opcode range: 0x5B
+   * Stack:        uint32 uint32 --> uint32
+   */
   static void
   Ins_OR( FT_Long*  args )
   {
@@ -2836,12 +2899,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NOT[]:        logical NOT                                             */
-  /* Opcode range: 0x5C                                                    */
-  /* Stack:        StkElt --> uint32                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NOT[]:        logical NOT
+   * Opcode range: 0x5C
+   * Stack:        StkElt --> uint32
+   */
   static void
   Ins_NOT( FT_Long*  args )
   {
@@ -2849,12 +2912,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ADD[]:        ADD                                                     */
-  /* Opcode range: 0x60                                                    */
-  /* Stack:        f26.6 f26.6 --> f26.6                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ADD[]:        ADD
+   * Opcode range: 0x60
+   * Stack:        f26.6 f26.6 --> f26.6
+   */
   static void
   Ins_ADD( FT_Long*  args )
   {
@@ -2862,12 +2925,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SUB[]:        SUBtract                                                */
-  /* Opcode range: 0x61                                                    */
-  /* Stack:        f26.6 f26.6 --> f26.6                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SUB[]:        SUBtract
+   * Opcode range: 0x61
+   * Stack:        f26.6 f26.6 --> f26.6
+   */
   static void
   Ins_SUB( FT_Long*  args )
   {
@@ -2875,12 +2938,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DIV[]:        DIVide                                                  */
-  /* Opcode range: 0x62                                                    */
-  /* Stack:        f26.6 f26.6 --> f26.6                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DIV[]:        DIVide
+   * Opcode range: 0x62
+   * Stack:        f26.6 f26.6 --> f26.6
+   */
   static void
   Ins_DIV( TT_ExecContext  exc,
            FT_Long*        args )
@@ -2892,12 +2955,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MUL[]:        MULtiply                                                */
-  /* Opcode range: 0x63                                                    */
-  /* Stack:        f26.6 f26.6 --> f26.6                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MUL[]:        MULtiply
+   * Opcode range: 0x63
+   * Stack:        f26.6 f26.6 --> f26.6
+   */
   static void
   Ins_MUL( FT_Long*  args )
   {
@@ -2905,12 +2968,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ABS[]:        ABSolute value                                          */
-  /* Opcode range: 0x64                                                    */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ABS[]:        ABSolute value
+   * Opcode range: 0x64
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_ABS( FT_Long*  args )
   {
@@ -2919,12 +2982,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NEG[]:        NEGate                                                  */
-  /* Opcode range: 0x65                                                    */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NEG[]:        NEGate
+   * Opcode range: 0x65
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_NEG( FT_Long*  args )
   {
@@ -2932,12 +2995,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLOOR[]:      FLOOR                                                   */
-  /* Opcode range: 0x66                                                    */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLOOR[]:      FLOOR
+   * Opcode range: 0x66
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_FLOOR( FT_Long*  args )
   {
@@ -2945,25 +3008,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CEILING[]:    CEILING                                                 */
-  /* Opcode range: 0x67                                                    */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CEILING[]:    CEILING
+   * Opcode range: 0x67
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_CEILING( FT_Long*  args )
   {
-    args[0] = FT_PIX_CEIL( args[0] );
+    args[0] = FT_PIX_CEIL_LONG( args[0] );
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RS[]:         Read Store                                              */
-  /* Opcode range: 0x43                                                    */
-  /* Stack:        uint32 --> uint32                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RS[]:         Read Store
+   * Opcode range: 0x43
+   * Stack:        uint32 --> uint32
+   */
   static void
   Ins_RS( TT_ExecContext  exc,
           FT_Long*        args )
@@ -3004,12 +3067,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* WS[]:         Write Store                                             */
-  /* Opcode range: 0x42                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * WS[]:         Write Store
+   * Opcode range: 0x42
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_WS( TT_ExecContext  exc,
           FT_Long*        args )
@@ -3027,12 +3090,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* WCVTP[]:      Write CVT in Pixel units                                */
-  /* Opcode range: 0x44                                                    */
-  /* Stack:        f26.6 uint32 -->                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * WCVTP[]:      Write CVT in Pixel units
+   * Opcode range: 0x44
+   * Stack:        f26.6 uint32 -->
+   */
   static void
   Ins_WCVTP( TT_ExecContext  exc,
              FT_Long*        args )
@@ -3050,12 +3113,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* WCVTF[]:      Write CVT in Funits                                     */
-  /* Opcode range: 0x70                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * WCVTF[]:      Write CVT in Funits
+   * Opcode range: 0x70
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_WCVTF( TT_ExecContext  exc,
              FT_Long*        args )
@@ -3073,12 +3136,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RCVT[]:       Read CVT                                                */
-  /* Opcode range: 0x45                                                    */
-  /* Stack:        uint32 --> f26.6                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RCVT[]:       Read CVT
+   * Opcode range: 0x45
+   * Stack:        uint32 --> f26.6
+   */
   static void
   Ins_RCVT( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3098,12 +3161,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* AA[]:         Adjust Angle                                            */
-  /* Opcode range: 0x7F                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * AA[]:         Adjust Angle
+   * Opcode range: 0x7F
+   * Stack:        uint32 -->
+   */
   static void
   Ins_AA( void )
   {
@@ -3111,14 +3174,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DEBUG[]:      DEBUG.  Unsupported.                                    */
-  /* Opcode range: 0x4F                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
-  /* Note: The original instruction pops a value from the stack.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DEBUG[]:      DEBUG.  Unsupported.
+   * Opcode range: 0x4F
+   * Stack:        uint32 -->
+   *
+   * Note: The original instruction pops a value from the stack.
+   */
   static void
   Ins_DEBUG( TT_ExecContext  exc )
   {
@@ -3126,12 +3189,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ROUND[ab]:    ROUND value                                             */
-  /* Opcode range: 0x68-0x6B                                               */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ROUND[ab]:    ROUND value
+   * Opcode range: 0x68-0x6B
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_ROUND( TT_ExecContext  exc,
              FT_Long*        args )
@@ -3143,12 +3206,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NROUND[ab]:   No ROUNDing of value                                    */
-  /* Opcode range: 0x6C-0x6F                                               */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NROUND[ab]:   No ROUNDing of value
+   * Opcode range: 0x6C-0x6F
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_NROUND( TT_ExecContext  exc,
               FT_Long*        args )
@@ -3160,12 +3223,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MAX[]:        MAXimum                                                 */
-  /* Opcode range: 0x8B                                                    */
-  /* Stack:        int32? int32? --> int32                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MAX[]:        MAXimum
+   * Opcode range: 0x8B
+   * Stack:        int32? int32? --> int32
+   */
   static void
   Ins_MAX( FT_Long*  args )
   {
@@ -3174,12 +3237,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MIN[]:        MINimum                                                 */
-  /* Opcode range: 0x8C                                                    */
-  /* Stack:        int32? int32? --> int32                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MIN[]:        MINimum
+   * Opcode range: 0x8C
+   * Stack:        int32? int32? --> int32
+   */
   static void
   Ins_MIN( FT_Long*  args )
   {
@@ -3188,12 +3251,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MINDEX[]:     Move INDEXed element                                    */
-  /* Opcode range: 0x26                                                    */
-  /* Stack:        int32? --> StkElt                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MINDEX[]:     Move INDEXed element
+   * Opcode range: 0x26
+   * Stack:        int32? --> StkElt
+   */
   static void
   Ins_MINDEX( TT_ExecContext  exc,
               FT_Long*        args )
@@ -3221,12 +3284,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CINDEX[]:     Copy INDEXed element                                    */
-  /* Opcode range: 0x25                                                    */
-  /* Stack:        int32 --> StkElt                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CINDEX[]:     Copy INDEXed element
+   * Opcode range: 0x25
+   * Stack:        int32 --> StkElt
+   */
   static void
   Ins_CINDEX( TT_ExecContext  exc,
               FT_Long*        args )
@@ -3247,12 +3310,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ROLL[]:       ROLL top three elements                                 */
-  /* Opcode range: 0x8A                                                    */
-  /* Stack:        3 * StkElt --> 3 * StkElt                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ROLL[]:       ROLL top three elements
+   * Opcode range: 0x8A
+   * Stack:        3 * StkElt --> 3 * StkElt
+   */
   static void
   Ins_ROLL( FT_Long*  args )
   {
@@ -3269,19 +3332,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MANAGING THE FLOW OF CONTROL                                          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * MANAGING THE FLOW OF CONTROL
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SLOOP[]:      Set LOOP variable                                       */
-  /* Opcode range: 0x17                                                    */
-  /* Stack:        int32? -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SLOOP[]:      Set LOOP variable
+   * Opcode range: 0x17
+   * Stack:        int32? -->
+   */
   static void
   Ins_SLOOP( TT_ExecContext  exc,
              FT_Long*        args )
@@ -3289,7 +3352,10 @@
     if ( args[0] < 0 )
       exc->error = FT_THROW( Bad_Argument );
     else
-      exc->GS.loop = args[0];
+    {
+      /* we heuristically limit the number of loops to 16 bits */
+      exc->GS.loop = args[0] > 0xFFFFL ? 0xFFFFL : args[0];
+    }
   }
 
 
@@ -3320,12 +3386,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* IF[]:         IF test                                                 */
-  /* Opcode range: 0x58                                                    */
-  /* Stack:        StkElt -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * IF[]:         IF test
+   * Opcode range: 0x58
+   * Stack:        StkElt -->
+   */
   static void
   Ins_IF( TT_ExecContext  exc,
           FT_Long*        args )
@@ -3364,12 +3430,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ELSE[]:       ELSE                                                    */
-  /* Opcode range: 0x1B                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ELSE[]:       ELSE
+   * Opcode range: 0x1B
+   * Stack:        -->
+   */
   static void
   Ins_ELSE( TT_ExecContext  exc )
   {
@@ -3397,12 +3463,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* EIF[]:        End IF                                                  */
-  /* Opcode range: 0x59                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * EIF[]:        End IF
+   * Opcode range: 0x59
+   * Stack:        -->
+   */
   static void
   Ins_EIF( void )
   {
@@ -3410,12 +3476,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* JMPR[]:       JuMP Relative                                           */
-  /* Opcode range: 0x1C                                                    */
-  /* Stack:        int32 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * JMPR[]:       JuMP Relative
+   * Opcode range: 0x1C
+   * Stack:        int32 -->
+   */
   static void
   Ins_JMPR( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3445,12 +3511,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* JROT[]:       Jump Relative On True                                   */
-  /* Opcode range: 0x78                                                    */
-  /* Stack:        StkElt int32 -->                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * JROT[]:       Jump Relative On True
+   * Opcode range: 0x78
+   * Stack:        StkElt int32 -->
+   */
   static void
   Ins_JROT( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3460,12 +3526,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* JROF[]:       Jump Relative On False                                  */
-  /* Opcode range: 0x79                                                    */
-  /* Stack:        StkElt int32 -->                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * JROF[]:       Jump Relative On False
+   * Opcode range: 0x79
+   * Stack:        StkElt int32 -->
+   */
   static void
   Ins_JROF( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3475,19 +3541,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DEFINING AND USING FUNCTIONS AND INSTRUCTIONS                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * DEFINING AND USING FUNCTIONS AND INSTRUCTIONS
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FDEF[]:       Function DEFinition                                     */
-  /* Opcode range: 0x2C                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FDEF[]:       Function DEFinition
+   * Opcode range: 0x2C
+   * Stack:        uint32 -->
+   */
   static void
   Ins_FDEF( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3785,12 +3851,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ENDF[]:       END Function definition                                 */
-  /* Opcode range: 0x2D                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ENDF[]:       END Function definition
+   * Opcode range: 0x2D
+   * Stack:        -->
+   */
   static void
   Ins_ENDF( TT_ExecContext  exc )
   {
@@ -3834,12 +3900,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CALL[]:       CALL function                                           */
-  /* Opcode range: 0x2B                                                    */
-  /* Stack:        uint32? -->                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CALL[]:       CALL function
+   * Opcode range: 0x2B
+   * Stack:        uint32? -->
+   */
   static void
   Ins_CALL( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3923,12 +3989,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* LOOPCALL[]:   LOOP and CALL function                                  */
-  /* Opcode range: 0x2A                                                    */
-  /* Stack:        uint32? Eint16? -->                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * LOOPCALL[]:   LOOP and CALL function
+   * Opcode range: 0x2A
+   * Stack:        uint32? Eint16? -->
+   */
   static void
   Ins_LOOPCALL( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -4016,12 +4082,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* IDEF[]:       Instruction DEFinition                                  */
-  /* Opcode range: 0x89                                                    */
-  /* Stack:        Eint8 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * IDEF[]:       Instruction DEFinition
+   * Opcode range: 0x89
+   * Stack:        Eint8 -->
+   */
   static void
   Ins_IDEF( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4091,19 +4157,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PUSHING DATA ONTO THE INTERPRETER STACK                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * PUSHING DATA ONTO THE INTERPRETER STACK
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NPUSHB[]:     PUSH N Bytes                                            */
-  /* Opcode range: 0x40                                                    */
-  /* Stack:        --> uint32...                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NPUSHB[]:     PUSH N Bytes
+   * Opcode range: 0x40
+   * Stack:        --> uint32...
+   */
   static void
   Ins_NPUSHB( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4126,12 +4192,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NPUSHW[]:     PUSH N Words                                            */
-  /* Opcode range: 0x41                                                    */
-  /* Stack:        --> int32...                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NPUSHW[]:     PUSH N Words
+   * Opcode range: 0x41
+   * Stack:        --> int32...
+   */
   static void
   Ins_NPUSHW( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4157,12 +4223,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PUSHB[abc]:   PUSH Bytes                                              */
-  /* Opcode range: 0xB0-0xB7                                               */
-  /* Stack:        --> uint32...                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * PUSHB[abc]:   PUSH Bytes
+   * Opcode range: 0xB0-0xB7
+   * Stack:        --> uint32...
+   */
   static void
   Ins_PUSHB( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4183,12 +4249,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PUSHW[abc]:   PUSH Words                                              */
-  /* Opcode range: 0xB8-0xBF                                               */
-  /* Stack:        --> int32...                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * PUSHW[abc]:   PUSH Words
+   * Opcode range: 0xB8-0xBF
+   * Stack:        --> int32...
+   */
   static void
   Ins_PUSHW( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4213,11 +4279,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MANAGING THE GRAPHICS STATE                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * MANAGING THE GRAPHICS STATE
+   *
+   */
 
 
   static FT_Bool
@@ -4271,20 +4337,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SVTCA[a]:     Set (F and P) Vectors to Coordinate Axis                */
-  /* Opcode range: 0x00-0x01                                               */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
-  /* SPvTCA[a]:    Set PVector to Coordinate Axis                          */
-  /* Opcode range: 0x02-0x03                                               */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
-  /* SFvTCA[a]:    Set FVector to Coordinate Axis                          */
-  /* Opcode range: 0x04-0x05                                               */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SVTCA[a]:     Set (F and P) Vectors to Coordinate Axis
+   * Opcode range: 0x00-0x01
+   * Stack:        -->
+   *
+   * SPvTCA[a]:    Set PVector to Coordinate Axis
+   * Opcode range: 0x02-0x03
+   * Stack:        -->
+   *
+   * SFvTCA[a]:    Set FVector to Coordinate Axis
+   * Opcode range: 0x04-0x05
+   * Stack:        -->
+   */
   static void
   Ins_SxyTCA( TT_ExecContext  exc )
   {
@@ -4315,12 +4381,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SPvTL[a]:     Set PVector To Line                                     */
-  /* Opcode range: 0x06-0x07                                               */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SPvTL[a]:     Set PVector To Line
+   * Opcode range: 0x06-0x07
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_SPVTL( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4336,12 +4402,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SFvTL[a]:     Set FVector To Line                                     */
-  /* Opcode range: 0x08-0x09                                               */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SFvTL[a]:     Set FVector To Line
+   * Opcode range: 0x08-0x09
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_SFVTL( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4356,12 +4422,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SFvTPv[]:     Set FVector To PVector                                  */
-  /* Opcode range: 0x0E                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SFvTPv[]:     Set FVector To PVector
+   * Opcode range: 0x0E
+   * Stack:        -->
+   */
   static void
   Ins_SFVTPV( TT_ExecContext  exc )
   {
@@ -4370,12 +4436,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SPvFS[]:      Set PVector From Stack                                  */
-  /* Opcode range: 0x0A                                                    */
-  /* Stack:        f2.14 f2.14 -->                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SPvFS[]:      Set PVector From Stack
+   * Opcode range: 0x0A
+   * Stack:        f2.14 f2.14 -->
+   */
   static void
   Ins_SPVFS( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4397,12 +4463,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SFvFS[]:      Set FVector From Stack                                  */
-  /* Opcode range: 0x0B                                                    */
-  /* Stack:        f2.14 f2.14 -->                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SFvFS[]:      Set FVector From Stack
+   * Opcode range: 0x0B
+   * Stack:        f2.14 f2.14 -->
+   */
   static void
   Ins_SFVFS( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4422,12 +4488,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GPv[]:        Get Projection Vector                                   */
-  /* Opcode range: 0x0C                                                    */
-  /* Stack:        ef2.14 --> ef2.14                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GPv[]:        Get Projection Vector
+   * Opcode range: 0x0C
+   * Stack:        ef2.14 --> ef2.14
+   */
   static void
   Ins_GPV( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4437,12 +4503,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GFv[]:        Get Freedom Vector                                      */
-  /* Opcode range: 0x0D                                                    */
-  /* Stack:        ef2.14 --> ef2.14                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GFv[]:        Get Freedom Vector
+   * Opcode range: 0x0D
+   * Stack:        ef2.14 --> ef2.14
+   */
   static void
   Ins_GFV( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4452,12 +4518,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SRP0[]:       Set Reference Point 0                                   */
-  /* Opcode range: 0x10                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SRP0[]:       Set Reference Point 0
+   * Opcode range: 0x10
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SRP0( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4466,12 +4532,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SRP1[]:       Set Reference Point 1                                   */
-  /* Opcode range: 0x11                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SRP1[]:       Set Reference Point 1
+   * Opcode range: 0x11
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SRP1( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4480,12 +4546,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SRP2[]:       Set Reference Point 2                                   */
-  /* Opcode range: 0x12                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SRP2[]:       Set Reference Point 2
+   * Opcode range: 0x12
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SRP2( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4494,12 +4560,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SMD[]:        Set Minimum Distance                                    */
-  /* Opcode range: 0x1A                                                    */
-  /* Stack:        f26.6 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SMD[]:        Set Minimum Distance
+   * Opcode range: 0x1A
+   * Stack:        f26.6 -->
+   */
   static void
   Ins_SMD( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4508,12 +4574,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SCVTCI[]:     Set Control Value Table Cut In                          */
-  /* Opcode range: 0x1D                                                    */
-  /* Stack:        f26.6 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SCVTCI[]:     Set Control Value Table Cut In
+   * Opcode range: 0x1D
+   * Stack:        f26.6 -->
+   */
   static void
   Ins_SCVTCI( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4522,12 +4588,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SSWCI[]:      Set Single Width Cut In                                 */
-  /* Opcode range: 0x1E                                                    */
-  /* Stack:        f26.6 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SSWCI[]:      Set Single Width Cut In
+   * Opcode range: 0x1E
+   * Stack:        f26.6 -->
+   */
   static void
   Ins_SSWCI( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4536,12 +4602,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SSW[]:        Set Single Width                                        */
-  /* Opcode range: 0x1F                                                    */
-  /* Stack:        int32? -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SSW[]:        Set Single Width
+   * Opcode range: 0x1F
+   * Stack:        int32? -->
+   */
   static void
   Ins_SSW( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4551,12 +4617,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPON[]:     Set auto-FLIP to ON                                     */
-  /* Opcode range: 0x4D                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPON[]:     Set auto-FLIP to ON
+   * Opcode range: 0x4D
+   * Stack:        -->
+   */
   static void
   Ins_FLIPON( TT_ExecContext  exc )
   {
@@ -4564,12 +4630,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPOFF[]:    Set auto-FLIP to OFF                                    */
-  /* Opcode range: 0x4E                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPOFF[]:    Set auto-FLIP to OFF
+   * Opcode range: 0x4E
+   * Stack:        -->
+   */
   static void
   Ins_FLIPOFF( TT_ExecContext  exc )
   {
@@ -4577,12 +4643,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SANGW[]:      Set ANGle Weight                                        */
-  /* Opcode range: 0x7E                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SANGW[]:      Set ANGle Weight
+   * Opcode range: 0x7E
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SANGW( void )
   {
@@ -4590,12 +4656,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SDB[]:        Set Delta Base                                          */
-  /* Opcode range: 0x5E                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SDB[]:        Set Delta Base
+   * Opcode range: 0x5E
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SDB( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4604,12 +4670,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SDS[]:        Set Delta Shift                                         */
-  /* Opcode range: 0x5F                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SDS[]:        Set Delta Shift
+   * Opcode range: 0x5F
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SDS( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4621,12 +4687,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RTHG[]:       Round To Half Grid                                      */
-  /* Opcode range: 0x19                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RTHG[]:       Round To Half Grid
+   * Opcode range: 0x19
+   * Stack:        -->
+   */
   static void
   Ins_RTHG( TT_ExecContext  exc )
   {
@@ -4635,12 +4701,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RTG[]:        Round To Grid                                           */
-  /* Opcode range: 0x18                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RTG[]:        Round To Grid
+   * Opcode range: 0x18
+   * Stack:        -->
+   */
   static void
   Ins_RTG( TT_ExecContext  exc )
   {
@@ -4649,11 +4715,11 @@
   }
 
 
-  /*************************************************************************/
-  /* RTDG[]:       Round To Double Grid                                    */
-  /* Opcode range: 0x3D                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   * RTDG[]:       Round To Double Grid
+   * Opcode range: 0x3D
+   * Stack:        -->
+   */
   static void
   Ins_RTDG( TT_ExecContext  exc )
   {
@@ -4662,11 +4728,11 @@
   }
 
 
-  /*************************************************************************/
-  /* RUTG[]:       Round Up To Grid                                        */
-  /* Opcode range: 0x7C                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   * RUTG[]:       Round Up To Grid
+   * Opcode range: 0x7C
+   * Stack:        -->
+   */
   static void
   Ins_RUTG( TT_ExecContext  exc )
   {
@@ -4675,12 +4741,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RDTG[]:       Round Down To Grid                                      */
-  /* Opcode range: 0x7D                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RDTG[]:       Round Down To Grid
+   * Opcode range: 0x7D
+   * Stack:        -->
+   */
   static void
   Ins_RDTG( TT_ExecContext  exc )
   {
@@ -4689,12 +4755,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ROFF[]:       Round OFF                                               */
-  /* Opcode range: 0x7A                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ROFF[]:       Round OFF
+   * Opcode range: 0x7A
+   * Stack:        -->
+   */
   static void
   Ins_ROFF( TT_ExecContext  exc )
   {
@@ -4703,12 +4769,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SROUND[]:     Super ROUND                                             */
-  /* Opcode range: 0x76                                                    */
-  /* Stack:        Eint8 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SROUND[]:     Super ROUND
+   * Opcode range: 0x76
+   * Stack:        Eint8 -->
+   */
   static void
   Ins_SROUND( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4720,12 +4786,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* S45ROUND[]:   Super ROUND 45 degrees                                  */
-  /* Opcode range: 0x77                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * S45ROUND[]:   Super ROUND 45 degrees
+   * Opcode range: 0x77
+   * Stack:        uint32 -->
+   */
   static void
   Ins_S45ROUND( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -4737,15 +4803,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GC[a]:        Get Coordinate projected onto                           */
-  /* Opcode range: 0x46-0x47                                               */
-  /* Stack:        uint32 --> f26.6                                        */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: Measures from the original glyph must be taken     */
-  /*      along the dual projection vector!                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GC[a]:        Get Coordinate projected onto
+   * Opcode range: 0x46-0x47
+   * Stack:        uint32 --> f26.6
+   *
+   * XXX: UNDOCUMENTED: Measures from the original glyph must be taken
+   *      along the dual projection vector!
+   */
   static void
   Ins_GC( TT_ExecContext  exc,
           FT_Long*        args )
@@ -4774,16 +4840,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SCFS[]:       Set Coordinate From Stack                               */
-  /* Opcode range: 0x48                                                    */
-  /* Stack:        f26.6 uint32 -->                                        */
-  /*                                                                       */
-  /* Formula:                                                              */
-  /*                                                                       */
-  /*   OA := OA + ( value - OA.p )/( f.p ) * f                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SCFS[]:       Set Coordinate From Stack
+   * Opcode range: 0x48
+   * Stack:        f26.6 uint32 -->
+   *
+   * Formula:
+   *
+   *   OA := OA + ( value - OA.p )/( f.p ) * f
+   */
   static void
   Ins_SCFS( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4812,21 +4878,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MD[a]:        Measure Distance                                        */
-  /* Opcode range: 0x49-0x4A                                               */
-  /* Stack:        uint32 uint32 --> f26.6                                 */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: Measure taken in the original glyph must be along  */
-  /*                    the dual projection vector.                        */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: Flag attributes are inverted!                      */
-  /*                      0 => measure distance in original outline        */
-  /*                      1 => measure distance in grid-fitted outline     */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: `zp0 - zp1', and not `zp2 - zp1!                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MD[a]:        Measure Distance
+   * Opcode range: 0x49-0x4A
+   * Stack:        uint32 uint32 --> f26.6
+   *
+   * XXX: UNDOCUMENTED: Measure taken in the original glyph must be along
+   *                    the dual projection vector.
+   *
+   * XXX: UNDOCUMENTED: Flag attributes are inverted!
+   *                      0 => measure distance in original outline
+   *                      1 => measure distance in grid-fitted outline
+   *
+   * XXX: UNDOCUMENTED: `zp0 - zp1', and not `zp2 - zp1!
+   */
   static void
   Ins_MD( TT_ExecContext  exc,
           FT_Long*        args )
@@ -4899,12 +4965,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SDPvTL[a]:    Set Dual PVector to Line                                */
-  /* Opcode range: 0x86-0x87                                               */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SDPvTL[a]:    Set Dual PVector to Line
+   * Opcode range: 0x86-0x87
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_SDPVTL( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4982,12 +5048,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SZP0[]:       Set Zone Pointer 0                                      */
-  /* Opcode range: 0x13                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SZP0[]:       Set Zone Pointer 0
+   * Opcode range: 0x13
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SZP0( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5012,12 +5078,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SZP1[]:       Set Zone Pointer 1                                      */
-  /* Opcode range: 0x14                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SZP1[]:       Set Zone Pointer 1
+   * Opcode range: 0x14
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SZP1( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5042,12 +5108,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SZP2[]:       Set Zone Pointer 2                                      */
-  /* Opcode range: 0x15                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SZP2[]:       Set Zone Pointer 2
+   * Opcode range: 0x15
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SZP2( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5072,12 +5138,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SZPS[]:       Set Zone PointerS                                       */
-  /* Opcode range: 0x16                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SZPS[]:       Set Zone PointerS
+   * Opcode range: 0x16
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SZPS( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5107,12 +5173,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* INSTCTRL[]:   INSTruction ConTRoL                                     */
-  /* Opcode range: 0x8E                                                    */
-  /* Stack:        int32 int32 -->                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * INSTCTRL[]:   INSTruction ConTRoL
+   * Opcode range: 0x8E
+   * Stack:        int32 int32 -->
+   */
   static void
   Ins_INSTCTRL( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -5169,12 +5235,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SCANCTRL[]:   SCAN ConTRoL                                            */
-  /* Opcode range: 0x85                                                    */
-  /* Stack:        uint32? -->                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SCANCTRL[]:   SCAN ConTRoL
+   * Opcode range: 0x85
+   * Stack:        uint32? -->
+   */
   static void
   Ins_SCANCTRL( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -5216,12 +5282,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SCANTYPE[]:   SCAN TYPE                                               */
-  /* Opcode range: 0x8D                                                    */
-  /* Stack:        uint16 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SCANTYPE[]:   SCAN TYPE
+   * Opcode range: 0x8D
+   * Stack:        uint16 -->
+   */
   static void
   Ins_SCANTYPE( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -5231,19 +5297,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MANAGING OUTLINES                                                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * MANAGING OUTLINES
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPPT[]:     FLIP PoinT                                              */
-  /* Opcode range: 0x80                                                    */
-  /* Stack:        uint32... -->                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPPT[]:     FLIP PoinT
+   * Opcode range: 0x80
+   * Stack:        uint32... -->
+   */
   static void
   Ins_FLIPPT( TT_ExecContext  exc )
   {
@@ -5292,12 +5358,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPRGON[]:   FLIP RanGe ON                                           */
-  /* Opcode range: 0x81                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPRGON[]:   FLIP RanGe ON
+   * Opcode range: 0x81
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_FLIPRGON( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -5330,12 +5396,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPRGOFF:    FLIP RanGe OFF                                          */
-  /* Opcode range: 0x82                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPRGOFF:    FLIP RanGe OFF
+   * Opcode range: 0x82
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_FLIPRGOFF( TT_ExecContext  exc,
                  FT_Long*        args )
@@ -5447,12 +5513,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SHP[a]:       SHift Point by the last point                           */
-  /* Opcode range: 0x32-0x33                                               */
-  /* Stack:        uint32... -->                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SHP[a]:       SHift Point by the last point
+   * Opcode range: 0x32-0x33
+   * Stack:        uint32... -->
+   */
   static void
   Ins_SHP( TT_ExecContext  exc )
   {
@@ -5504,16 +5570,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SHC[a]:       SHift Contour                                           */
-  /* Opcode range: 0x34-35                                                 */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
-  /* UNDOCUMENTED: According to Greg Hitchcock, there is one (virtual)     */
-  /*               contour in the twilight zone, namely contour number     */
-  /*               zero which includes all points of it.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SHC[a]:       SHift Contour
+   * Opcode range: 0x34-35
+   * Stack:        uint32 -->
+   *
+   * UNDOCUMENTED: According to Greg Hitchcock, there is one (virtual)
+   *               contour in the twilight zone, namely contour number
+   *               zero which includes all points of it.
+   */
   static void
   Ins_SHC( TT_ExecContext  exc,
            FT_Long*        args )
@@ -5560,12 +5626,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SHZ[a]:       SHift Zone                                              */
-  /* Opcode range: 0x36-37                                                 */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SHZ[a]:       SHift Zone
+   * Opcode range: 0x36-37
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SHZ( TT_ExecContext  exc,
            FT_Long*        args )
@@ -5608,12 +5674,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SHPIX[]:      SHift points by a PIXel amount                          */
-  /* Opcode range: 0x38                                                    */
-  /* Stack:        f26.6 uint32... -->                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SHPIX[]:      SHift points by a PIXel amount
+   * Opcode range: 0x38
+   * Stack:        f26.6 uint32... -->
+   */
   static void
   Ins_SHPIX( TT_ExecContext  exc,
              FT_Long*        args )
@@ -5768,12 +5834,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MSIRP[a]:     Move Stack Indirect Relative Position                   */
-  /* Opcode range: 0x3A-0x3B                                               */
-  /* Stack:        f26.6 uint32 -->                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MSIRP[a]:     Move Stack Indirect Relative Position
+   * Opcode range: 0x3A-0x3B
+   * Stack:        f26.6 uint32 -->
+   */
   static void
   Ins_MSIRP( TT_ExecContext  exc,
              FT_Long*        args )
@@ -5782,6 +5848,7 @@
     FT_F26Dot6  distance;
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
     FT_F26Dot6  control_value_cutin = 0;
+    FT_F26Dot6  delta;
 
 
     if ( SUBPIXEL_HINTING_INFINALITY )
@@ -5817,11 +5884,15 @@
     distance = PROJECT( exc->zp1.cur + point, exc->zp0.cur + exc->GS.rp0 );
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
+    delta = SUB_LONG( distance, args[1] );
+    if ( delta < 0 )
+      delta = NEG_LONG( delta );
+
     /* subpixel hinting - make MSIRP respect CVT cut-in; */
-    if ( SUBPIXEL_HINTING_INFINALITY                                    &&
-         exc->ignore_x_mode                                             &&
-         exc->GS.freeVector.x != 0                                      &&
-         FT_ABS( SUB_LONG( distance, args[1] ) ) >= control_value_cutin )
+    if ( SUBPIXEL_HINTING_INFINALITY  &&
+         exc->ignore_x_mode           &&
+         exc->GS.freeVector.x != 0    &&
+         delta >= control_value_cutin )
       distance = args[1];
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
@@ -5838,12 +5909,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MDAP[a]:      Move Direct Absolute Point                              */
-  /* Opcode range: 0x2E-0x2F                                               */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MDAP[a]:      Move Direct Absolute Point
+   * Opcode range: 0x2E-0x2F
+   * Stack:        uint32 -->
+   */
   static void
   Ins_MDAP( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5869,16 +5940,18 @@
       if ( SUBPIXEL_HINTING_INFINALITY &&
            exc->ignore_x_mode          &&
            exc->GS.freeVector.x != 0   )
-        distance = Round_None(
-                     exc,
-                     cur_dist,
-                     exc->tt_metrics.compensations[0] ) - cur_dist;
+        distance = SUB_LONG(
+                     Round_None( exc,
+                                 cur_dist,
+                                 exc->tt_metrics.compensations[0] ),
+                     cur_dist );
       else
 #endif
-        distance = exc->func_round(
-                     exc,
-                     cur_dist,
-                     exc->tt_metrics.compensations[0] ) - cur_dist;
+        distance = SUB_LONG(
+                     exc->func_round( exc,
+                                      cur_dist,
+                                      exc->tt_metrics.compensations[0] ),
+                     cur_dist );
     }
     else
       distance = 0;
@@ -5890,12 +5963,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MIAP[a]:      Move Indirect Absolute Point                            */
-  /* Opcode range: 0x3E-0x3F                                               */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MIAP[a]:      Move Indirect Absolute Point
+   * Opcode range: 0x3E-0x3F
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_MIAP( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5978,7 +6051,14 @@
 
     if ( ( exc->opcode & 1 ) != 0 )   /* rounding and control cut-in flag */
     {
-      if ( FT_ABS( distance - org_dist ) > control_value_cutin )
+      FT_F26Dot6  delta;
+
+
+      delta = SUB_LONG( distance, org_dist );
+      if ( delta < 0 )
+        delta = NEG_LONG( delta );
+
+      if ( delta > control_value_cutin )
         distance = org_dist;
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
@@ -6003,12 +6083,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MDRP[abcde]:  Move Direct Relative Point                              */
-  /* Opcode range: 0xC0-0xDF                                               */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MDRP[abcde]:  Move Direct Relative Point
+   * Opcode range: 0xC0-0xDF
+   * Stack:        uint32 -->
+   */
   static void
   Ins_MDRP( TT_ExecContext  exc,
             FT_Long*        args )
@@ -6147,12 +6227,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MIRP[abcde]:  Move Indirect Relative Point                            */
-  /* Opcode range: 0xE0-0xFF                                               */
-  /* Stack:        int32? uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MIRP[abcde]:  Move Indirect Relative Point
+   * Opcode range: 0xE0-0xFF
+   * Stack:        int32? uint32 -->
+   */
   static void
   Ins_MIRP( TT_ExecContext  exc,
             FT_Long*        args )
@@ -6172,11 +6252,13 @@
     FT_Bool     reverse_move = FALSE;
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
+    FT_F26Dot6  delta;
+
 
     minimum_distance    = exc->GS.minimum_distance;
     control_value_cutin = exc->GS.control_value_cutin;
     point               = (FT_UShort)args[0];
-    cvtEntry            = (FT_ULong)( args[1] + 1 );
+    cvtEntry            = (FT_ULong)( ADD_LONG( args[1], 1 ) );
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
     if ( SUBPIXEL_HINTING_INFINALITY                        &&
@@ -6204,8 +6286,11 @@
 
     /* single width test */
 
-    if ( FT_ABS( cvt_dist - exc->GS.single_width_value ) <
-         exc->GS.single_width_cutin )
+    delta = SUB_LONG( cvt_dist, exc->GS.single_width_value );
+    if ( delta < 0 )
+      delta = NEG_LONG( delta );
+
+    if ( delta < exc->GS.single_width_cutin )
     {
       if ( cvt_dist >= 0 )
         cvt_dist =  exc->GS.single_width_value;
@@ -6271,7 +6356,11 @@
         /*      `ttinst2.doc', version 1.66, is thus incorrect since  */
         /*      it implies `>=' instead of `>'.                       */
 
-        if ( FT_ABS( cvt_dist - org_dist ) > control_value_cutin )
+        delta = SUB_LONG( cvt_dist, org_dist );
+        if ( delta < 0 )
+          delta = NEG_LONG( delta );
+
+        if ( delta > control_value_cutin )
           cvt_dist = org_dist;
       }
 
@@ -6289,7 +6378,11 @@
            exc->ignore_x_mode           &&
            exc->GS.gep0 == exc->GS.gep1 )
       {
-        if ( FT_ABS( cvt_dist - org_dist ) > control_value_cutin )
+        delta = SUB_LONG( cvt_dist, org_dist );
+        if ( delta < 0 )
+          delta = NEG_LONG( delta );
+
+        if ( delta > control_value_cutin )
           cvt_dist = org_dist;
       }
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
@@ -6381,12 +6474,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ALIGNRP[]:    ALIGN Relative Point                                    */
-  /* Opcode range: 0x3C                                                    */
-  /* Stack:        uint32 uint32... -->                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ALIGNRP[]:    ALIGN Relative Point
+   * Opcode range: 0x3C
+   * Stack:        uint32 uint32... -->
+   */
   static void
   Ins_ALIGNRP( TT_ExecContext  exc )
   {
@@ -6444,12 +6537,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ISECT[]:      moves point to InterSECTion                             */
-  /* Opcode range: 0x0F                                                    */
-  /* Stack:        5 * uint32 -->                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ISECT[]:      moves point to InterSECTion
+   * Opcode range: 0x0F
+   * Stack:        5 * uint32 -->
+   */
   static void
   Ins_ISECT( TT_ExecContext  exc,
              FT_Long*        args )
@@ -6540,12 +6633,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ALIGNPTS[]:   ALIGN PoinTS                                            */
-  /* Opcode range: 0x27                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ALIGNPTS[]:   ALIGN PoinTS
+   * Opcode range: 0x27
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_ALIGNPTS( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -6572,12 +6665,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* IP[]:         Interpolate Point                                       */
-  /* Opcode range: 0x39                                                    */
-  /* Stack:        uint32... -->                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * IP[]:         Interpolate Point
+   * Opcode range: 0x39
+   * Stack:        uint32... -->
+   */
 
   /* SOMETIMES, DUMBER CODE IS BETTER CODE */
 
@@ -6732,12 +6825,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* UTP[a]:       UnTouch Point                                           */
-  /* Opcode range: 0x29                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * UTP[a]:       UnTouch Point
+   * Opcode range: 0x29
+   * Stack:        uint32 -->
+   */
   static void
   Ins_UTP( TT_ExecContext  exc,
            FT_Long*        args )
@@ -6901,12 +6994,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* IUP[a]:       Interpolate Untouched Points                            */
-  /* Opcode range: 0x30-0x31                                               */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * IUP[a]:       Interpolate Untouched Points
+   * Opcode range: 0x30-0x31
+   * Stack:        -->
+   */
   static void
   Ins_IUP( TT_ExecContext  exc )
   {
@@ -7029,12 +7122,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DELTAPn[]:    DELTA exceptions P1, P2, P3                             */
-  /* Opcode range: 0x5D,0x71,0x72                                          */
-  /* Stack:        uint32 (2 * uint32)... -->                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DELTAPn[]:    DELTA exceptions P1, P2, P3
+   * Opcode range: 0x5D,0x71,0x72
+   * Stack:        uint32 (2 * uint32)... -->
+   */
   static void
   Ins_DELTAP( TT_ExecContext  exc,
               FT_Long*        args )
@@ -7111,12 +7204,12 @@
           if ( SUBPIXEL_HINTING_INFINALITY )
           {
             /*
-             *  Allow delta move if
+             * Allow delta move if
              *
-             *  - not using ignore_x_mode rendering,
-             *  - glyph is specifically set to allow it, or
-             *  - glyph is composite and freedom vector is not in subpixel
-             *    direction.
+             * - not using ignore_x_mode rendering,
+             * - glyph is specifically set to allow it, or
+             * - glyph is composite and freedom vector is not in subpixel
+             *   direction.
              */
             if ( !exc->ignore_x_mode                                   ||
                  ( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_DO_DELTAP ) ||
@@ -7196,12 +7289,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DELTACn[]:    DELTA exceptions C1, C2, C3                             */
-  /* Opcode range: 0x73,0x74,0x75                                          */
-  /* Stack:        uint32 (2 * uint32)... -->                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DELTACn[]:    DELTA exceptions C1, C2, C3
+   * Opcode range: 0x73,0x74,0x75
+   * Stack:        uint32 (2 * uint32)... -->
+   */
   static void
   Ins_DELTAC( TT_ExecContext  exc,
               FT_Long*        args )
@@ -7274,27 +7367,27 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MISC. INSTRUCTIONS                                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * MISC. INSTRUCTIONS
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GETINFO[]:    GET INFOrmation                                         */
-  /* Opcode range: 0x88                                                    */
-  /* Stack:        uint32 --> uint32                                       */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: Selector bits higher than 9 are currently (May     */
-  /*      2015) not documented in the OpenType specification.              */
-  /*                                                                       */
-  /*      Selector bit 11 is incorrectly described as bit 8, while the     */
-  /*      real meaning of bit 8 (vertical LCD subpixels) stays             */
-  /*      undocumented.  The same mistake can be found in Greg Hitchcock's */
-  /*      whitepaper.                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GETINFO[]:    GET INFOrmation
+   * Opcode range: 0x88
+   * Stack:        uint32 --> uint32
+   *
+   * XXX: UNDOCUMENTED: Selector bits higher than 9 are currently (May
+   *      2015) not documented in the OpenType specification.
+   *
+   *      Selector bit 11 is incorrectly described as bit 8, while the
+   *      real meaning of bit 8 (vertical LCD subpixels) stays
+   *      undocumented.  The same mistake can be found in Greg Hitchcock's
+   *      whitepaper.
+   */
   static void
   Ins_GETINFO( TT_ExecContext  exc,
                FT_Long*        args )
@@ -7306,11 +7399,11 @@
     K = 0;
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
-    /********************************/
-    /* RASTERIZER VERSION           */
-    /* Selector Bit:  0             */
-    /* Return Bit(s): 0-7           */
-    /*                              */
+    /*********************************
+     * RASTERIZER VERSION
+     * Selector Bit:  0
+     * Return Bit(s): 0-7
+     */
     if ( SUBPIXEL_HINTING_INFINALITY &&
          ( args[0] & 1 ) != 0        &&
          exc->subpixel_hinting       )
@@ -7331,39 +7424,40 @@
       if ( ( args[0] & 1 ) != 0 )
         K = driver->interpreter_version;
 
-    /********************************/
-    /* GLYPH ROTATED                */
-    /* Selector Bit:  1             */
-    /* Return Bit(s): 8             */
-    /*                              */
+    /*********************************
+     * GLYPH ROTATED
+     * Selector Bit:  1
+     * Return Bit(s): 8
+     */
     if ( ( args[0] & 2 ) != 0 && exc->tt_metrics.rotated )
       K |= 1 << 8;
 
-    /********************************/
-    /* GLYPH STRETCHED              */
-    /* Selector Bit:  2             */
-    /* Return Bit(s): 9             */
-    /*                              */
+    /*********************************
+     * GLYPH STRETCHED
+     * Selector Bit:  2
+     * Return Bit(s): 9
+     */
     if ( ( args[0] & 4 ) != 0 && exc->tt_metrics.stretched )
       K |= 1 << 9;
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
-    /********************************/
-    /* VARIATION GLYPH              */
-    /* Selector Bit:  3             */
-    /* Return Bit(s): 10            */
-    /*                              */
-    /* XXX: UNDOCUMENTED!           */
+    /*********************************
+     * VARIATION GLYPH
+     * Selector Bit:  3
+     * Return Bit(s): 10
+     *
+     * XXX: UNDOCUMENTED!
+     */
     if ( (args[0] & 8 ) != 0 && exc->face->blend )
       K |= 1 << 10;
 #endif
 
-    /********************************/
-    /* BI-LEVEL HINTING AND         */
-    /* GRAYSCALE RENDERING          */
-    /* Selector Bit:  5             */
-    /* Return Bit(s): 12            */
-    /*                              */
+    /*********************************
+     * BI-LEVEL HINTING AND
+     * GRAYSCALE RENDERING
+     * Selector Bit:  5
+     * Return Bit(s): 12
+     */
     if ( ( args[0] & 32 ) != 0 && exc->grayscale )
       K |= 1 << 12;
 
@@ -7374,50 +7468,54 @@
     /* Bold Italic'. */
     if ( SUBPIXEL_HINTING_MINIMAL && exc->subpixel_hinting_lean )
     {
-      /********************************/
-      /* HINTING FOR SUBPIXEL         */
-      /* Selector Bit:  6             */
-      /* Return Bit(s): 13            */
-      /*                              */
-      /* v40 does subpixel hinting by default. */
+      /*********************************
+       * HINTING FOR SUBPIXEL
+       * Selector Bit:  6
+       * Return Bit(s): 13
+       *
+       * v40 does subpixel hinting by default.
+       */
       if ( ( args[0] & 64 ) != 0 )
         K |= 1 << 13;
 
-      /********************************/
-      /* VERTICAL LCD SUBPIXELS?      */
-      /* Selector Bit:  8             */
-      /* Return Bit(s): 15            */
-      /*                              */
+      /*********************************
+       * VERTICAL LCD SUBPIXELS?
+       * Selector Bit:  8
+       * Return Bit(s): 15
+       */
       if ( ( args[0] & 256 ) != 0 && exc->vertical_lcd_lean )
         K |= 1 << 15;
 
-      /********************************/
-      /* SUBPIXEL POSITIONED?         */
-      /* Selector Bit:  10            */
-      /* Return Bit(s): 17            */
-      /*                              */
-      /* XXX: FreeType supports it, dependent on what client does? */
+      /*********************************
+       * SUBPIXEL POSITIONED?
+       * Selector Bit:  10
+       * Return Bit(s): 17
+       *
+       * XXX: FreeType supports it, dependent on what client does?
+       */
       if ( ( args[0] & 1024 ) != 0 )
         K |= 1 << 17;
 
-      /********************************/
-      /* SYMMETRICAL SMOOTHING        */
-      /* Selector Bit:  11            */
-      /* Return Bit(s): 18            */
-      /*                              */
-      /* The only smoothing method FreeType supports unless someone sets */
-      /* FT_LOAD_TARGET_MONO.                                            */
+      /*********************************
+       * SYMMETRICAL SMOOTHING
+       * Selector Bit:  11
+       * Return Bit(s): 18
+       *
+       * The only smoothing method FreeType supports unless someone sets
+       * FT_LOAD_TARGET_MONO.
+       */
       if ( ( args[0] & 2048 ) != 0 && exc->subpixel_hinting_lean )
         K |= 1 << 18;
 
-      /********************************/
-      /* CLEARTYPE HINTING AND        */
-      /* GRAYSCALE RENDERING          */
-      /* Selector Bit:  12            */
-      /* Return Bit(s): 19            */
-      /*                              */
-      /* Grayscale rendering is what FreeType does anyway unless someone */
-      /* sets FT_LOAD_TARGET_MONO or FT_LOAD_TARGET_LCD(_V)              */
+      /*********************************
+       * CLEARTYPE HINTING AND
+       * GRAYSCALE RENDERING
+       * Selector Bit:  12
+       * Return Bit(s): 19
+       *
+       * Grayscale rendering is what FreeType does anyway unless someone
+       * sets FT_LOAD_TARGET_MONO or FT_LOAD_TARGET_LCD(_V)
+       */
       if ( ( args[0] & 4096 ) != 0 && exc->grayscale_cleartype )
         K |= 1 << 19;
     }
@@ -7431,67 +7529,73 @@
 
       if ( exc->rasterizer_version >= 37 )
       {
-        /********************************/
-        /* HINTING FOR SUBPIXEL         */
-        /* Selector Bit:  6             */
-        /* Return Bit(s): 13            */
-        /*                              */
+        /*********************************
+         * HINTING FOR SUBPIXEL
+         * Selector Bit:  6
+         * Return Bit(s): 13
+         */
         if ( ( args[0] & 64 ) != 0 && exc->subpixel_hinting )
           K |= 1 << 13;
 
-        /********************************/
-        /* COMPATIBLE WIDTHS ENABLED    */
-        /* Selector Bit:  7             */
-        /* Return Bit(s): 14            */
-        /*                              */
-        /* Functionality still needs to be added */
+        /*********************************
+         * COMPATIBLE WIDTHS ENABLED
+         * Selector Bit:  7
+         * Return Bit(s): 14
+         *
+         * Functionality still needs to be added
+         */
         if ( ( args[0] & 128 ) != 0 && exc->compatible_widths )
           K |= 1 << 14;
 
-        /********************************/
-        /* VERTICAL LCD SUBPIXELS?      */
-        /* Selector Bit:  8             */
-        /* Return Bit(s): 15            */
-        /*                              */
-        /* Functionality still needs to be added */
+        /*********************************
+         * VERTICAL LCD SUBPIXELS?
+         * Selector Bit:  8
+         * Return Bit(s): 15
+         *
+         * Functionality still needs to be added
+         */
         if ( ( args[0] & 256 ) != 0 && exc->vertical_lcd )
           K |= 1 << 15;
 
-        /********************************/
-        /* HINTING FOR BGR?             */
-        /* Selector Bit:  9             */
-        /* Return Bit(s): 16            */
-        /*                              */
-        /* Functionality still needs to be added */
+        /*********************************
+         * HINTING FOR BGR?
+         * Selector Bit:  9
+         * Return Bit(s): 16
+         *
+         * Functionality still needs to be added
+         */
         if ( ( args[0] & 512 ) != 0 && exc->bgr )
           K |= 1 << 16;
 
         if ( exc->rasterizer_version >= 38 )
         {
-          /********************************/
-          /* SUBPIXEL POSITIONED?         */
-          /* Selector Bit:  10            */
-          /* Return Bit(s): 17            */
-          /*                              */
-          /* Functionality still needs to be added */
+          /*********************************
+           * SUBPIXEL POSITIONED?
+           * Selector Bit:  10
+           * Return Bit(s): 17
+           *
+           * Functionality still needs to be added
+           */
           if ( ( args[0] & 1024 ) != 0 && exc->subpixel_positioned )
             K |= 1 << 17;
 
-          /********************************/
-          /* SYMMETRICAL SMOOTHING        */
-          /* Selector Bit:  11            */
-          /* Return Bit(s): 18            */
-          /*                              */
-          /* Functionality still needs to be added */
+          /*********************************
+           * SYMMETRICAL SMOOTHING
+           * Selector Bit:  11
+           * Return Bit(s): 18
+           *
+           * Functionality still needs to be added
+           */
           if ( ( args[0] & 2048 ) != 0 && exc->symmetrical_smoothing )
             K |= 1 << 18;
 
-          /********************************/
-          /* GRAY CLEARTYPE               */
-          /* Selector Bit:  12            */
-          /* Return Bit(s): 19            */
-          /*                              */
-          /* Functionality still needs to be added */
+          /*********************************
+           * GRAY CLEARTYPE
+           * Selector Bit:  12
+           * Return Bit(s): 19
+           *
+           * Functionality still needs to be added
+           */
           if ( ( args[0] & 4096 ) != 0 && exc->gray_cleartype )
             K |= 1 << 19;
         }
@@ -7506,16 +7610,16 @@
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GETVARIATION[]: get normalized variation (blend) coordinates          */
-  /* Opcode range: 0x91                                                    */
-  /* Stack:        --> f2.14...                                            */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED!  There is no official documentation from Apple for */
-  /*      this bytecode instruction.  Active only if a font has GX         */
-  /*      variation axes.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GETVARIATION[]: get normalized variation (blend) coordinates
+   * Opcode range: 0x91
+   * Stack:        --> f2.14...
+   *
+   * XXX: UNDOCUMENTED!  There is no official documentation from Apple for
+   *      this bytecode instruction.  Active only if a font has GX
+   *      variation axes.
+   */
   static void
   Ins_GETVARIATION( TT_ExecContext  exc,
                     FT_Long*        args )
@@ -7545,15 +7649,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GETDATA[]:    no idea what this is good for                           */
-  /* Opcode range: 0x92                                                    */
-  /* Stack:        --> 17                                                  */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED!  There is no documentation from Apple for this     */
-  /*      very weird bytecode instruction.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GETDATA[]:    no idea what this is good for
+   * Opcode range: 0x92
+   * Stack:        --> 17
+   *
+   * XXX: UNDOCUMENTED!  There is no documentation from Apple for this
+   *      very weird bytecode instruction.
+   */
   static void
   Ins_GETDATA( FT_Long*  args )
   {
@@ -7601,34 +7705,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RUN                                                                   */
-  /*                                                                       */
-  /*  This function executes a run of opcodes.  It will exit in the        */
-  /*  following cases:                                                     */
-  /*                                                                       */
-  /*  - Errors (in which case it returns FALSE).                           */
-  /*                                                                       */
-  /*  - Reaching the end of the main code range (returns TRUE).            */
-  /*    Reaching the end of a code range within a function call is an      */
-  /*    error.                                                             */
-  /*                                                                       */
-  /*  - After executing one single opcode, if the flag `Instruction_Trap'  */
-  /*    is set to TRUE (returns TRUE).                                     */
-  /*                                                                       */
-  /*  On exit with TRUE, test IP < CodeSize to know whether it comes from  */
-  /*  an instruction trap or a normal termination.                         */
-  /*                                                                       */
-  /*                                                                       */
-  /*  Note: The documented DEBUG opcode pops a value from the stack.  This */
-  /*        behaviour is unsupported; here a DEBUG opcode is always an     */
-  /*        error.                                                         */
-  /*                                                                       */
-  /*                                                                       */
-  /* THIS IS THE INTERPRETER'S MAIN LOOP.                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * RUN
+   *
+   * This function executes a run of opcodes.  It will exit in the
+   * following cases:
+   *
+   * - Errors (in which case it returns FALSE).
+   *
+   * - Reaching the end of the main code range (returns TRUE).
+   *   Reaching the end of a code range within a function call is an
+   *   error.
+   *
+   * - After executing one single opcode, if the flag `Instruction_Trap'
+   *   is set to TRUE (returns TRUE).
+   *
+   * On exit with TRUE, test IP < CodeSize to know whether it comes from
+   * an instruction trap or a normal termination.
+   *
+   *
+   * Note: The documented DEBUG opcode pops a value from the stack.  This
+   *       behaviour is unsupported; here a DEBUG opcode is always an
+   *       error.
+   *
+   *
+   * THIS IS THE INTERPRETER'S MAIN LOOP.
+   *
+   */
 
 
   /* documentation is in ttinterp.h */
@@ -7660,16 +7764,16 @@
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
     /*
-     *  Toggle backward compatibility according to what font wants, except
-     *  when
+     * Toggle backward compatibility according to what font wants, except
+     * when
      *
-     *  1) we have a `tricky' font that heavily relies on the interpreter to
-     *     render glyphs correctly, for example DFKai-SB, or
-     *  2) FT_RENDER_MODE_MONO (i.e, monochome rendering) is requested.
+     * 1) we have a `tricky' font that heavily relies on the interpreter to
+     *    render glyphs correctly, for example DFKai-SB, or
+     * 2) FT_RENDER_MODE_MONO (i.e, monochome rendering) is requested.
      *
-     *  In those cases, backward compatibility needs to be turned off to get
-     *  correct rendering.  The rendering is then completely up to the
-     *  font's programming.
+     * In those cases, backward compatibility needs to be turned off to get
+     * correct rendering.  The rendering is then completely up to the
+     * font's programming.
      *
      */
     if ( SUBPIXEL_HINTING_MINIMAL          &&
@@ -8495,8 +8599,8 @@
 
   LNo_Error_:
     FT_TRACE4(( "  %d instruction%s executed\n",
-                ins_counter == 1 ? "" : "s",
-                ins_counter ));
+                ins_counter,
+                ins_counter == 1 ? "" : "s" ));
     return FT_Err_Ok;
 
   LErrorCodeOverflow_:
diff --git a/src/truetype/ttinterp.h b/src/truetype/ttinterp.h
index 2966439..172cdd0 100644
--- a/src/truetype/ttinterp.h
+++ b/src/truetype/ttinterp.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttinterp.h                                                             */
-/*                                                                         */
-/*    TrueType bytecode interpreter (specification).                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttinterp.h
+ *
+ *   TrueType bytecode interpreter (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTINTERP_H_
@@ -26,10 +26,10 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Rounding mode constants.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Rounding mode constants.
+   */
 #define TT_Round_Off             5
 #define TT_Round_To_Half_Grid    0
 #define TT_Round_To_Grid         1
@@ -40,13 +40,13 @@
 #define TT_Round_Super_45        7
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Function types used by the interpreter, depending on various modes    */
-  /* (e.g. the rounding mode, whether to render a vertical or horizontal   */
-  /* line etc).                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Function types used by the interpreter, depending on various modes
+   * (e.g. the rounding mode, whether to render a vertical or horizontal
+   * line etc).
+   *
+   */
 
   /* Rounding function */
   typedef FT_F26Dot6
@@ -84,10 +84,10 @@
                       FT_F26Dot6      value );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This structure defines a call record, used to manage function calls.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * This structure defines a call record, used to manage function calls.
+   */
   typedef struct  TT_CallRec_
   {
     FT_Int   Caller_Range;
@@ -101,11 +101,11 @@
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* These structures define rules used to tweak subpixel hinting for      */
-  /* various fonts.  "", 0, "", NULL value indicates to match any value.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * These structures define rules used to tweak subpixel hinting for
+   * various fonts.  "", 0, "", NULL value indicates to match any value.
+   */
 
 #define SPH_MAX_NAME_SIZE      32
 #define SPH_MAX_CLASS_MEMBERS  100
@@ -141,11 +141,11 @@
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The main structure for the interpreter which collects all necessary   */
-  /* variables and states.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The main structure for the interpreter which collects all necessary
+   * variables and states.
+   */
   typedef struct  TT_ExecContextRec_
   {
     TT_Face            face;
@@ -464,26 +464,27 @@
 #endif /* TT_USE_BYTECODE_INTERPRETER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_New_Context                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Queries the face context for a given font.  Note that there is     */
-  /*    now a _single_ execution context in the TrueType driver which is   */
-  /*    shared among faces.                                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the source face object.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A handle to the execution context.  Initialized for `face'.        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only the glyph loader and debugger should call this function.      */
-  /*    (And right now only the glyph loader uses it.)                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_New_Context
+   *
+   * @Description:
+   *   Queries the face context for a given font.  Note that there is
+   *   now a _single_ execution context in the TrueType driver which is
+   *   shared among faces.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @Return:
+   *   A handle to the execution context.  Initialized for `face'.
+   *
+   * @Note:
+   *   Only the glyph loader and debugger should call this function.
+   *   (And right now only the glyph loader uses it.)
+   */
   FT_EXPORT( TT_ExecContext )
   TT_New_Context( TT_Driver  driver );
 
@@ -506,27 +507,28 @@
 #endif /* TT_USE_BYTECODE_INTERPRETER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_RunIns                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Executes one or more instruction in the execution context.  This   */
-  /*    is the main function of the TrueType opcode interpreter.           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    exec :: A handle to the target execution context.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only the object manager and debugger should call this function.    */
-  /*                                                                       */
-  /*    This function is publicly exported because it is directly          */
-  /*    invoked by the TrueType debugger.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_RunIns
+   *
+   * @Description:
+   *   Executes one or more instruction in the execution context.  This
+   *   is the main function of the TrueType opcode interpreter.
+   *
+   * @Input:
+   *   exec ::
+   *     A handle to the target execution context.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   *
+   * @Note:
+   *   Only the object manager and debugger should call this function.
+   *
+   *   This function is publicly exported because it is directly
+   *   invoked by the TrueType debugger.
+   */
   FT_EXPORT( FT_Error )
   TT_RunIns( TT_ExecContext  exec );
 
diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
index bc8086f..df6c72a 100644
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttobjs.c                                                               */
-/*                                                                         */
-/*    Objects manager (body).                                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttobjs.c
+ *
+ *   Objects manager (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -36,36 +36,37 @@
 #include "ttgxvar.h"
 #endif
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttobjs
 
 
 #ifdef TT_USE_BYTECODE_INTERPRETER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                       GLYPH ZONE FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                      GLYPH ZONE FUNCTIONS
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_glyphzone_done                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deallocate a glyph zone.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    zone :: A pointer to the target glyph zone.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_glyphzone_done
+   *
+   * @Description:
+   *   Deallocate a glyph zone.
+   *
+   * @Input:
+   *   zone ::
+   *     A pointer to the target glyph zone.
+   */
   FT_LOCAL_DEF( void )
   tt_glyphzone_done( TT_GlyphZone  zone )
   {
@@ -87,27 +88,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_glyphzone_new                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Allocate a new glyph zone.                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory      :: A handle to the current memory object.              */
-  /*                                                                       */
-  /*    maxPoints   :: The capacity of glyph zone in points.               */
-  /*                                                                       */
-  /*    maxContours :: The capacity of glyph zone in contours.             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    zone        :: A pointer to the target glyph zone record.          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_glyphzone_new
+   *
+   * @Description:
+   *   Allocate a new glyph zone.
+   *
+   * @Input:
+   *   memory ::
+   *     A handle to the current memory object.
+   *
+   *   maxPoints ::
+   *     The capacity of glyph zone in points.
+   *
+   *   maxContours ::
+   *     The capacity of glyph zone in contours.
+   *
+   * @Output:
+   *   zone ::
+   *     A pointer to the target glyph zone record.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_glyphzone_new( FT_Memory     memory,
                     FT_UShort     maxPoints,
@@ -147,7 +152,7 @@
   {
 
 #define TRICK_NAMES_MAX_CHARACTERS  19
-#define TRICK_NAMES_COUNT           23
+#define TRICK_NAMES_COUNT           26
 
     static const char trick_names[TRICK_NAMES_COUNT]
                                  [TRICK_NAMES_MAX_CHARACTERS + 1] =
@@ -167,12 +172,15 @@
       "DFGirl-W6-WIN-BF",   /* dftt-h6.ttf; version 1.00, 1993 */
       "DFGothic-EB",        /* DynaLab Inc. 1992-1995 */
       "DFGyoSho-Lt",        /* DynaLab Inc. 1992-1995 */
+      "DFHei-Md-HK-BF",     /* maybe DynaLab Inc. */
       "DFHSGothic-W5",      /* DynaLab Inc. 1992-1995 */
       "DFHSMincho-W3",      /* DynaLab Inc. 1992-1995 */
       "DFHSMincho-W7",      /* DynaLab Inc. 1992-1995 */
       "DFKaiSho-SB",        /* dfkaisb.ttf */
       "DFKaiShu",
+      "DFKaiShu-Md-HK-BF",  /* maybe DynaLab Inc. */
       "DFKai-SB",           /* kaiu.ttf; version 3.00, 1998 [DFKaiShu-SB-Estd-BF] */
+      "DFMing-Bd-HK-BF",    /* maybe DynaLab Inc. */
       "DLC",                /* dftt-m7.ttf; version 1.00, 1993 [DLCMingBold] */
                             /* dftt-f5.ttf; version 1.00, 1993 [DLCFongSung] */
       "DLCHayMedium",       /* dftt-b5.ttf; version 1.00, 1993 */
@@ -270,7 +278,7 @@
   tt_check_trickyness_sfnt_ids( TT_Face  face )
   {
 #define TRICK_SFNT_IDS_PER_FACE   3
-#define TRICK_SFNT_IDS_NUM_FACES  26
+#define TRICK_SFNT_IDS_NUM_FACES  29
 
     static const tt_sfnt_id_rec sfnt_id[TRICK_SFNT_IDS_NUM_FACES]
                                        [TRICK_SFNT_IDS_PER_FACE] = {
@@ -299,6 +307,11 @@
         { 0xCE5956E9UL, 0x0000BC85UL }, /* fpgm */
         { 0x8272F416UL, 0x00000045UL }  /* prep */
       },
+      { /* DFHei-Md-HK-BF */
+        { 0x1257EB46UL, 0x00000350UL }, /* cvt  */
+        { 0xF699D160UL, 0x0000715FUL }, /* fpgm */
+        { 0xD222F568UL, 0x000003BCUL }  /* prep */
+      },
       { /* DFHSGothic-W5 */
         { 0x1262EB4EUL, 0x00000350UL }, /* cvt  */
         { 0xE86A5D64UL, 0x00007940UL }, /* fpgm */
@@ -324,6 +337,16 @@
         { 0xA6E78C01UL, 0x00008998UL }, /* fpgm */
         { 0x13A42602UL, 0x0000007EUL }  /* prep */
       },
+      { /* DFKaiShu-Md-HK-BF */
+        { 0x11E5EAD4UL, 0x00000360UL }, /* cvt  */
+        { 0x9DB282B2UL, 0x0000C06EUL }, /* fpgm */
+        { 0x53E6D7CAUL, 0x00000082UL }  /* prep */
+      },
+      { /* DFMing-Bd-HK-BF */
+        { 0x1243EB18UL, 0x00000350UL }, /* cvt  */
+        { 0xBA0A8C30UL, 0x000074ADUL }, /* fpgm */
+        { 0xF3D83409UL, 0x0000037BUL }  /* prep */
+      },
       { /* DLCLiShu */
         { 0x07DCF546UL, 0x00000308UL }, /* cvt  */
         { 0x40FE7C90UL, 0x00008E2AUL }, /* fpgm */
@@ -548,32 +571,37 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_init                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a given TrueType face object.                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream     :: The source font stream.                              */
-  /*                                                                       */
-  /*    face_index :: The index of the TrueType font, if we are opening a  */
-  /*                  collection, in bits 0-15.  The numbered instance     */
-  /*                  index~+~1 of a GX (sub)font, if applicable, in bits  */
-  /*                  16-30.                                               */
-  /*                                                                       */
-  /*    num_params :: Number of additional generic parameters.  Ignored.   */
-  /*                                                                       */
-  /*    params     :: Additional generic parameters.  Ignored.             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The newly built face object.                         */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_init
+   *
+   * @Description:
+   *   Initialize a given TrueType face object.
+   *
+   * @Input:
+   *   stream ::
+   *     The source font stream.
+   *
+   *   face_index ::
+   *     The index of the TrueType font, if we are opening a
+   *     collection, in bits 0-15.  The numbered instance
+   *     index~+~1 of a GX (sub)font, if applicable, in bits
+   *     16-30.
+   *
+   *   num_params ::
+   *     Number of additional generic parameters.  Ignored.
+   *
+   *   params ::
+   *     Additional generic parameters.  Ignored.
+   *
+   * @InOut:
+   *   face ::
+   *     The newly built face object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_init( FT_Stream      stream,
                 FT_Face        ttface,      /* TT_Face */
@@ -725,17 +753,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_done                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalize a given face object.                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A pointer to the face object to destroy.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_done
+   *
+   * @Description:
+   *   Finalize a given face object.
+   *
+   * @Input:
+   *   face ::
+   *     A pointer to the face object to destroy.
+   */
   FT_LOCAL_DEF( void )
   tt_face_done( FT_Face  ttface )           /* TT_Face */
   {
@@ -781,30 +810,32 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                           SIZE  FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                          SIZE  FUNCTIONS
+   *
+   */
 
 #ifdef TT_USE_BYTECODE_INTERPRETER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_run_fpgm                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Run the font program.                                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size     :: A handle to the size object.                           */
-  /*                                                                       */
-  /*    pedantic :: Set if bytecode execution should be pedantic.          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_run_fpgm
+   *
+   * @Description:
+   *   Run the font program.
+   *
+   * @Input:
+   *   size ::
+   *     A handle to the size object.
+   *
+   *   pedantic ::
+   *     Set if bytecode execution should be pedantic.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_size_run_fpgm( TT_Size  size,
                     FT_Bool  pedantic )
@@ -881,22 +912,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_run_prep                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Run the control value program.                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size     :: A handle to the size object.                           */
-  /*                                                                       */
-  /*    pedantic :: Set if bytecode execution should be pedantic.          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_run_prep
+   *
+   * @Description:
+   *   Run the control value program.
+   *
+   * @Input:
+   *   size ::
+   *     A handle to the size object.
+   *
+   *   pedantic ::
+   *     Set if bytecode execution should be pedantic.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_size_run_prep( TT_Size  size,
                     FT_Bool  pedantic )
@@ -1173,20 +1206,21 @@
 #endif /* TT_USE_BYTECODE_INTERPRETER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_init                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a new TrueType size object.                             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    size :: A handle to the size object.                               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_init
+   *
+   * @Description:
+   *   Initialize a new TrueType size object.
+   *
+   * @InOut:
+   *   size ::
+   *     A handle to the size object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_size_init( FT_Size  ttsize )           /* TT_Size */
   {
@@ -1206,17 +1240,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_done                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The TrueType size object finalizer.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size :: A handle to the target size object.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_done
+   *
+   * @Description:
+   *   The TrueType size object finalizer.
+   *
+   * @Input:
+   *   size ::
+   *     A handle to the target size object.
+   */
   FT_LOCAL_DEF( void )
   tt_size_done( FT_Size  ttsize )           /* TT_Size */
   {
@@ -1231,22 +1266,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_reset                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reset a TrueType size when resolutions and character dimensions    */
-  /*    have been changed.                                                 */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size        :: A handle to the target size object.                 */
-  /*                                                                       */
-  /*    only_height :: Only recompute ascender, descender, and height;     */
-  /*                   this flag is used for variation fonts where         */
-  /*                   `tt_size_reset' is used as an iterator function.    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_reset
+   *
+   * @Description:
+   *   Reset a TrueType size when resolutions and character dimensions
+   *   have been changed.
+   *
+   * @Input:
+   *   size ::
+   *     A handle to the target size object.
+   *
+   *   only_height ::
+   *     Only recompute ascender, descender, and height;
+   *     this flag is used for variation fonts where
+   *     `tt_size_reset' is used as an iterator function.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_size_reset( TT_Size  size,
                  FT_Bool  only_height )
@@ -1340,20 +1377,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_driver_init                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a given TrueType driver object.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target driver object.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_driver_init
+   *
+   * @Description:
+   *   Initialize a given TrueType driver object.
+   *
+   * @Input:
+   *   driver ::
+   *     A handle to the target driver object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_driver_init( FT_Module  ttdriver )     /* TT_Driver */
   {
@@ -1380,17 +1418,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_driver_done                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalize a given TrueType driver.                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target TrueType driver.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_driver_done
+   *
+   * @Description:
+   *   Finalize a given TrueType driver.
+   *
+   * @Input:
+   *   driver ::
+   *     A handle to the target TrueType driver.
+   */
   FT_LOCAL_DEF( void )
   tt_driver_done( FT_Module  ttdriver )     /* TT_Driver */
   {
@@ -1398,20 +1437,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_slot_init                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a new slot object.                                      */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    slot :: A handle to the slot object.                               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_slot_init
+   *
+   * @Description:
+   *   Initialize a new slot object.
+   *
+   * @InOut:
+   *   slot ::
+   *     A handle to the slot object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_slot_init( FT_GlyphSlot  slot )
   {
diff --git a/src/truetype/ttobjs.h b/src/truetype/ttobjs.h
index 38fa30e..dcff3f7 100644
--- a/src/truetype/ttobjs.h
+++ b/src/truetype/ttobjs.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttobjs.h                                                               */
-/*                                                                         */
-/*    Objects manager (specification).                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttobjs.h
+ *
+ *   Objects manager (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTOBJS_H_
@@ -28,40 +28,40 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    TT_Driver                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a TrueType driver object.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   TT_Driver
+   *
+   * @Description:
+   *   A handle to a TrueType driver object.
+   */
   typedef struct TT_DriverRec_*  TT_Driver;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    TT_GlyphSlot                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a TrueType glyph slot object.                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This is a direct typedef of FT_GlyphSlot, as there is nothing      */
-  /*    specific about the TrueType glyph slot.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   TT_GlyphSlot
+   *
+   * @Description:
+   *   A handle to a TrueType glyph slot object.
+   *
+   * @Note:
+   *   This is a direct typedef of FT_GlyphSlot, as there is nothing
+   *   specific about the TrueType glyph slot.
+   */
   typedef FT_GlyphSlot  TT_GlyphSlot;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_GraphicsState                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The TrueType graphics state used during bytecode interpretation.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   TT_GraphicsState
+   *
+   * @Description:
+   *   The TrueType graphics state used during bytecode interpretation.
+   */
   typedef struct  TT_GraphicsState_
   {
     FT_UShort      rp0;
@@ -113,25 +113,25 @@
 
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  EXECUTION SUBTABLES                                                  */
-  /*                                                                       */
-  /*  These sub-tables relate to instruction execution.                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * EXECUTION SUBTABLES
+   *
+   * These sub-tables relate to instruction execution.
+   *
+   */
 
 
 #define TT_MAX_CODE_RANGES  3
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* There can only be 3 active code ranges at once:                       */
-  /*   - the Font Program                                                  */
-  /*   - the CVT Program                                                   */
-  /*   - a glyph's instructions set                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * There can only be 3 active code ranges at once:
+   *   - the Font Program
+   *   - the CVT Program
+   *   - a glyph's instructions set
+   */
   typedef enum  TT_CodeRange_Tag_
   {
     tt_coderange_none = 0,
@@ -152,10 +152,10 @@
   typedef TT_CodeRange  TT_CodeRangeTable[TT_MAX_CODE_RANGES];
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Defines a function/instruction definition record.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Defines a function/instruction definition record.
+   */
   typedef struct  TT_DefRecord_
   {
     FT_Int    range;          /* in which code range is it located?     */
@@ -169,10 +169,10 @@
   } TT_DefRecord, *TT_DefArray;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Subglyph transformation record.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Subglyph transformation record.
+   */
   typedef struct  TT_Transform_
   {
     FT_Fixed    xx, xy;     /* transformation matrix coefficients */
@@ -182,72 +182,72 @@
   } TT_Transform;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* A note regarding non-squared pixels:                                  */
-  /*                                                                       */
-  /* (This text will probably go into some docs at some time; for now, it  */
-  /* is kept here to explain some definitions in the TT_Size_Metrics       */
-  /* record).                                                              */
-  /*                                                                       */
-  /* The CVT is a one-dimensional array containing values that control     */
-  /* certain important characteristics in a font, like the height of all   */
-  /* capitals, all lowercase letter, default spacing or stem width/height. */
-  /*                                                                       */
-  /* These values are found in FUnits in the font file, and must be scaled */
-  /* to pixel coordinates before being used by the CVT and glyph programs. */
-  /* Unfortunately, when using distinct x and y resolutions (or distinct x */
-  /* and y pointsizes), there are two possible scalings.                   */
-  /*                                                                       */
-  /* A first try was to implement a `lazy' scheme where all values were    */
-  /* scaled when first used.  However, while some values are always used   */
-  /* in the same direction, some others are used under many different      */
-  /* circumstances and orientations.                                       */
-  /*                                                                       */
-  /* I have found a simpler way to do the same, and it even seems to work  */
-  /* in most of the cases:                                                 */
-  /*                                                                       */
-  /* - All CVT values are scaled to the maximum ppem size.                 */
-  /*                                                                       */
-  /* - When performing a read or write in the CVT, a ratio factor is used  */
-  /*   to perform adequate scaling.  Example:                              */
-  /*                                                                       */
-  /*     x_ppem = 14                                                       */
-  /*     y_ppem = 10                                                       */
-  /*                                                                       */
-  /*   We choose ppem = x_ppem = 14 as the CVT scaling size.  All cvt      */
-  /*   entries are scaled to it.                                           */
-  /*                                                                       */
-  /*     x_ratio = 1.0                                                     */
-  /*     y_ratio = y_ppem/ppem (< 1.0)                                     */
-  /*                                                                       */
-  /*   We compute the current ratio like:                                  */
-  /*                                                                       */
-  /*   - If projVector is horizontal,                                      */
-  /*       ratio = x_ratio = 1.0                                           */
-  /*                                                                       */
-  /*   - if projVector is vertical,                                        */
-  /*       ratio = y_ratio                                                 */
-  /*                                                                       */
-  /*   - else,                                                             */
-  /*       ratio = sqrt( (proj.x * x_ratio) ^ 2 + (proj.y * y_ratio) ^ 2 ) */
-  /*                                                                       */
-  /*   Reading a cvt value returns                                         */
-  /*     ratio * cvt[index]                                                */
-  /*                                                                       */
-  /*   Writing a cvt value in pixels:                                      */
-  /*     cvt[index] / ratio                                                */
-  /*                                                                       */
-  /*   The current ppem is simply                                          */
-  /*     ratio * ppem                                                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * A note regarding non-squared pixels:
+   *
+   * (This text will probably go into some docs at some time; for now, it
+   * is kept here to explain some definitions in the TT_Size_Metrics
+   * record).
+   *
+   * The CVT is a one-dimensional array containing values that control
+   * certain important characteristics in a font, like the height of all
+   * capitals, all lowercase letter, default spacing or stem width/height.
+   *
+   * These values are found in FUnits in the font file, and must be scaled
+   * to pixel coordinates before being used by the CVT and glyph programs.
+   * Unfortunately, when using distinct x and y resolutions (or distinct x
+   * and y pointsizes), there are two possible scalings.
+   *
+   * A first try was to implement a `lazy' scheme where all values were
+   * scaled when first used.  However, while some values are always used
+   * in the same direction, some others are used under many different
+   * circumstances and orientations.
+   *
+   * I have found a simpler way to do the same, and it even seems to work
+   * in most of the cases:
+   *
+   * - All CVT values are scaled to the maximum ppem size.
+   *
+   * - When performing a read or write in the CVT, a ratio factor is used
+   *   to perform adequate scaling.  Example:
+   *
+   *     x_ppem = 14
+   *     y_ppem = 10
+   *
+   *   We choose ppem = x_ppem = 14 as the CVT scaling size.  All cvt
+   *   entries are scaled to it.
+   *
+   *     x_ratio = 1.0
+   *     y_ratio = y_ppem/ppem (< 1.0)
+   *
+   *   We compute the current ratio like:
+   *
+   *   - If projVector is horizontal,
+   *       ratio = x_ratio = 1.0
+   *
+   *   - if projVector is vertical,
+   *       ratio = y_ratio
+   *
+   *   - else,
+   *       ratio = sqrt( (proj.x * x_ratio) ^ 2 + (proj.y * y_ratio) ^ 2 )
+   *
+   *   Reading a cvt value returns
+   *     ratio * cvt[index]
+   *
+   *   Writing a cvt value in pixels:
+   *     cvt[index] / ratio
+   *
+   *   The current ppem is simply
+   *     ratio * ppem
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Metrics used by the TrueType size and context objects.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Metrics used by the TrueType size and context objects.
+   */
   typedef struct  TT_Size_Metrics_
   {
     /* for non-square pixels */
@@ -268,10 +268,10 @@
   } TT_Size_Metrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TrueType size class.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TrueType size class.
+   */
   typedef struct  TT_SizeRec_
   {
     FT_SizeRec         root;
@@ -324,10 +324,10 @@
   } TT_SizeRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TrueType driver class.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TrueType driver class.
+   */
   typedef struct  TT_DriverRec_
   {
     FT_DriverRec  root;
@@ -348,10 +348,10 @@
   /* will always use the TT driver to create them.                         */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Face functions                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Face functions
+   */
   FT_LOCAL( FT_Error )
   tt_face_init( FT_Stream      stream,
                 FT_Face        ttface,      /* TT_Face */
@@ -363,10 +363,10 @@
   tt_face_done( FT_Face  ttface );          /* TT_Face */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Size functions                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Size functions
+   */
   FT_LOCAL( FT_Error )
   tt_size_init( FT_Size  ttsize );          /* TT_Size */
 
@@ -394,10 +394,10 @@
                  FT_Bool  only_height );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Driver functions                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Driver functions
+   */
   FT_LOCAL( FT_Error )
   tt_driver_init( FT_Module  ttdriver );    /* TT_Driver */
 
@@ -405,10 +405,10 @@
   tt_driver_done( FT_Module  ttdriver );    /* TT_Driver */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Slot functions                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Slot functions
+   */
   FT_LOCAL( FT_Error )
   tt_slot_init( FT_GlyphSlot  slot );
 
diff --git a/src/truetype/ttpic.c b/src/truetype/ttpic.c
deleted file mode 100644
index cdbb806..0000000
--- a/src/truetype/ttpic.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpic.c                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for truetype module. */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_INTERNAL_OBJECTS_H
-#include "ttpic.h"
-#include "tterrors.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from ttdriver.c */
-  FT_Error
-  FT_Create_Class_tt_services( FT_Library           library,
-                               FT_ServiceDescRec**  output_class );
-  void
-  FT_Destroy_Class_tt_services( FT_Library          library,
-                                FT_ServiceDescRec*  clazz );
-  void
-  FT_Init_Class_tt_service_gx_multi_masters(
-    FT_Service_MultiMastersRec*  sv_mm );
-  void
-  FT_Init_Class_tt_service_truetype_glyf(
-    FT_Service_TTGlyfRec*  sv_ttglyf );
-
-
-  void
-  tt_driver_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->truetype )
-    {
-      TTModulePIC*  container = (TTModulePIC*)pic_container->truetype;
-
-
-      if ( container->tt_services )
-        FT_Destroy_Class_tt_services( library, container->tt_services );
-      container->tt_services = NULL;
-      FT_FREE( container );
-      pic_container->truetype = NULL;
-    }
-  }
-
-
-  FT_Error
-  tt_driver_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    TTModulePIC*       container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->truetype = container;
-
-    /* initialize pointer table - this is how the module usually */
-    /* expects this data                                         */
-    error = FT_Create_Class_tt_services( library,
-                                         &container->tt_services );
-    if ( error )
-      goto Exit;
-#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
-    FT_Init_Class_tt_service_gx_multi_masters(
-      &container->tt_service_gx_multi_masters );
-#endif
-    FT_Init_Class_tt_service_truetype_glyf(
-      &container->tt_service_truetype_glyf );
-
-  Exit:
-    if ( error )
-      tt_driver_class_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
diff --git a/src/truetype/ttpic.h b/src/truetype/ttpic.h
deleted file mode 100644
index df878ae..0000000
--- a/src/truetype/ttpic.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpic.h                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for truetype module. */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-#ifndef TTPIC_H_
-#define TTPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define TT_SERVICES_GET                    tt_services
-#define TT_SERVICE_GX_MULTI_MASTERS_GET    tt_service_gx_multi_masters
-#define TT_SERVICE_METRICS_VARIATIONS_GET  tt_service_metrics_variations
-#define TT_SERVICE_TRUETYPE_GLYF_GET       tt_service_truetype_glyf
-#define TT_SERVICE_PROPERTIES_GET          tt_service_properties
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_MULTIPLE_MASTERS_H
-#include FT_SERVICE_MULTIPLE_MASTERS_H
-#include FT_SERVICE_METRICS_VARIATIONS_H
-#include FT_SERVICE_TRUETYPE_GLYF_H
-#include FT_SERVICE_PROPERTIES_H
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  TTModulePIC_
-  {
-    FT_ServiceDescRec*               tt_services;
-#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
-    FT_Service_MultiMastersRec       tt_service_gx_multi_masters;
-    FT_Service_MetricsVariationsRec  tt_service_metrics_variations;
-#endif
-    FT_Service_TTGlyfRec             tt_service_truetype_glyf;
-    FT_Service_PropertiesRec         tt_service_properties;
-
-  } TTModulePIC;
-
-
-#define GET_PIC( lib )                                      \
-          ( (TTModulePIC*)((lib)->pic_container.truetype) )
-#define TT_SERVICES_GET                       \
-          ( GET_PIC( library )->tt_services )
-#define TT_SERVICE_METRICS_VARIATIONS_GET                       \
-          ( GET_PIC( library )->tt_service_metrics_variations )
-#define TT_SERVICE_GX_MULTI_MASTERS_GET                       \
-          ( GET_PIC( library )->tt_service_gx_multi_masters )
-#define TT_SERVICE_TRUETYPE_GLYF_GET                       \
-          ( GET_PIC( library )->tt_service_truetype_glyf )
-#define TT_SERVICE_PROPERTIES_GET                       \
-          ( GET_PIC( library )->tt_service_properties )
-
-
-  /* see ttpic.c for the implementation */
-  void
-  tt_driver_class_pic_free( FT_Library  library );
-
-  FT_Error
-  tt_driver_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* TTPIC_H_ */
-
-
-/* END */
diff --git a/src/truetype/ttpload.c b/src/truetype/ttpload.c
index d9526ad..f7935cf 100644
--- a/src/truetype/ttpload.c
+++ b/src/truetype/ttpload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpload.c                                                              */
-/*                                                                         */
-/*    TrueType-specific tables loader (body).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttpload.c
+ *
+ *   TrueType-specific tables loader (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -31,33 +31,35 @@
 #include "tterrors.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_ttpload
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_loca                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the locations table.                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: The input stream.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_loca
+   *
+   * @Description:
+   *   Load the locations table.
+   *
+   * @InOut:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   * @Input:
+   *   stream ::
+   *     The input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_loca( TT_Face    face,
                      FT_Stream  stream )
@@ -297,23 +299,25 @@
 
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_cvt                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the control value table into a face object.                   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_cvt
+   *
+   * @Description:
+   *   Load the control value table into a face object.
+   *
+   * @InOut:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   * @Input:
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_cvt( TT_Face    face,
                     FT_Stream  stream )
@@ -378,23 +382,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_fpgm                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the font program.                                             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_fpgm
+   *
+   * @Description:
+   *   Load the font program.
+   *
+   * @InOut:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   * @Input:
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_fpgm( TT_Face    face,
                      FT_Stream  stream )
@@ -440,23 +446,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_prep                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the cvt program.                                              */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_prep
+   *
+   * @Description:
+   *   Load the cvt program.
+   *
+   * @InOut:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   * @Input:
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_prep( TT_Face    face,
                      FT_Stream  stream )
@@ -501,22 +509,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_hdmx                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the `hdmx' table into the face object.                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_hdmx
+   *
+   * @Description:
+   *   Load the `hdmx' table into the face object.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     A handle to the input stream.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
 
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_hdmx( TT_Face    face,
@@ -610,11 +620,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Return the advance width table for a given pixel size if it is found  */
-  /* in the font's `hdmx' table (if any).                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Return the advance width table for a given pixel size if it is found
+   * in the font's `hdmx' table (if any).
+   */
   FT_LOCAL_DEF( FT_Byte* )
   tt_face_get_device_metrics( TT_Face  face,
                               FT_UInt  ppem,
diff --git a/src/truetype/ttpload.h b/src/truetype/ttpload.h
index fa12527..eef2695 100644
--- a/src/truetype/ttpload.h
+++ b/src/truetype/ttpload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpload.h                                                              */
-/*                                                                         */
-/*    TrueType-specific tables loader (specification).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttpload.h
+ *
+ *   TrueType-specific tables loader (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTPLOAD_H_
diff --git a/src/truetype/ttsubpix.c b/src/truetype/ttsubpix.c
index d94bcc8..70e94e2 100644
--- a/src/truetype/ttsubpix.c
+++ b/src/truetype/ttsubpix.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttsubpix.c                                                             */
-/*                                                                         */
-/*    TrueType Subpixel Hinting.                                           */
-/*                                                                         */
-/*  Copyright 2010-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttsubpix.c
+ *
+ *   TrueType Subpixel Hinting.
+ *
+ * Copyright 2010-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 #include <ft2build.h>
 #include FT_INTERNAL_DEBUG_H
@@ -30,35 +30,35 @@
 #if defined( TT_USE_BYTECODE_INTERPRETER )            && \
     defined( TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY )
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* These rules affect how the TT Interpreter does hinting, with the      */
-  /* goal of doing subpixel hinting by (in general) ignoring x moves.      */
-  /* Some of these rules are fixes that go above and beyond the            */
-  /* stated techniques in the MS whitepaper on Cleartype, due to           */
-  /* artifacts in many glyphs.  So, these rules make some glyphs render    */
-  /* better than they do in the MS rasterizer.                             */
-  /*                                                                       */
-  /* "" string or 0 int/char indicates to apply to all glyphs.             */
-  /* "-" used as dummy placeholders, but any non-matching string works.    */
-  /*                                                                       */
-  /* Some of this could arguably be implemented in fontconfig, however:    */
-  /*                                                                       */
-  /*  - Fontconfig can't set things on a glyph-by-glyph basis.             */
-  /*  - The tweaks that happen here are very low-level, from an average    */
-  /*    user's point of view and are best implemented in the hinter.       */
-  /*                                                                       */
-  /* The goal is to make the subpixel hinting techniques as generalized    */
-  /* as possible across all fonts to prevent the need for extra rules such */
-  /* as these.                                                             */
-  /*                                                                       */
-  /* The rule structure is designed so that entirely new rules can easily  */
-  /* be added when a new compatibility feature is discovered.              */
-  /*                                                                       */
-  /* The rule structures could also use some enhancement to handle ranges. */
-  /*                                                                       */
-  /*     ****************** WORK IN PROGRESS *******************           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * These rules affect how the TT Interpreter does hinting, with the
+   * goal of doing subpixel hinting by (in general) ignoring x moves.
+   * Some of these rules are fixes that go above and beyond the
+   * stated techniques in the MS whitepaper on Cleartype, due to
+   * artifacts in many glyphs.  So, these rules make some glyphs render
+   * better than they do in the MS rasterizer.
+   *
+   * "" string or 0 int/char indicates to apply to all glyphs.
+   * "-" used as dummy placeholders, but any non-matching string works.
+   *
+   * Some of this could arguably be implemented in fontconfig, however:
+   *
+   * - Fontconfig can't set things on a glyph-by-glyph basis.
+   * - The tweaks that happen here are very low-level, from an average
+   *   user's point of view and are best implemented in the hinter.
+   *
+   * The goal is to make the subpixel hinting techniques as generalized
+   * as possible across all fonts to prevent the need for extra rules such
+   * as these.
+   *
+   * The rule structure is designed so that entirely new rules can easily
+   * be added when a new compatibility feature is discovered.
+   *
+   * The rule structures could also use some enhancement to handle ranges.
+   *
+   *     ****************** WORK IN PROGRESS *******************
+   */
 
   /* These are `classes' of fonts that can be grouped together and used in */
   /* rules below.  A blank entry "" is required at the end of these!       */
diff --git a/src/truetype/ttsubpix.h b/src/truetype/ttsubpix.h
index 1070bb0..2e10ea3 100644
--- a/src/truetype/ttsubpix.h
+++ b/src/truetype/ttsubpix.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttsubpix.h                                                             */
-/*                                                                         */
-/*    TrueType Subpixel Hinting.                                           */
-/*                                                                         */
-/*  Copyright 2010-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttsubpix.h
+ *
+ *   TrueType Subpixel Hinting.
+ *
+ * Copyright 2010-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef TTSUBPIX_H_
@@ -29,11 +29,11 @@
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ID flags to identify special functions at FDEF and runtime.           */
-  /*                                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ID flags to identify special functions at FDEF and runtime.
+   *
+   */
 #define SPH_FDEF_INLINE_DELTA_1       0x0000001
 #define SPH_FDEF_INLINE_DELTA_2       0x0000002
 #define SPH_FDEF_DIAGONAL_STROKE      0x0000004
@@ -45,11 +45,11 @@
 #define SPH_FDEF_TYPEMAN_DIAGENDCTRL  0x0000100
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Tweak flags that are set for each glyph by the below rules.           */
-  /*                                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Tweak flags that are set for each glyph by the below rules.
+   *
+   */
 #define SPH_TWEAK_ALLOW_X_DMOVE                   0x0000001UL
 #define SPH_TWEAK_ALWAYS_DO_DELTAP                0x0000002UL
 #define SPH_TWEAK_ALWAYS_SKIP_DELTAP              0x0000004UL
diff --git a/src/type1/t1afm.c b/src/type1/t1afm.c
index 61053d9..0cbef3b 100644
--- a/src/type1/t1afm.c
+++ b/src/type1/t1afm.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1afm.c                                                                */
-/*                                                                         */
-/*    AFM support for Type 1 fonts (body).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1afm.c
+ *
+ *   AFM support for Type 1 fonts (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -26,12 +26,12 @@
 
 #ifndef T1_CONFIG_OPTION_NO_AFM
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_t1afm
 
diff --git a/src/type1/t1afm.h b/src/type1/t1afm.h
index cb8d302..d92b78f 100644
--- a/src/type1/t1afm.h
+++ b/src/type1/t1afm.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1afm.h                                                                */
-/*                                                                         */
-/*    AFM support for Type 1 fonts (specification).                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1afm.h
+ *
+ *   AFM support for Type 1 fonts (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1AFM_H_
diff --git a/src/type1/t1driver.c b/src/type1/t1driver.c
index 029b410..4d46e3e 100644
--- a/src/type1/t1driver.c
+++ b/src/type1/t1driver.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1driver.c                                                             */
-/*                                                                         */
-/*    Type 1 driver interface (body).                                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1driver.c
+ *
+ *   Type 1 driver interface (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -43,19 +43,19 @@
 #include FT_SERVICE_KERNING_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_t1driver
 
- /*
-  *  GLYPH DICT SERVICE
-  *
-  */
+  /*
+   * GLYPH DICT SERVICE
+   *
+   */
 
   static FT_Error
   t1_get_glyph_name( T1_Face     face,
@@ -97,7 +97,7 @@
 
 
   /*
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -115,7 +115,7 @@
 
 
   /*
-   *  MULTIPLE MASTERS SERVICE
+   * MULTIPLE MASTERS SERVICE
    *
    */
 
@@ -138,7 +138,7 @@
 
 
   /*
-   *  POSTSCRIPT INFO SERVICE
+   * POSTSCRIPT INFO SERVICE
    *
    */
 
@@ -270,9 +270,12 @@
       break;
 
     case PS_DICT_FONT_NAME:
-      retval = ft_strlen( type1->font_name ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_name ), retval );
+      if ( type1->font_name )
+      {
+        retval = ft_strlen( type1->font_name ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_name ), retval );
+      }
       break;
 
     case PS_DICT_UNIQUE_ID:
@@ -362,7 +365,7 @@
             ok = 1;
         }
 
-        if ( ok )
+        if ( ok && type1->subrs )
         {
           retval = type1->subrs_len[idx] + 1;
           if ( value && value_len >= retval )
@@ -559,33 +562,49 @@
       break;
 
     case PS_DICT_VERSION:
-      retval = ft_strlen( type1->font_info.version ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.version ), retval );
+      if ( type1->font_info.version )
+      {
+        retval = ft_strlen( type1->font_info.version ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.version ), retval );
+      }
       break;
 
     case PS_DICT_NOTICE:
-      retval = ft_strlen( type1->font_info.notice ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.notice ), retval );
+      if ( type1->font_info.notice )
+      {
+        retval = ft_strlen( type1->font_info.notice ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.notice ), retval );
+      }
       break;
 
     case PS_DICT_FULL_NAME:
-      retval = ft_strlen( type1->font_info.full_name ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.full_name ), retval );
+      if ( type1->font_info.full_name )
+      {
+        retval = ft_strlen( type1->font_info.full_name ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.full_name ), retval );
+      }
       break;
 
     case PS_DICT_FAMILY_NAME:
-      retval = ft_strlen( type1->font_info.family_name ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.family_name ), retval );
+      if ( type1->font_info.family_name )
+      {
+        retval = ft_strlen( type1->font_info.family_name ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.family_name ),
+                     retval );
+      }
       break;
 
     case PS_DICT_WEIGHT:
-      retval = ft_strlen( type1->font_info.weight ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.weight ), retval );
+      if ( type1->font_info.weight )
+      {
+        retval = ft_strlen( type1->font_info.weight ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.weight ), retval );
+      }
       break;
 
     case PS_DICT_ITALIC_ANGLE:
@@ -618,7 +637,7 @@
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
 
@@ -630,7 +649,7 @@
 
 
   /*
-   *  SERVICE LIST
+   * SERVICE LIST
    *
    */
 
@@ -665,38 +684,42 @@
 
 #ifndef T1_CONFIG_OPTION_NO_AFM
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Get_Kerning                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A driver method used to return the kerning vector between two      */
-  /*    glyphs of the same face.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: A handle to the source face object.                 */
-  /*                                                                       */
-  /*    left_glyph  :: The index of the left glyph in the kern pair.       */
-  /*                                                                       */
-  /*    right_glyph :: The index of the right glyph in the kern pair.      */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    kerning     :: The kerning vector.  This is in font units for      */
-  /*                   scalable formats, and in pixels for fixed-sizes     */
-  /*                   formats.                                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only horizontal layouts (left-to-right & right-to-left) are        */
-  /*    supported by this function.  Other layouts, or more sophisticated  */
-  /*    kernings are out of scope of this method (the basic driver         */
-  /*    interface is meant to be simple).                                  */
-  /*                                                                       */
-  /*    They can be implemented by format-specific interfaces.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Get_Kerning
+   *
+   * @Description:
+   *   A driver method used to return the kerning vector between two
+   *   glyphs of the same face.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   left_glyph ::
+   *     The index of the left glyph in the kern pair.
+   *
+   *   right_glyph ::
+   *     The index of the right glyph in the kern pair.
+   *
+   * @Output:
+   *   kerning ::
+   *     The kerning vector.  This is in font units for
+   *     scalable formats, and in pixels for fixed-sizes
+   *     formats.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   *
+   * @Note:
+   *   Only horizontal layouts (left-to-right & right-to-left) are
+   *   supported by this function.  Other layouts, or more sophisticated
+   *   kernings are out of scope of this method (the basic driver
+   *   interface is meant to be simple).
+   *
+   *   They can be implemented by format-specific interfaces.
+   */
   static FT_Error
   Get_Kerning( FT_Face     t1face,        /* T1_Face */
                FT_UInt     left_glyph,
diff --git a/src/type1/t1driver.h b/src/type1/t1driver.h
index 2b15072..2dae4bd 100644
--- a/src/type1/t1driver.h
+++ b/src/type1/t1driver.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1driver.h                                                             */
-/*                                                                         */
-/*    High-level Type 1 driver interface (specification).                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1driver.h
+ *
+ *   High-level Type 1 driver interface (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1DRIVER_H_
@@ -26,14 +26,8 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
-
   FT_EXPORT_VAR( const FT_Driver_ClassRec )  t1_driver_class;
 
-
 FT_END_HEADER
 
 #endif /* T1DRIVER_H_ */
diff --git a/src/type1/t1errors.h b/src/type1/t1errors.h
index 9e0151b..312f456 100644
--- a/src/type1/t1errors.h
+++ b/src/type1/t1errors.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1errors.h                                                             */
-/*                                                                         */
-/*    Type 1 error codes (specification only).                             */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1errors.h
+ *
+ *   Type 1 error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the Type 1 error enumeration constants.   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the Type 1 error enumeration constants.
+   *
+   */
 
 #ifndef T1ERRORS_H_
 #define T1ERRORS_H_
diff --git a/src/type1/t1gload.c b/src/type1/t1gload.c
index 87d40e7..87c2a0f 100644
--- a/src/type1/t1gload.c
+++ b/src/type1/t1gload.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1gload.c                                                              */
-/*                                                                         */
-/*    Type 1 Glyph Loader (body).                                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1gload.c
+ *
+ *   Type 1 Glyph Loader (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -29,12 +29,12 @@
 #include "t1errors.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_t1gload
 
@@ -62,6 +62,7 @@
     PS_Driver  driver = (PS_Driver)FT_FACE_DRIVER( face );
 #endif
 
+
     decoder->font_matrix = type1->font_matrix;
     decoder->font_offset = type1->font_offset;
 
@@ -249,6 +250,8 @@
 
     *max_advance = 0;
 
+    FT_TRACE6(( "T1_Compute_Max_Advance:\n" ));
+
     /* for each glyph, parse the glyph charstring and extract */
     /* the advance width                                      */
     for ( glyph_index = 0; glyph_index < type1->num_glyphs; glyph_index++ )
@@ -261,6 +264,9 @@
       /* ignore the error if one occurred - skip to next glyph */
     }
 
+    FT_TRACE6(( "T1_Compute_Max_Advance: max advance: %f\n",
+                *max_advance / 65536.0 ));
+
     psaux->t1_decoder_funcs->done( &decoder );
 
     return FT_Err_Ok;
@@ -282,11 +288,18 @@
     FT_Error       error;
 
 
+    FT_TRACE5(( "T1_Get_Advances:\n" ));
+
     if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
     {
       for ( nn = 0; nn < count; nn++ )
+      {
         advances[nn] = 0;
 
+        FT_TRACE5(( "  idx %d: advance height 0 font units\n",
+                    first + nn ));
+      }
+
       return FT_Err_Ok;
     }
 
@@ -320,6 +333,11 @@
         advances[nn] = FIXED_TO_INT( decoder.builder.advance.x );
       else
         advances[nn] = 0;
+
+      FT_TRACE5(( "  idx %d: advance width %d font unit%s\n",
+                  first + nn,
+                  advances[nn],
+                  advances[nn] == 1 ? "" : "s" ));
     }
 
     return FT_Err_Ok;
diff --git a/src/type1/t1gload.h b/src/type1/t1gload.h
index 72ef76f..12ba234 100644
--- a/src/type1/t1gload.h
+++ b/src/type1/t1gload.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1gload.h                                                              */
-/*                                                                         */
-/*    Type 1 Glyph Loader (specification).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1gload.h
+ *
+ *   Type 1 Glyph Loader (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1GLOAD_H_
diff --git a/src/type1/t1load.c b/src/type1/t1load.c
index 2b8d489..a443571 100644
--- a/src/type1/t1load.c
+++ b/src/type1/t1load.c
@@ -1,63 +1,63 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1load.c                                                               */
-/*                                                                         */
-/*    Type 1 font loader (body).                                           */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1load.c
+ *
+ *   Type 1 font loader (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This is the new and improved Type 1 data loader for FreeType 2.  The  */
-  /* old loader has several problems: it is slow, complex, difficult to    */
-  /* maintain, and contains incredible hacks to make it accept some        */
-  /* ill-formed Type 1 fonts without hiccup-ing.  Moreover, about 5% of    */
-  /* the Type 1 fonts on my machine still aren't loaded correctly by it.   */
-  /*                                                                       */
-  /* This version is much simpler, much faster and also easier to read and */
-  /* maintain by a great order of magnitude.  The idea behind it is to     */
-  /* _not_ try to read the Type 1 token stream with a state machine (i.e.  */
-  /* a Postscript-like interpreter) but rather to perform simple pattern   */
-  /* matching.                                                             */
-  /*                                                                       */
-  /* Indeed, nearly all data definitions follow a simple pattern like      */
-  /*                                                                       */
-  /*  ... /Field <data> ...                                                */
-  /*                                                                       */
-  /* where <data> can be a number, a boolean, a string, or an array of     */
-  /* numbers.  There are a few exceptions, namely the encoding, font name, */
-  /* charstrings, and subrs; they are handled with a special pattern       */
-  /* matching routine.                                                     */
-  /*                                                                       */
-  /* All other common cases are handled very simply.  The matching rules   */
-  /* are defined in the file `t1tokens.h' through the use of several       */
-  /* macros calls PARSE_XXX.  This file is included twice here; the first  */
-  /* time to generate parsing callback functions, the second time to       */
-  /* generate a table of keywords (with pointers to the associated         */
-  /* callback functions).                                                  */
-  /*                                                                       */
-  /* The function `parse_dict' simply scans *linearly* a given dictionary  */
-  /* (either the top-level or private one) and calls the appropriate       */
-  /* callback when it encounters an immediate keyword.                     */
-  /*                                                                       */
-  /* This is by far the fastest way one can find to parse and read all     */
-  /* data.                                                                 */
-  /*                                                                       */
-  /* This led to tremendous code size reduction.  Note that later, the     */
-  /* glyph loader will also be _greatly_ simplified, and the automatic     */
-  /* hinter will replace the clumsy `t1hinter'.                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This is the new and improved Type 1 data loader for FreeType 2.  The
+   * old loader has several problems: it is slow, complex, difficult to
+   * maintain, and contains incredible hacks to make it accept some
+   * ill-formed Type 1 fonts without hiccup-ing.  Moreover, about 5% of
+   * the Type 1 fonts on my machine still aren't loaded correctly by it.
+   *
+   * This version is much simpler, much faster and also easier to read and
+   * maintain by a great order of magnitude.  The idea behind it is to
+   * _not_ try to read the Type 1 token stream with a state machine (i.e.
+   * a Postscript-like interpreter) but rather to perform simple pattern
+   * matching.
+   *
+   * Indeed, nearly all data definitions follow a simple pattern like
+   *
+   * ... /Field <data> ...
+   *
+   * where <data> can be a number, a boolean, a string, or an array of
+   * numbers.  There are a few exceptions, namely the encoding, font name,
+   * charstrings, and subrs; they are handled with a special pattern
+   * matching routine.
+   *
+   * All other common cases are handled very simply.  The matching rules
+   * are defined in the file `t1tokens.h' through the use of several
+   * macros calls PARSE_XXX.  This file is included twice here; the first
+   * time to generate parsing callback functions, the second time to
+   * generate a table of keywords (with pointers to the associated
+   * callback functions).
+   *
+   * The function `parse_dict' simply scans *linearly* a given dictionary
+   * (either the top-level or private one) and calls the appropriate
+   * callback when it encounters an immediate keyword.
+   *
+   * This is by far the fastest way one can find to parse and read all
+   * data.
+   *
+   * This led to tremendous code size reduction.  Note that later, the
+   * glyph loader will also be _greatly_ simplified, and the automatic
+   * hinter will replace the clumsy `t1hinter'.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -79,12 +79,12 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_t1load
 
@@ -222,11 +222,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Given a normalized (blend) coordinate, figure out the design          */
-  /* coordinate appropriate for that value.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Given a normalized (blend) coordinate, figure out the design
+   * coordinate appropriate for that value.
+   */
   static FT_Fixed
   mm_axis_unmap( PS_DesignMap  axismap,
                  FT_Fixed      ncv )
@@ -251,11 +251,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Given a vector of weights, one for each design, figure out the        */
-  /* normalized axis coordinates which gave rise to those weights.         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Given a vector of weights, one for each design, figure out the
+   * normalized axis coordinates which gave rise to those weights.
+   */
   static void
   mm_weights_unmap( FT_Fixed*  weights,
                     FT_Fixed*  axiscoords,
@@ -293,11 +293,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Just a wrapper around T1_Get_Multi_Master to support the different    */
-  /*  arguments needed by the GX var distortable fonts.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Just a wrapper around T1_Get_Multi_Master to support the different
+   * arguments needed by the GX var distortable fonts.
+   */
   FT_LOCAL_DEF( FT_Error )
   T1_Get_MM_Var( T1_Face      face,
                  FT_MM_Var*  *master )
@@ -348,16 +348,13 @@
         mmvar->axis[i].tag = FT_MAKE_TAG( 'o', 'p', 's', 'z' );
     }
 
-    if ( blend->num_designs == ( 1U << blend->num_axis ) )
-    {
-      mm_weights_unmap( blend->default_weight_vector,
-                        axiscoords,
-                        blend->num_axis );
+    mm_weights_unmap( blend->default_weight_vector,
+                      axiscoords,
+                      blend->num_axis );
 
-      for ( i = 0; i < mmaster.num_axis; i++ )
-        mmvar->axis[i].def = mm_axis_unmap( &blend->design_map[i],
-                                            axiscoords[i] );
-    }
+    for ( i = 0; i < mmaster.num_axis; i++ )
+      mmvar->axis[i].def = mm_axis_unmap( &blend->design_map[i],
+                                          axiscoords[i] );
 
     *master = mmvar;
 
@@ -573,11 +570,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Just a wrapper around T1_Set_MM_Design to support the different       */
-  /* arguments needed by the GX var distortable fonts.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Just a wrapper around T1_Set_MM_Design to support the different
+   * arguments needed by the GX var distortable fonts.
+   */
   FT_LOCAL_DEF( FT_Error )
   T1_Set_Var_Design( T1_Face    face,
                      FT_UInt    num_coords,
@@ -719,6 +716,8 @@
     if ( error )
       goto Exit;
 
+    FT_TRACE4(( " [" ));
+
     blend  = face->blend;
     memory = face->root.memory;
 
@@ -741,11 +740,13 @@
         goto Exit;
       }
 
+      FT_TRACE4(( " /%.*s", len, token->start ));
+
       name = (FT_Byte*)blend->axis_names[n];
       if ( name )
       {
         FT_TRACE0(( "parse_blend_axis_types:"
-                    " overwriting axis name `%s' with `%*.s'\n",
+                    " overwriting axis name `%s' with `%.*s'\n",
                     name, len, token->start ));
         FT_FREE( name );
       }
@@ -758,6 +759,8 @@
       name[len] = '\0';
     }
 
+    FT_TRACE4(( "]\n" ));
+
   Exit:
     loader->parser.root.error = error;
   }
@@ -802,6 +805,8 @@
       blend    = face->blend;
       num_axis = 0;  /* make compiler happy */
 
+      FT_TRACE4(( " [" ));
+
       for ( n = 0; n < num_designs; n++ )
       {
         T1_TokenRec  axis_tokens[T1_MAX_MM_AXIS];
@@ -842,6 +847,7 @@
         }
 
         /* now read each axis token into the design position */
+        FT_TRACE4(( " [" )) ;
         for ( axis = 0; axis < n_axis; axis++ )
         {
           T1_Token  token2 = axis_tokens + axis;
@@ -850,9 +856,13 @@
           parser->root.cursor = token2->start;
           parser->root.limit  = token2->limit;
           blend->design_pos[n][axis] = T1_ToFixed( parser, 0 );
+          FT_TRACE4(( " %f", (double)blend->design_pos[n][axis] / 65536 ));
         }
+        FT_TRACE4(( "]" )) ;
       }
 
+      FT_TRACE4(( "]\n" ));
+
       loader->parser.root.cursor = old_cursor;
       loader->parser.root.limit  = old_limit;
     }
@@ -899,6 +909,8 @@
       goto Exit;
     blend = face->blend;
 
+    FT_TRACE4(( " [" ));
+
     /* now read each axis design map */
     for ( n = 0; n < num_axis; n++ )
     {
@@ -915,6 +927,8 @@
       T1_ToTokenArray( parser, point_tokens,
                        T1_MAX_MM_MAP_POINTS, &num_points );
 
+      FT_TRACE4(( " [" ));
+
       if ( num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS )
       {
         FT_ERROR(( "parse_blend_design_map: incorrect table\n" ));
@@ -948,9 +962,17 @@
 
         map->design_points[p] = T1_ToInt( parser );
         map->blend_points [p] = T1_ToFixed( parser, 0 );
+
+        FT_TRACE4(( " [%d %f]",
+                    map->design_points[p],
+                    (double)map->blend_points[p] / 65536 ));
       }
+
+      FT_TRACE4(( "]" ));
     }
 
+    FT_TRACE4(( "]\n" ));
+
     parser->root.cursor = old_cursor;
     parser->root.limit  = old_limit;
 
@@ -1010,6 +1032,8 @@
     old_cursor = parser->root.cursor;
     old_limit  = parser->root.limit;
 
+    FT_TRACE4(( "[" ));
+
     for ( n = 0; n < num_designs; n++ )
     {
       token = design_tokens + n;
@@ -1018,8 +1042,12 @@
 
       blend->default_weight_vector[n] =
       blend->weight_vector[n]         = T1_ToFixed( parser, 0 );
+
+      FT_TRACE4(( " %f", (double)blend->weight_vector[n] / 65536 ));
     }
 
+    FT_TRACE4(( "]\n" ));
+
     parser->root.cursor = old_cursor;
     parser->root.limit  = old_limit;
 
@@ -1034,8 +1062,16 @@
   parse_buildchar( T1_Face    face,
                    T1_Loader  loader )
   {
+    FT_UInt  i;
+
+
     face->len_buildchar = (FT_UInt)T1_ToFixedArray( &loader->parser,
                                                     0, NULL, 0 );
+    FT_TRACE4(( " [" ));
+    for ( i = 0; i < face->len_buildchar; i++ )
+      FT_TRACE4(( " 0" ));
+
+    FT_TRACE4(( "]\n" ));
     return;
   }
 
@@ -1071,6 +1107,8 @@
     /* if the keyword has a dedicated callback, call it */
     if ( field->type == T1_FIELD_TYPE_CALLBACK )
     {
+      FT_TRACE4(( "  %s", field->ident ));
+
       field->reader( (FT_Face)face, loader );
       error = loader->parser.root.error;
       goto Exit;
@@ -1148,6 +1186,8 @@
       max_objects  = 0;
     }
 
+    FT_TRACE4(( "  %s", field->ident ));
+
     if ( *objects )
     {
       if ( field->type == T1_FIELD_TYPE_INTEGER_ARRAY ||
@@ -1167,6 +1207,8 @@
       error = FT_Err_Ok;
     }
 
+    FT_TRACE4(( "\n" ));
+
   Exit:
     return error;
   }
@@ -1179,6 +1221,8 @@
     FT_UNUSED( face );
 
     loader->keywords_encountered |= T1_PRIVATE;
+
+    FT_TRACE4(( "\n" ));
   }
 
 
@@ -1258,6 +1302,14 @@
       return;
     }
 
+    FT_TRACE4(( " [%f %f %f %f %f %f]\n",
+                (double)temp[0] / 65536 / 1000,
+                (double)temp[1] / 65536 / 1000,
+                (double)temp[2] / 65536 / 1000,
+                (double)temp[3] / 65536 / 1000,
+                (double)temp[4] / 65536 / 1000,
+                (double)temp[5] / 65536 / 1000 ));
+
     temp_scale = FT_ABS( temp[3] );
 
     if ( temp_scale == 0 )
@@ -1280,12 +1332,18 @@
       temp[5] = FT_DivFix( temp[5], temp_scale );
       temp[3] = temp[3] < 0 ? -0x10000L : 0x10000L;
     }
-
     matrix->xx = temp[0];
     matrix->yx = temp[1];
     matrix->xy = temp[2];
     matrix->yy = temp[3];
 
+    if ( !FT_Matrix_Check( matrix ) )
+    {
+      FT_ERROR(( "t1_parse_font_matrix: invalid font matrix\n" ));
+      parser->root.error = FT_THROW( Invalid_File_Format );
+      return;
+    }
+
     /* note that the offsets must be expressed in integer font units */
     offset->x = temp[4] >> 16;
     offset->y = temp[5] >> 16;
@@ -1494,6 +1552,15 @@
         T1_Skip_Spaces( parser );
       }
 
+#ifdef FT_DEBUG_LEVEL_TRACE
+      FT_TRACE4(( " [" ));
+
+      /* XXX show encoding vector */
+      FT_TRACE4(( "..." ));
+
+      FT_TRACE4(( "]\n" ));
+#endif
+
       face->type1.encoding_type = T1_ENCODING_TYPE_ARRAY;
       parser->root.cursor       = cur;
     }
@@ -1504,18 +1571,30 @@
     {
       if ( cur + 17 < limit                                            &&
            ft_strncmp( (const char*)cur, "StandardEncoding", 16 ) == 0 )
+      {
         face->type1.encoding_type = T1_ENCODING_TYPE_STANDARD;
+        FT_TRACE4(( " StandardEncoding\n" ));
+      }
 
       else if ( cur + 15 < limit                                          &&
                 ft_strncmp( (const char*)cur, "ExpertEncoding", 14 ) == 0 )
+      {
         face->type1.encoding_type = T1_ENCODING_TYPE_EXPERT;
+        FT_TRACE4(( " ExpertEncoding\n" ));
+      }
 
       else if ( cur + 18 < limit                                             &&
                 ft_strncmp( (const char*)cur, "ISOLatin1Encoding", 17 ) == 0 )
+      {
         face->type1.encoding_type = T1_ENCODING_TYPE_ISOLATIN1;
+        FT_TRACE4(( " ISOLatin1Encoding\n" ));
+      }
 
       else
+      {
         parser->root.error = FT_ERR( Ignore );
+        FT_TRACE4(( "<unknown>\n" ));
+      }
     }
   }
 
@@ -1696,6 +1775,15 @@
     if ( !loader->num_subrs )
       loader->num_subrs = num_subrs;
 
+#ifdef FT_DEBUG_LEVEL_TRACE
+      FT_TRACE4(( " <" ));
+
+      /* XXX show subrs? */
+      FT_TRACE4(( "%d elements", num_subrs ));
+
+      FT_TRACE4(( ">\n" ));
+#endif
+
     return;
 
   Fail:
@@ -2017,6 +2105,15 @@
       loader->num_glyphs += 1;
     }
 
+#ifdef FT_DEBUG_LEVEL_TRACE
+      FT_TRACE4(( " <" ));
+
+      /* XXX show charstrings? */
+      FT_TRACE4(( "%d elements", loader->num_glyphs ));
+
+      FT_TRACE4(( ">\n" ));
+#endif
+
     return;
 
   Fail:
@@ -2024,12 +2121,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the token field static variables.  This is a set of            */
-  /* T1_FieldRec variables.                                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the token field static variables.  This is a set of
+   * T1_FieldRec variables.
+   *
+   */
 
 
   static
@@ -2216,6 +2313,7 @@
                     ? T1_FIELD_DICT_PRIVATE
                     : T1_FIELD_DICT_FONTDICT;
 
+
               if ( !( dict & keyword->dict ) )
               {
                 FT_TRACE1(( "parse_dict: found `%s' but ignoring it"
@@ -2330,6 +2428,7 @@
     if ( error )
       goto Exit;
 
+    FT_TRACE4(( " top dictionary:\n" ));
     error = parse_dict( face, &loader,
                         parser->base_dict, parser->base_len );
     if ( error )
@@ -2339,6 +2438,7 @@
     if ( error )
       goto Exit;
 
+    FT_TRACE4(( " private dictionary:\n" ));
     error = parse_dict( face, &loader,
                         parser->private_dict, parser->private_len );
     if ( error )
@@ -2349,6 +2449,16 @@
 
 #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
 
+    /* we don't support Multiple Master fonts with intermediate designs; */
+    /* this implies that `num_designs' must be equal to `2^^num_axis'    */
+    if ( face->blend                                                 &&
+         face->blend->num_designs != ( 1U << face->blend->num_axis ) )
+    {
+      FT_ERROR(( "T1_Open_Face:"
+                 " number-of-designs != 2 ^^ number-of-axes\n" ));
+      T1_Done_Blend( face );
+    }
+
     if ( face->blend                                                     &&
          face->blend->num_default_design_vector != 0                     &&
          face->blend->num_default_design_vector != face->blend->num_axis )
@@ -2493,6 +2603,24 @@
       type1->encoding.num_chars  = loader.num_chars;
     }
 
+    /* some sanitizing to avoid overflows later on; */
+    /* the upper limits are ad-hoc values           */
+    if ( priv->blue_shift > 1000 || priv->blue_shift < 0 )
+    {
+      FT_TRACE2(( "T1_Open_Face:"
+                  " setting unlikely BlueShift value %d to default (7)\n",
+                  priv->blue_shift ));
+      priv->blue_shift = 7;
+    }
+
+    if ( priv->blue_fuzz > 1000 || priv->blue_fuzz < 0 )
+    {
+      FT_TRACE2(( "T1_Open_Face:"
+                  " setting unlikely BlueFuzz value %d to default (1)\n",
+                  priv->blue_fuzz ));
+      priv->blue_fuzz = 1;
+    }
+
   Exit:
     t1_done_loader( &loader );
     return error;
diff --git a/src/type1/t1load.h b/src/type1/t1load.h
index 03be3f7..43d5db5 100644
--- a/src/type1/t1load.h
+++ b/src/type1/t1load.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1load.h                                                               */
-/*                                                                         */
-/*    Type 1 font loader (specification).                                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1load.h
+ *
+ *   Type 1 font loader (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1LOAD_H_
diff --git a/src/type1/t1objs.c b/src/type1/t1objs.c
index 7333c4c..05f02d5 100644
--- a/src/type1/t1objs.c
+++ b/src/type1/t1objs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1objs.c                                                               */
-/*                                                                         */
-/*    Type 1 objects manager (body).                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1objs.c
+ *
+ *   Type 1 objects manager (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -36,21 +36,21 @@
 #include FT_INTERNAL_POSTSCRIPT_AUX_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_t1objs
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SIZE FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SIZE FUNCTIONS
+   *
+   */
 
 
   static PSH_Globals_Funcs
@@ -133,11 +133,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SLOT  FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SLOT  FUNCTIONS
+   *
+   */
 
   FT_LOCAL_DEF( void )
   T1_GlyphSlot_Done( FT_GlyphSlot  slot )
@@ -177,24 +177,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            FACE  FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           FACE  FUNCTIONS
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    T1_Face_Done                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The face object destructor.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A typeless pointer to the face object to destroy.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   T1_Face_Done
+   *
+   * @Description:
+   *   The face object destructor.
+   *
+   * @Input:
+   *   face ::
+   *     A typeless pointer to the face object to destroy.
+   */
   FT_LOCAL_DEF( void )
   T1_Face_Done( FT_Face  t1face )         /* T1_Face */
   {
@@ -274,29 +275,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    T1_Face_Init                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The face object constructor.                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream     ::  input stream where to load font data.               */
-  /*                                                                       */
-  /*    face_index :: The index of the font face in the resource.          */
-  /*                                                                       */
-  /*    num_params :: Number of additional generic parameters.  Ignored.   */
-  /*                                                                       */
-  /*    params     :: Additional generic parameters.  Ignored.             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The face record to build.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   T1_Face_Init
+   *
+   * @Description:
+   *   The face object constructor.
+   *
+   * @Input:
+   *   stream ::
+   *     input stream where to load font data.
+   *
+   *   face_index ::
+   *     The index of the font face in the resource.
+   *
+   *   num_params ::
+   *     Number of additional generic parameters.  Ignored.
+   *
+   *   params ::
+   *     Additional generic parameters.  Ignored.
+   *
+   * @InOut:
+   *   face ::
+   *     The face record to build.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   T1_Face_Init( FT_Stream      stream,
                 FT_Face        t1face,          /* T1_Face */
@@ -341,6 +347,10 @@
     if ( error )
       goto Exit;
 
+    FT_TRACE2(( "T1_Face_Init: %08p (index %d)\n",
+                face,
+                face_index ));
+
     /* if we just wanted to check the format, leave successfully now */
     if ( face_index < 0 )
       goto Exit;
@@ -564,20 +574,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    T1_Driver_Init                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a given Type 1 driver object.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target driver object.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   T1_Driver_Init
+   *
+   * @Description:
+   *   Initializes a given Type 1 driver object.
+   *
+   * @Input:
+   *   driver ::
+   *     A handle to the target driver object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   T1_Driver_Init( FT_Module  module )
   {
@@ -620,17 +631,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    T1_Driver_Done                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given Type 1 driver.                                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target Type 1 driver.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   T1_Driver_Done
+   *
+   * @Description:
+   *   Finalizes a given Type 1 driver.
+   *
+   * @Input:
+   *   driver ::
+   *     A handle to the target Type 1 driver.
+   */
   FT_LOCAL_DEF( void )
   T1_Driver_Done( FT_Module  driver )
   {
diff --git a/src/type1/t1objs.h b/src/type1/t1objs.h
index 8298e03..86fecd9 100644
--- a/src/type1/t1objs.h
+++ b/src/type1/t1objs.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1objs.h                                                               */
-/*                                                                         */
-/*    Type 1 objects manager (specification).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1objs.h
+ *
+ *   Type 1 objects manager (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1OBJS_H_
@@ -34,59 +34,59 @@
   typedef struct T1_Glyph_Hints_  T1_Glyph_Hints;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    T1_Size                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 size object.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   T1_Size
+   *
+   * @Description:
+   *   A handle to a Type 1 size object.
+   */
   typedef struct T1_SizeRec_*  T1_Size;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    T1_GlyphSlot                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 glyph slot object.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   T1_GlyphSlot
+   *
+   * @Description:
+   *   A handle to a Type 1 glyph slot object.
+   */
   typedef struct T1_GlyphSlotRec_*  T1_GlyphSlot;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    T1_CharMap                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 character mapping object.                     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The Type 1 format doesn't use a charmap but an encoding table.     */
-  /*    The driver is responsible for making up charmap objects            */
-  /*    corresponding to these tables.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   T1_CharMap
+   *
+   * @Description:
+   *   A handle to a Type 1 character mapping object.
+   *
+   * @Note:
+   *   The Type 1 format doesn't use a charmap but an encoding table.
+   *   The driver is responsible for making up charmap objects
+   *   corresponding to these tables.
+   */
   typedef struct T1_CharMapRec_*   T1_CharMap;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                  HERE BEGINS THE TYPE1 SPECIFIC STUFF                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                 HERE BEGINS THE TYPE1 SPECIFIC STUFF
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    T1_SizeRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Type 1 size record.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   T1_SizeRec
+   *
+   * @Description:
+   *   Type 1 size record.
+   */
   typedef struct  T1_SizeRec_
   {
     FT_SizeRec  root;
@@ -105,14 +105,14 @@
   T1_Size_Init( FT_Size  size );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    T1_GlyphSlotRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Type 1 glyph slot record.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   T1_GlyphSlotRec
+   *
+   * @Description:
+   *   Type 1 glyph slot record.
+   */
   typedef struct  T1_GlyphSlotRec_
   {
     FT_GlyphSlotRec  root;
diff --git a/src/type1/t1parse.c b/src/type1/t1parse.c
index 8e201e5..9214831 100644
--- a/src/type1/t1parse.c
+++ b/src/type1/t1parse.c
@@ -1,36 +1,36 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1parse.c                                                              */
-/*                                                                         */
-/*    Type 1 parser (body).                                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1parse.c
+ *
+ *   Type 1 parser (body).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The Type 1 parser is in charge of the following:                      */
-  /*                                                                       */
-  /*  - provide an implementation of a growing sequence of objects called  */
-  /*    a `T1_Table' (used to build various tables needed by the loader).  */
-  /*                                                                       */
-  /*  - opening .pfb and .pfa files to extract their top-level and private */
-  /*    dictionaries.                                                      */
-  /*                                                                       */
-  /*  - read numbers, arrays & strings from any dictionary.                */
-  /*                                                                       */
-  /* See `t1load.c' to see how data is loaded from the font file.          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * The Type 1 parser is in charge of the following:
+   *
+   * - provide an implementation of a growing sequence of objects called
+   *   a `T1_Table' (used to build various tables needed by the loader).
+   *
+   * - opening .pfb and .pfa files to extract their top-level and private
+   *   dictionaries.
+   *
+   * - read numbers, arrays & strings from any dictionary.
+   *
+   * See `t1load.c' to see how data is loaded from the font file.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -43,12 +43,12 @@
 #include "t1errors.h"
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_t1parse
 
@@ -169,21 +169,21 @@
       }
     }
 
-    /******************************************************************/
-    /*                                                                */
-    /* Here a short summary of what is going on:                      */
-    /*                                                                */
-    /*   When creating a new Type 1 parser, we try to locate and load */
-    /*   the base dictionary if this is possible (i.e., for PFB       */
-    /*   files).  Otherwise, we load the whole font into memory.      */
-    /*                                                                */
-    /*   When `loading' the base dictionary, we only setup pointers   */
-    /*   in the case of a memory-based stream.  Otherwise, we         */
-    /*   allocate and load the base dictionary in it.                 */
-    /*                                                                */
-    /*   parser->in_pfb is set if we are in a binary (`.pfb') font.   */
-    /*   parser->in_memory is set if we have a memory stream.         */
-    /*                                                                */
+    /*******************************************************************
+     *
+     * Here a short summary of what is going on:
+     *
+     *   When creating a new Type 1 parser, we try to locate and load
+     *   the base dictionary if this is possible (i.e., for PFB
+     *   files).  Otherwise, we load the whole font into memory.
+     *
+     *   When `loading' the base dictionary, we only setup pointers
+     *   in the case of a memory-based stream.  Otherwise, we
+     *   allocate and load the base dictionary in it.
+     *
+     *   parser->in_pfb is set if we are in a binary (`.pfb') font.
+     *   parser->in_memory is set if we have a memory stream.
+     */
 
     /* try to compute the size of the base dictionary;     */
     /* look for a Postscript binary file tag, i.e., 0x8001 */
diff --git a/src/type1/t1parse.h b/src/type1/t1parse.h
index 4ac82ae..5659f4a 100644
--- a/src/type1/t1parse.h
+++ b/src/type1/t1parse.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1parse.h                                                              */
-/*                                                                         */
-/*    Type 1 parser (specification).                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1parse.h
+ *
+ *   Type 1 parser (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T1PARSE_H_
@@ -28,36 +28,45 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    T1_ParserRec                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A PS_ParserRec is an object used to parse a Type 1 fonts very      */
-  /*    quickly.                                                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root         :: The root parser.                                   */
-  /*                                                                       */
-  /*    stream       :: The current input stream.                          */
-  /*                                                                       */
-  /*    base_dict    :: A pointer to the top-level dictionary.             */
-  /*                                                                       */
-  /*    base_len     :: The length in bytes of the top dictionary.         */
-  /*                                                                       */
-  /*    private_dict :: A pointer to the private dictionary.               */
-  /*                                                                       */
-  /*    private_len  :: The length in bytes of the private dictionary.     */
-  /*                                                                       */
-  /*    in_pfb       :: A boolean.  Indicates that we are handling a PFB   */
-  /*                    file.                                              */
-  /*                                                                       */
-  /*    in_memory    :: A boolean.  Indicates a memory-based stream.       */
-  /*                                                                       */
-  /*    single_block :: A boolean.  Indicates that the private dictionary  */
-  /*                    is stored in lieu of the base dictionary.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   T1_ParserRec
+   *
+   * @Description:
+   *   A PS_ParserRec is an object used to parse a Type 1 fonts very
+   *   quickly.
+   *
+   * @Fields:
+   *   root ::
+   *     The root parser.
+   *
+   *   stream ::
+   *     The current input stream.
+   *
+   *   base_dict ::
+   *     A pointer to the top-level dictionary.
+   *
+   *   base_len ::
+   *     The length in bytes of the top dictionary.
+   *
+   *   private_dict ::
+   *     A pointer to the private dictionary.
+   *
+   *   private_len ::
+   *     The length in bytes of the private dictionary.
+   *
+   *   in_pfb ::
+   *     A boolean.  Indicates that we are handling a PFB
+   *     file.
+   *
+   *   in_memory ::
+   *     A boolean.  Indicates a memory-based stream.
+   *
+   *   single_block ::
+   *     A boolean.  Indicates that the private dictionary
+   *     is stored in lieu of the base dictionary.
+   */
   typedef struct  T1_ParserRec_
   {
     PS_ParserRec  root;
diff --git a/src/type1/t1tokens.h b/src/type1/t1tokens.h
index 43a65d8..45fc50d 100644
--- a/src/type1/t1tokens.h
+++ b/src/type1/t1tokens.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1tokens.h                                                             */
-/*                                                                         */
-/*    Type 1 tokenizer (specification).                                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1tokens.h
+ *
+ *   Type 1 tokenizer (specification).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #undef  FT_STRUCTURE
diff --git a/src/type1/type1.c b/src/type1/type1.c
index 72eff59..c2d7922 100644
--- a/src/type1/type1.c
+++ b/src/type1/type1.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  type1.c                                                                */
-/*                                                                         */
-/*    FreeType Type 1 driver component (body only).                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * type1.c
+ *
+ *   FreeType Type 1 driver component (body only).
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
diff --git a/src/type42/t42drivr.c b/src/type42/t42drivr.c
index f579b27..1036503 100644
--- a/src/type42/t42drivr.c
+++ b/src/type42/t42drivr.c
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t42drivr.c                                                             */
-/*                                                                         */
-/*    High-level Type 42 driver interface (body).                          */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  Roberto Alameda.                                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t42drivr.c
+ *
+ *   High-level Type 42 driver interface (body).
+ *
+ * Copyright 2002-2018 by
+ * Roberto Alameda.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This driver implements Type42 fonts as described in the               */
-  /* Technical Note #5012 from Adobe, with these limitations:              */
-  /*                                                                       */
-  /* 1) CID Fonts are not currently supported.                             */
-  /* 2) Incremental fonts making use of the GlyphDirectory keyword         */
-  /*    will be loaded, but the rendering will be using the TrueType       */
-  /*    tables.                                                            */
-  /* 3) As for Type1 fonts, CDevProc is not supported.                     */
-  /* 4) The Metrics dictionary is not supported.                           */
-  /* 5) AFM metrics are not supported.                                     */
-  /*                                                                       */
-  /* In other words, this driver supports Type42 fonts derived from        */
-  /* TrueType fonts in a non-CID manner, as done by usual conversion       */
-  /* programs.                                                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This driver implements Type42 fonts as described in the
+   * Technical Note #5012 from Adobe, with these limitations:
+   *
+   * 1) CID Fonts are not currently supported.
+   * 2) Incremental fonts making use of the GlyphDirectory keyword
+   *    will be loaded, but the rendering will be using the TrueType
+   *    tables.
+   * 3) As for Type1 fonts, CDevProc is not supported.
+   * 4) The Metrics dictionary is not supported.
+   * 5) AFM metrics are not supported.
+   *
+   * In other words, this driver supports Type42 fonts derived from
+   * TrueType fonts in a non-CID manner, as done by usual conversion
+   * programs.
+   *
+   */
 
 
 #include "t42drivr.h"
@@ -52,7 +52,7 @@
 
   /*
    *
-   *  GLYPH DICT SERVICE
+   * GLYPH DICT SERVICE
    *
    */
 
@@ -98,7 +98,7 @@
 
   /*
    *
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -117,7 +117,7 @@
 
   /*
    *
-   *  POSTSCRIPT INFO SERVICE
+   * POSTSCRIPT INFO SERVICE
    *
    */
 
@@ -173,7 +173,7 @@
 
   /*
    *
-   *  SERVICE LIST
+   * SERVICE LIST
    *
    */
 
diff --git a/src/type42/t42drivr.h b/src/type42/t42drivr.h
index 3667f3e..ef50ad9 100644
--- a/src/type42/t42drivr.h
+++ b/src/type42/t42drivr.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t42drivr.h                                                             */
-/*                                                                         */
-/*    High-level Type 42 driver interface (specification).                 */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  Roberto Alameda.                                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t42drivr.h
+ *
+ *   High-level Type 42 driver interface (specification).
+ *
+ * Copyright 2002-2018 by
+ * Roberto Alameda.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T42DRIVR_H_
@@ -26,14 +26,8 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
-
   FT_EXPORT_VAR( const FT_Driver_ClassRec )  t42_driver_class;
 
-
 FT_END_HEADER
 
 
diff --git a/src/type42/t42error.h b/src/type42/t42error.h
index e3978a7..95f9e69 100644
--- a/src/type42/t42error.h
+++ b/src/type42/t42error.h
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t42error.h                                                             */
-/*                                                                         */
-/*    Type 42 error codes (specification only).                            */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t42error.h
+ *
+ *   Type 42 error codes (specification only).
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the Type 42 error enumeration constants.  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the Type 42 error enumeration constants.
+   *
+   */
 
 #ifndef T42ERROR_H_
 #define T42ERROR_H_
diff --git a/src/type42/t42objs.c b/src/type42/t42objs.c
index 66e5c40..0325cad 100644
--- a/src/type42/t42objs.c
+++ b/src/type42/t42objs.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t42objs.c                                                              */
-/*                                                                         */
-/*    Type 42 objects manager (body).                                      */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  Roberto Alameda.                                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t42objs.c
+ *
+ *   Type 42 objects manager (body).
+ *
+ * Copyright 2002-2018 by
+ * Roberto Alameda.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "t42objs.h"
@@ -457,20 +457,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    T42_Driver_Init                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a given Type 42 driver object.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target driver object.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   T42_Driver_Init
+   *
+   * @Description:
+   *   Initializes a given Type 42 driver object.
+   *
+   * @Input:
+   *   driver ::
+   *     A handle to the target driver object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   T42_Driver_Init( FT_Module  module )        /* T42_Driver */
   {
diff --git a/src/type42/t42objs.h b/src/type42/t42objs.h
index 3bad513..332a43c 100644
--- a/src/type42/t42objs.h
+++ b/src/type42/t42objs.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t42objs.h                                                              */
-/*                                                                         */
-/*    Type 42 objects manager (specification).                             */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  Roberto Alameda.                                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t42objs.h
+ *
+ *   Type 42 objects manager (specification).
+ *
+ * Copyright 2002-2018 by
+ * Roberto Alameda.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T42OBJS_H_
diff --git a/src/type42/t42parse.c b/src/type42/t42parse.c
index 4813d1f..edd27a8 100644
--- a/src/type42/t42parse.c
+++ b/src/type42/t42parse.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t42parse.c                                                             */
-/*                                                                         */
-/*    Type 42 font parser (body).                                          */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  Roberto Alameda.                                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t42parse.c
+ *
+ *   Type 42 font parser (body).
+ *
+ * Copyright 2002-2018 by
+ * Roberto Alameda.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include "t42parse.h"
@@ -23,12 +23,12 @@
 #include FT_INTERNAL_POSTSCRIPT_AUX_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_t42
 
@@ -149,19 +149,19 @@
     parser->base_dict = NULL;
     parser->in_memory = 0;
 
-    /*******************************************************************/
-    /*                                                                 */
-    /* Here a short summary of what is going on:                       */
-    /*                                                                 */
-    /*   When creating a new Type 42 parser, we try to locate and load */
-    /*   the base dictionary, loading the whole font into memory.      */
-    /*                                                                 */
-    /*   When `loading' the base dictionary, we only set up pointers   */
-    /*   in the case of a memory-based stream.  Otherwise, we allocate */
-    /*   and load the base dictionary in it.                           */
-    /*                                                                 */
-    /*   parser->in_memory is set if we have a memory stream.          */
-    /*                                                                 */
+    /********************************************************************
+     *
+     * Here a short summary of what is going on:
+     *
+     *   When creating a new Type 42 parser, we try to locate and load
+     *   the base dictionary, loading the whole font into memory.
+     *
+     *   When `loading' the base dictionary, we only set up pointers
+     *   in the case of a memory-based stream.  Otherwise, we allocate
+     *   and load the base dictionary in it.
+     *
+     *   parser->in_memory is set if we have a memory stream.
+     */
 
     if ( FT_STREAM_SEEK( 0L ) ||
          FT_FRAME_ENTER( 17 ) )
@@ -284,6 +284,13 @@
     matrix->xy = temp[2];
     matrix->yy = temp[3];
 
+    if ( !FT_Matrix_Check( matrix ) )
+    {
+      FT_ERROR(( "t42_parse_font_matrix: invalid font matrix\n" ));
+      parser->root.error = FT_THROW( Invalid_File_Format );
+      return;
+    }
+
     /* note that the offsets must be expressed in integer font units */
     offset->x = temp[4] >> 16;
     offset->y = temp[5] >> 16;
diff --git a/src/type42/t42parse.h b/src/type42/t42parse.h
index f35d23d..d9b9a69 100644
--- a/src/type42/t42parse.h
+++ b/src/type42/t42parse.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t42parse.h                                                             */
-/*                                                                         */
-/*    Type 42 font parser (specification).                                 */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  Roberto Alameda.                                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t42parse.h
+ *
+ *   Type 42 font parser (specification).
+ *
+ * Copyright 2002-2018 by
+ * Roberto Alameda.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T42PARSE_H_
diff --git a/src/type42/t42types.h b/src/type42/t42types.h
index d0aa2de..7d0230e 100644
--- a/src/type42/t42types.h
+++ b/src/type42/t42types.h
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t42types.h                                                             */
-/*                                                                         */
-/*    Type 42 font data types (specification only).                        */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  Roberto Alameda.                                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t42types.h
+ *
+ *   Type 42 font data types (specification only).
+ *
+ * Copyright 2002-2018 by
+ * Roberto Alameda.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef T42TYPES_H_
diff --git a/src/type42/type42.c b/src/type42/type42.c
index 6a89cfb..187c5ed 100644
--- a/src/type42/type42.c
+++ b/src/type42/type42.c
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  type42.c                                                               */
-/*                                                                         */
-/*    FreeType Type 42 driver component.                                   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * type42.c
+ *
+ *   FreeType Type 42 driver component.
+ *
+ * Copyright 2002-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #define FT_MAKE_OPTION_SINGLE_OBJECT
diff --git a/src/winfonts/fnterrs.h b/src/winfonts/fnterrs.h
index 3a86af5..08fceb0 100644
--- a/src/winfonts/fnterrs.h
+++ b/src/winfonts/fnterrs.h
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fnterrs.h                                                              */
-/*                                                                         */
-/*    Win FNT/FON error codes (specification only).                        */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fnterrs.h
+ *
+ *   Win FNT/FON error codes (specification only).
+ *
+ * Copyright 2001-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This file is used to define the Windows FNT/FON error enumeration     */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the Windows FNT/FON error enumeration
+   * constants.
+   *
+   */
 
 #ifndef FNTERRS_H_
 #define FNTERRS_H_
diff --git a/src/winfonts/winfnt.c b/src/winfonts/winfnt.c
index 36bd314..70fc827 100644
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -1,21 +1,21 @@
-/***************************************************************************/
-/*                                                                         */
-/*  winfnt.c                                                               */
-/*                                                                         */
-/*    FreeType font driver for Windows FNT/FON files                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*  Copyright 2003 Huw D M Davies for Codeweavers                          */
-/*  Copyright 2007 Dmitry Timoshkov for Codeweavers                        */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * winfnt.c
+ *
+ *   FreeType font driver for Windows FNT/FON files
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ * Copyright 2003 Huw D M Davies for Codeweavers
+ * Copyright 2007 Dmitry Timoshkov for Codeweavers
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -30,12 +30,12 @@
 #include FT_SERVICE_WINFNT_H
 #include FT_SERVICE_FONT_FORMAT_H
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
-  /* messages during execution.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The macro FT_COMPONENT is used in trace mode.  It is an implicit
+   * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
+   * messages during execution.
+   */
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_winfnt
 
@@ -1131,10 +1131,10 @@
     winfnt_get_header       /* get_header */
   };
 
- /*
-  *  SERVICE LIST
-  *
-  */
+  /*
+   * SERVICE LIST
+   *
+   */
 
   static const FT_ServiceDescRec  winfnt_services[] =
   {
diff --git a/src/winfonts/winfnt.h b/src/winfonts/winfnt.h
index 4885c9d..0161939 100644
--- a/src/winfonts/winfnt.h
+++ b/src/winfonts/winfnt.h
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  winfnt.h                                                               */
-/*                                                                         */
-/*    FreeType font driver for Windows FNT/FON files                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*  Copyright 2007 Dmitry Timoshkov for Codeweavers                        */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * winfnt.h
+ *
+ *   FreeType font driver for Windows FNT/FON files
+ *
+ * Copyright 1996-2018 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ * Copyright 2007 Dmitry Timoshkov for Codeweavers
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 #ifndef WINFNT_H_
@@ -28,9 +28,6 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
 
   typedef struct  WinMZ_HeaderRec_
   {
diff --git a/vms_make.com b/vms_make.com
index 6222c5e..7b8a49b 100644
--- a/vms_make.com
+++ b/vms_make.com
@@ -356,8 +356,8 @@
 CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.builds.vms],[--.include],[--.src.base])
 
 OBJS=ftbase.obj,ftinit.obj,ftglyph.obj,ftdebug.obj,ftbdf.obj,ftmm.obj,\
-     fttype1.obj,ftfntfmt.obj,ftpfr.obj,ftstroke.obj,ftwinfnt.obj,ftbbox.obj,\
-     ftbitmap.obj,ftlcdfil.obj,ftgasp.obj
+     fttype1.obj,ftpfr.obj,ftstroke.obj,ftwinfnt.obj,ftbbox.obj,\
+     ftbitmap.obj,ftgasp.obj
 
 all : $(OBJS)
         library [--.lib]freetype.olb $(OBJS)