[FREETYPE]
authorAmine Khaldi <amine.khaldi@reactos.org>
Mon, 3 Mar 2014 20:41:39 +0000 (20:41 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Mon, 3 Mar 2014 20:41:39 +0000 (20:41 +0000)
* Update to version 2.5.2. Thanks to Robert Naumann for providing a patch that I used as a base for this.
[WIN32K]
* Update the FreeType header inclusions.
CORE-7719

svn path=/trunk/; revision=62417

200 files changed:
reactos/lib/3rdparty/freetype/CMakeLists.txt
reactos/lib/3rdparty/freetype/ChangeLog
reactos/lib/3rdparty/freetype/README
reactos/lib/3rdparty/freetype/autogen.sh
reactos/lib/3rdparty/freetype/devel/ft2build.h [new file with mode: 0644]
reactos/lib/3rdparty/freetype/devel/ftoption.h [new file with mode: 0644]
reactos/lib/3rdparty/freetype/include/config/ftconfig.h [moved from reactos/lib/3rdparty/freetype/include/freetype/config/ftconfig.h with 89% similarity]
reactos/lib/3rdparty/freetype/include/config/ftheader.h [moved from reactos/lib/3rdparty/freetype/include/freetype/config/ftheader.h with 89% similarity]
reactos/lib/3rdparty/freetype/include/config/ftmodule.h [moved from reactos/lib/3rdparty/freetype/include/freetype/config/ftmodule.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/config/ftoption.h [moved from reactos/lib/3rdparty/freetype/include/freetype/config/ftoption.h with 99% similarity]
reactos/lib/3rdparty/freetype/include/config/ftstdlib.h [moved from reactos/lib/3rdparty/freetype/include/freetype/config/ftstdlib.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/freetype.h [moved from reactos/lib/3rdparty/freetype/include/freetype/freetype.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/freetype/ftcffdrv.h [deleted file]
reactos/lib/3rdparty/freetype/include/ft2build.h
reactos/lib/3rdparty/freetype/include/ftadvanc.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftadvanc.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/ftautoh.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftautoh.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/ftbbox.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftbbox.h with 97% similarity]
reactos/lib/3rdparty/freetype/include/ftbdf.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftbdf.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftbitmap.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftbitmap.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftbzip2.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftbzip2.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftcache.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftcache.h with 99% similarity]
reactos/lib/3rdparty/freetype/include/ftcffdrv.h [new file with mode: 0644]
reactos/lib/3rdparty/freetype/include/ftchapters.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftchapters.h with 99% similarity]
reactos/lib/3rdparty/freetype/include/ftcid.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftcid.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/fterrdef.h [moved from reactos/lib/3rdparty/freetype/include/freetype/fterrdef.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/fterrors.h [moved from reactos/lib/3rdparty/freetype/include/freetype/fterrors.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftgasp.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftgasp.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftglyph.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftglyph.h with 99% similarity]
reactos/lib/3rdparty/freetype/include/ftgxval.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftgxval.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/ftgzip.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftgzip.h with 74% similarity]
reactos/lib/3rdparty/freetype/include/ftimage.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftimage.h with 99% similarity]
reactos/lib/3rdparty/freetype/include/ftincrem.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftincrem.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftlcdfil.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftlcdfil.h with 97% similarity]
reactos/lib/3rdparty/freetype/include/ftlist.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftlist.h with 97% similarity]
reactos/lib/3rdparty/freetype/include/ftlzw.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftlzw.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftmac.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftmac.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/ftmm.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftmm.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/ftmodapi.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftmodapi.h with 99% similarity]
reactos/lib/3rdparty/freetype/include/ftmoderr.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftmoderr.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftotval.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftotval.h with 97% similarity]
reactos/lib/3rdparty/freetype/include/ftoutln.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftoutln.h with 96% similarity]
reactos/lib/3rdparty/freetype/include/ftpfr.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftpfr.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftrender.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftrender.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftsizes.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftsizes.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/ftsnames.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftsnames.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/ftstroke.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftstroke.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftsynth.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftsynth.h with 96% similarity]
reactos/lib/3rdparty/freetype/include/ftsystem.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftsystem.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/fttrigon.h [moved from reactos/lib/3rdparty/freetype/include/freetype/fttrigon.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ftttdrv.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftttdrv.h with 85% similarity]
reactos/lib/3rdparty/freetype/include/fttypes.h [moved from reactos/lib/3rdparty/freetype/include/freetype/fttypes.h with 99% similarity]
reactos/lib/3rdparty/freetype/include/ftwinfnt.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftwinfnt.h with 97% similarity]
reactos/lib/3rdparty/freetype/include/ftxf86.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ftxf86.h with 96% similarity]
reactos/lib/3rdparty/freetype/include/internal/autohint.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/autohint.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftcalc.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftcalc.h with 98% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftdebug.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftdebug.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftdriver.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftdriver.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftgloadr.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftgloadr.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftmemory.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftmemory.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftobjs.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftobjs.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftpic.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftpic.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftrfork.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftrfork.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftserv.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftserv.h with 96% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftstream.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftstream.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/fttrace.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/fttrace.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/ftvalid.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/ftvalid.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/internal.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/internal.h with 61% similarity]
reactos/lib/3rdparty/freetype/include/internal/psaux.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/psaux.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/pshints.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/pshints.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svbdf.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svbdf.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svcid.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svcid.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svgldict.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svgldict.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svgxval.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svgxval.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svkern.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svkern.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svmm.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svmm.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svotval.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svotval.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svpfr.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svpfr.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svpostnm.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svpostnm.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svprop.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svprop.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svpscmap.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svpscmap.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svpsinfo.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svpsinfo.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svsfnt.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svsfnt.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svttcmap.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svttcmap.h with 97% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svtteng.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svtteng.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svttglyf.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svttglyf.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svwinfnt.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svwinfnt.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/services/svxf86nm.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/services/svxf86nm.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/sfnt.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/sfnt.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/t1types.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/t1types.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/internal/tttypes.h [moved from reactos/lib/3rdparty/freetype/include/freetype/internal/tttypes.h with 94% similarity]
reactos/lib/3rdparty/freetype/include/t1tables.h [moved from reactos/lib/3rdparty/freetype/include/freetype/t1tables.h with 100% similarity]
reactos/lib/3rdparty/freetype/include/ttnameid.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ttnameid.h with 99% similarity]
reactos/lib/3rdparty/freetype/include/tttables.h [moved from reactos/lib/3rdparty/freetype/include/freetype/tttables.h with 97% similarity]
reactos/lib/3rdparty/freetype/include/tttags.h [moved from reactos/lib/3rdparty/freetype/include/freetype/tttags.h with 97% similarity]
reactos/lib/3rdparty/freetype/include/ttunpat.h [moved from reactos/lib/3rdparty/freetype/include/freetype/ttunpat.h with 100% similarity]
reactos/lib/3rdparty/freetype/modules.cfg
reactos/lib/3rdparty/freetype/objs/README [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/autofit/afblue.c [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/autofit/afblue.cin [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/autofit/afblue.dat [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/autofit/afblue.h [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/autofit/afblue.hin [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/autofit/afcjk.c
reactos/lib/3rdparty/freetype/src/autofit/afcjk.h
reactos/lib/3rdparty/freetype/src/autofit/afdummy.c
reactos/lib/3rdparty/freetype/src/autofit/afdummy.h
reactos/lib/3rdparty/freetype/src/autofit/afglobal.c
reactos/lib/3rdparty/freetype/src/autofit/afglobal.h
reactos/lib/3rdparty/freetype/src/autofit/afhints.c
reactos/lib/3rdparty/freetype/src/autofit/afhints.h
reactos/lib/3rdparty/freetype/src/autofit/afindic.c
reactos/lib/3rdparty/freetype/src/autofit/afindic.h
reactos/lib/3rdparty/freetype/src/autofit/aflatin.c
reactos/lib/3rdparty/freetype/src/autofit/aflatin.h
reactos/lib/3rdparty/freetype/src/autofit/aflatin2.c
reactos/lib/3rdparty/freetype/src/autofit/aflatin2.h
reactos/lib/3rdparty/freetype/src/autofit/afloader.c
reactos/lib/3rdparty/freetype/src/autofit/afpic.c
reactos/lib/3rdparty/freetype/src/autofit/afpic.h
reactos/lib/3rdparty/freetype/src/autofit/afscript.h [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/autofit/aftypes.h
reactos/lib/3rdparty/freetype/src/autofit/afwrtsys.h [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/autofit/autofit.c
reactos/lib/3rdparty/freetype/src/autofit/rules.mk
reactos/lib/3rdparty/freetype/src/base/ftbbox.c
reactos/lib/3rdparty/freetype/src/base/ftbitmap.c
reactos/lib/3rdparty/freetype/src/base/ftcalc.c
reactos/lib/3rdparty/freetype/src/base/ftdebug.c
reactos/lib/3rdparty/freetype/src/base/ftglyph.c
reactos/lib/3rdparty/freetype/src/base/ftinit.c
reactos/lib/3rdparty/freetype/src/base/ftmac.c
reactos/lib/3rdparty/freetype/src/base/ftobjs.c
reactos/lib/3rdparty/freetype/src/base/ftoutln.c
reactos/lib/3rdparty/freetype/src/base/ftpic.c
reactos/lib/3rdparty/freetype/src/base/ftsynth.c
reactos/lib/3rdparty/freetype/src/base/md5.c
reactos/lib/3rdparty/freetype/src/base/md5.h
reactos/lib/3rdparty/freetype/src/base/rules.mk
reactos/lib/3rdparty/freetype/src/bdf/Jamfile [deleted file]
reactos/lib/3rdparty/freetype/src/bdf/bdfdrivr.c
reactos/lib/3rdparty/freetype/src/bzip2/Jamfile [deleted file]
reactos/lib/3rdparty/freetype/src/cache/Jamfile [deleted file]
reactos/lib/3rdparty/freetype/src/cff/cf2blues.c
reactos/lib/3rdparty/freetype/src/cff/cf2font.c
reactos/lib/3rdparty/freetype/src/cff/cf2font.h
reactos/lib/3rdparty/freetype/src/cff/cf2ft.c
reactos/lib/3rdparty/freetype/src/cff/cf2hints.c
reactos/lib/3rdparty/freetype/src/cff/cf2hints.h
reactos/lib/3rdparty/freetype/src/cff/cffdrivr.c
reactos/lib/3rdparty/freetype/src/cff/cffgload.c
reactos/lib/3rdparty/freetype/src/cff/cffload.c
reactos/lib/3rdparty/freetype/src/cff/cffobjs.c
reactos/lib/3rdparty/freetype/src/cff/cffobjs.h
reactos/lib/3rdparty/freetype/src/cid/cidgload.c
reactos/lib/3rdparty/freetype/src/cid/cidload.c
reactos/lib/3rdparty/freetype/src/gxvalid/gxvcommn.c
reactos/lib/3rdparty/freetype/src/gxvalid/gxvcommn.h
reactos/lib/3rdparty/freetype/src/gxvalid/gxvmort.c
reactos/lib/3rdparty/freetype/src/gxvalid/gxvmorx2.c
reactos/lib/3rdparty/freetype/src/gzip/Jamfile [deleted file]
reactos/lib/3rdparty/freetype/src/gzip/ftgzip.c
reactos/lib/3rdparty/freetype/src/gzip/rules.mk
reactos/lib/3rdparty/freetype/src/pcf/pcfdrivr.c
reactos/lib/3rdparty/freetype/src/pcf/pcfread.c
reactos/lib/3rdparty/freetype/src/pcf/pcfutil.c
reactos/lib/3rdparty/freetype/src/pfr/pfrcmap.c
reactos/lib/3rdparty/freetype/src/pfr/pfrgload.c
reactos/lib/3rdparty/freetype/src/pfr/pfrobjs.c
reactos/lib/3rdparty/freetype/src/psaux/Jamfile [deleted file]
reactos/lib/3rdparty/freetype/src/pshinter/pshglob.c
reactos/lib/3rdparty/freetype/src/raster/ftraster.c
reactos/lib/3rdparty/freetype/src/sfnt/pngshim.c
reactos/lib/3rdparty/freetype/src/sfnt/pngshim.h
reactos/lib/3rdparty/freetype/src/sfnt/sfdriver.c
reactos/lib/3rdparty/freetype/src/sfnt/sfobjs.c
reactos/lib/3rdparty/freetype/src/sfnt/ttcmap.c
reactos/lib/3rdparty/freetype/src/sfnt/ttkern.c
reactos/lib/3rdparty/freetype/src/sfnt/ttload.c
reactos/lib/3rdparty/freetype/src/sfnt/ttmtx.c
reactos/lib/3rdparty/freetype/src/sfnt/ttsbit.c
reactos/lib/3rdparty/freetype/src/sfnt/ttsbit.h
reactos/lib/3rdparty/freetype/src/smooth/ftgrays.c
reactos/lib/3rdparty/freetype/src/tools/afblue.pl [new file with mode: 0644]
reactos/lib/3rdparty/freetype/src/tools/chktrcmp.py
reactos/lib/3rdparty/freetype/src/tools/docmaker/content.py
reactos/lib/3rdparty/freetype/src/tools/docmaker/docmaker.py
reactos/lib/3rdparty/freetype/src/tools/docmaker/sources.py
reactos/lib/3rdparty/freetype/src/tools/docmaker/tohtml.py
reactos/lib/3rdparty/freetype/src/truetype/ttdriver.c
reactos/lib/3rdparty/freetype/src/truetype/ttgload.c
reactos/lib/3rdparty/freetype/src/truetype/ttgload.h
reactos/lib/3rdparty/freetype/src/truetype/ttinterp.c
reactos/lib/3rdparty/freetype/src/truetype/ttinterp.h
reactos/lib/3rdparty/freetype/src/truetype/ttobjs.c
reactos/lib/3rdparty/freetype/src/type1/t1gload.c
reactos/lib/3rdparty/freetype/src/type1/t1load.c
reactos/lib/3rdparty/freetype/src/type42/t42objs.c
reactos/lib/3rdparty/freetype/src/winfonts/winfnt.c
reactos/media/doc/3rd Party Files.txt
reactos/win32ss/gdi/ntgdi/freetype.c

index 764c3a1..c6afe6e 100644 (file)
@@ -7,24 +7,35 @@ include_directories(include)
 
 list(APPEND SOURCE
   src/autofit/autofit.c
-  src/base/ftbase.c
+  src/base/ftadvanc.c
   src/base/ftbbox.c
-  src/base/ftbdf.c
   src/base/ftbitmap.c
+  src/base/ftcalc.c
+  src/base/ftcid.c
+  src/base/ftdbgmem.c
   src/base/ftdebug.c
+  src/base/ftfstype.c
   src/base/ftgasp.c
+  src/base/ftgloadr.c
   src/base/ftglyph.c
   src/base/ftgxval.c
   src/base/ftinit.c
   src/base/ftlcdfil.c
   src/base/ftmm.c
+  src/base/ftobjs.c
   src/base/ftotval.c
+  src/base/ftoutln.c
   src/base/ftpatent.c
   src/base/ftpfr.c
+  src/base/ftrfork.c
+  src/base/ftsnames.c
+  src/base/ftstream.c
   src/base/ftstroke.c
   src/base/ftsynth.c
   src/base/ftsystem.c
+  src/base/fttrigon.c
   src/base/fttype1.c
+  src/base/ftutil.c
   src/base/ftwinfnt.c
   src/base/ftxf86.c
   src/bdf/bdf.c
@@ -32,15 +43,13 @@ list(APPEND SOURCE
   src/cache/ftcache.c
   src/cff/cff.c
   src/cid/type1cid.c
-  src/gxvalid/gxvalid.c
   src/gzip/ftgzip.c
   src/lzw/ftlzw.c
-  src/otvalid/otvalid.c
   src/pcf/pcf.c
   src/pfr/pfr.c
   src/psaux/psaux.c
   src/pshinter/pshinter.c
-  src/psnames/psnames.c
+  src/psnames/psmodule.c
   src/raster/raster.c
   src/sfnt/sfnt.c
   src/smooth/smooth.c
index 5cda57a..b67e436 100644 (file)
+2013-12-08  Werner Lemberg  <wl@gnu.org>
+
+       * Version 2.5.2 released.
+       =========================
+
+
+       Tag sources with `VER-2-5-2'.
+
+       * docs/VERSION.DLL: Update documentation and bump version number to
+       2.5.2.
+
+       * 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.5.1/2.5.2/, s/251/252/.
+
+       * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
+
+       * builds/unix/configure.raw (version_info): Set to 17:1:11.
+       * docs/CHANGES: Updated.
+
+2013-12-07  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Next round in phantom point handling.
+
+       Greg Hitchcock provided very interesting insights into the
+       complicated history of the horizontal positions of the TSB and BSB
+       phantom points.
+
+       * src/truetype/ttgload.c (TT_LOADER_SET_PP)
+       [TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Use `subpixel_hinting' and
+       `grayscale_hinting' flags as conditionals for the x position of TSB
+       and BSB.
+
+2013-12-05  Werner Lemberg  <wl@gnu.org>
+
+       * builds/freetype.mk (FT_CC): Removed.  Unused.
+
+2013-12-04  Werner Lemberg  <wl@gnu.org>
+
+       [sfnt] Fix handling of embedded bitmap strikes.
+
+       This corrects the commit from 2013-11-21.  Problem reported by
+       Andrey Panov <panov@canopus.iacp.dvo.ru>.
+
+       * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to
+       detect excessive bytes for bit-aligned bitmaps.
+
+2013-12-03  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Remove dead code.
+
+       Reported by Nigel Tao <nigeltao@golang.org>.
+
+       * include/internal/tttypes.h (TT_LoaderRec): Remove unused
+       `preserve_pps' field.
+       * src/truetype/ttgload.c (TT_Hint_Glyph): Updated.
+
+2013-12-03  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Fix phantom point handling.
+
+       This is a further improvement to the changes from 2013-11-06.
+
+       * src/truetype/ttgload.c (TT_Hint_Glyph): Horizontal phantom points
+       are rounded horizontally, vertical ones are rounded vertically.
+       (TT_LOADER_SET_PP): The horizontal position of vertical phantom
+       points in pre-ClearType mode is zero, as shown in the OpenType
+       specification.
+
+2013-12-02  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Fix change from 2013-11-20.
+
+       Problem reported by Akira Kakuto <kakuto@fuk.kindai.ac.jp>.
+
+       * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Protect call to
+       `Update_Max' with both a TT_USE_BYTECODE_INTERPRETER guard and a
+       `IS_HINTED' clause.
+       Also remove redundant check using `maxSizeOfInstructions' – in
+       simple glyphs, the bytecode data comes before the outline data, and
+       a validity test for this is already present.
+
+2013-11-27  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Fix use of dumping functions in `ftgrid' demo program.
+
+       * src/autofit/afhints.c (AF_DUMP) [FT_DEBUG_AUTOFIT]: New macro.
+       (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
+       af_glyph_hints_dump_edges) [FT_DEBUG_AUTOFIT]: Add parameter to
+       handle output to stdout.
+       Use AF_DUMP.
+       (af_glyph_hints_dump_points, af_glyph_hints_dump_segments,
+       af_glyph_hints_dump_edges) [!FT_DEBUG_AUTOFIT]: Removed.
+
+2013-11-25  Werner Lemberg  <wl@gnu.org>
+
+       * Version 2.5.1 released.
+       =========================
+
+
+       Tag sources with `VER-2-5-1'.
+
+       * docs/VERSION.DLL: Update documentation and bump version number to
+       2.5.1.
+
+       * 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.5.0/2.5.1/, s/250/251/.
+
+       * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1.
+
+       * builds/unix/configure.raw (version_info): Set to 17:0:11.
+       * CMakeLists.txt (VERSION_PATCH): Set to 2.
+       * docs/CHANGES, docs/release: Updated.
+
+2013-11-23  Werner Lemberg  <wl@gnu.org>
+
+       [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'.
+
+       * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS,
+       TRICK_NAMES_COUNT): Updated.
+       (trick_names): Add family name for the two fonts.
+
+2013-11-23  Werner Lemberg  <wl@gnu.org>
+
+       * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo.
+
+2013-11-21  Werner Lemberg  <wl@gnu.org>
+
+       [sfnt] Typo.
+
+       Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
+
+       * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width'
+       value if the font lacks an `OS/2' table.
+
+2013-11-21  Werner Lemberg  <wl@gnu.org>
+
+       [sfnt] Improve handling of buggy embedded bitmap strikes.
+
+       We are now able to successfully load `AppleMyoungJo.ttf'.
+       Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>.
+
+       * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph
+       format.
+
+2013-11-20  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Don't trust `maxp's `maxSizeOfInstructions'.
+
+       Problem reported by Hin-Tak Leung <htl10@users.sourceforge.net>; see
+
+         http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html
+
+       for details.
+
+       * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep'
+       tables also for setting `autohint'.
+
+       * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from
+       `TT_Process_Composite_Glyph' for handling unreliable values of
+       `maxSizeOfInstructions'.
+
+2013-11-16  Werner Lemberg  <wl@gnu.org>
+
+       [sfnt] Fix `OS/2' table version 5 support.
+
+       We now follow the `official' announcement from Microsoft (on the
+       OpenType mailing list, which unfortunately hasn't a public archive).
+
+       * include/freetype/tttables.h (TT_OS2):
+       s/usLowerPointSize/usLowerOpticalPointSize/,
+       s/usUpperPointSize/usUpperOpticalPointSize/.
+
+       * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct
+       default values.
+
+2013-11-13  Werner Lemberg  <wl@gnu.org>
+
+       * builds/unix/ft2unix.h: Remove.  No longer necessary.
+
+       * builds/unix/install.mk (install): Updated.
+
+2013-11-13  Werner Lemberg  <wl@gnu.org>
+
+       Simplify header file hierarchy.
+
+       This large patch changes the header file directory layout from
+       `include/freetype/...' to `include/...', effectively removing one
+       level.  Since the file `ft2build.h' is also located in `include'
+       (and it stays there even after installation), all FreeType header
+       files are now in a single directory.
+
+       Applications that use (a) `freetype-config' or FreeType's
+       `pkg-config' file to get the include directory for the compiler, and
+       (b) the documented way for header inclusion like
+
+         #include <ft2build.h>
+         #include FT_FREETYPE_H
+         ...
+
+       don't need any change to the source code.
+
+       * include/freetype/*: Move up to...
+       * include/*: ... this directory.
+
+       * builds/amiga/include/freetype/*: Move up to...
+       * builds/amiga/include/*: ... this directory.
+
+       */*: Essentially do `s@/freetype/@/@' where appropriate.
+
+       * CMakeList.txt: Simplify.
+       * builds/unix/freetype-config.in, builds/unix/freetype2.in: For
+       `--cflags', return a single directory.
+       * builds/unix/install.mk (install): No longer try to remove `cache'
+       and `internal' subdirectories; instead, remove the `freetype'
+       subdirectory.
+
+2013-11-12  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Fix last `truetype' commit.
+
+       * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position.
+       Return error value.
+       (load_truetype_glyph): Updated.
+
+2013-11-10  Werner Lemberg  <wl@gnu.org>
+
+       * docs/CMAKE: New dummy file.
+
+2013-11-08  Dave Arnold  <darnold@adobe.com>
+
+       [cff] Fix for hints that touch.
+
+       * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for
+       finding index value of insertion point.
+
+2013-11-06  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Fix handling of phantom points in composite glyphs.
+       Problem reported by Nigel Tao <nigeltao@golang.org>.
+
+       This is a follow-up commit to the previous one.
+
+       * src/truetype/ttgload.c (load_truetype_glyph): Call
+       `tt_get_metrics' after loading the glyph header.
+
+2013-11-06  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Improve emulation of vertical metrics.
+
+       This commit also improves the start values of vertical phantom
+       points.  Kudos to Greg Hitchcock for help.
+
+       * src/truetype/ttgload.c (TT_Get_VMetrics): Add parameter to pass
+       `yMax' value.  Replace code with fixed Microsoft definition.
+       (tt_get_metrics): Updated.
+       (TT_LOADER_SET_PP): Add explanation how to initialize phantom
+       points, taken from both the OpenType specification and private
+       communication with Greg (which will eventually be added to the
+       standard).
+       Fix horizontal position of `pp3' and `pp4'.
+
+       * src/truetype/ttgload.h: Updated.
+
+       * src/truetype/ttdriver.c (tt_get_advances): Updated.
+
+       * docs/CHANGES: Updated.
+
+2013-11-05  Werner Lemberg  <wl@gnu.org>
+
+       * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/.
+       PlatformToolSet version 110 is for VC2012.
+
+       Problem reported (with solution) by Dave Arnold <darnold@adobe.com>.
+
+2013-11-05  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Correctly reset point tags for glyph components.
+       Problem reported by Nigel Tao <nigeltao@golang.org>.
+
+       * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop.
+
+2013-11-02  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Fix GETINFO opcode handling of subpixel hinting bits.
+
+       * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to
+       get info on subpixel hinting.
+
+       * docs/CHANGES: Updated.
+
+2013-11-02  Werner Lemberg  <wl@gnu.org>
+
+       Fix Savannah bug #40451.
+
+       Simply apply the patch from the bug report.
+
+       * builds/unix/ftconfig.in, builds/vms/ftconfig.h,
+       include/freetype/config/ftconfig.h: The used #pragma directives only
+       work with gcc versions 4.6 and higher.
+
+2013-11-01  Werner Lemberg  <wl@gnu.org>
+
+       * docs/CHANGES: Updated.
+
+2013-11-01  Werner Lemberg  <wl@gnu.org>
+
+       [truetype] Minor code refactoring.
+
+       Two benefits: The allocated FDEF (and IDEF) array gets slightly
+       smaller, and the `ttdebug' demo program has access to function
+       numbers without additional costs.
+
+       Fortunately, no changes to FontForge are necessary – this is the
+       only external TrueType debugger I know of, but others may exist and
+       should check the code accordingly.
+
+       * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and
+       `Cur_End' with a pointer to the corresponding `TT_DefRecord'
+       structure.
+
+       * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF,
+       Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns <Invalid_Opcode>):
+       Updated.
+
+2013-10-27  Werner Lemberg  <wl@gnu.org>
+
+       [sfnt] Implement support for `OS/2' table version 5.
+
+       See
+
+         http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism
+
+       for the announcement.
+
+       * include/freetype/tttables.h (TT_OS2): Add fields
+       `usLowerPointSize' and `usUpperPointSize'.  Since FreeType returns
+       this structure only as a pointer through `FT_Get_Sfnt_Table', there
+       shouldn't be any ABI problems.
+
+       * src/sfnt/ttload.c (tt_face_load_os2): Implement it.
+
+       * docs/CHANGES: Updated.
+
+2013-10-24  Werner Lemberg  <wl@gnu.org>
+
+       * README.git, docs/CHANGES, docs/INSTALL: Updated.
+
+2013-10-24  John Cary  <cary@txcorp.com>
+
+       Provide cmake support.
+
+       * CMakeLists.txt: New file.
+
+2013-10-23  Kenneth Miller  <kennethadammiller@yahoo.com>
+           Werner Lemberg  <wl@gnu.org>
+
+       Provide support for x64 builds in Visual C++ project files.
+
+       * src/builds/win32: Renamed to...
+       * src/builds/windows: This.
+
+       * src/builds/windows/vc2010/*: Updated to handle x64 target.
+
+       * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where
+       appropriate.
+
+2013-10-22  Werner Lemberg  <wl@gnu.org>
+
+       * src/base/md5.c, src/base/md5.h: Updated to recent version.
+
+       * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'.
+
+       The canonical URL to get updates for this file is
+
+         http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/
+
+       as the author told me in private communication.
+
+2013-10-19  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] s/SMALL_TOP/X_HEIGHT/.
+
+       * src/autofit/afblue.dat: Updated.
+
+       * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+       * src/autofit/aflatin.c, src/autofit/aflatin.h,
+       src/autofit/atlatin2.c: Updated.
+
+2013-10-19  Werner Lemberg  <wl@gnu.org>
+
+       * src/autofit/afblue.dat: s/MINOR/DESCENDER/.
+
+       * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+2013-10-16  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Add description strings to script entries.
+
+       Currently, this is unused.
+
+       * src/autofit/afscript.h: Do it.
+       * src/autofit/afglobal.c, src/autofit/afpic.c,
+       src/autofit/aftypes.h: Updated.
+
+2013-10-16  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Improve tracing message for extra light flag.
+
+       * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it.
+
+2013-10-15  Chongyu Zhu  <lembacon@gmail.com>
+
+       [arm] Fix thumb2 inline assembly under LLVM.
+
+       When using `ADD' with an immediate operand, the instruction is
+       actually `ADD Rd, Rn, #<imm12>', that is, the maximum of the
+       immediate operand cannot exceed 4095.  It will fail to compile with
+       LLVM.
+
+       However, in GCC, due to some legacy compatibility considerations,
+       `ADD.W' will be automatically emitted when the immediate operand is
+       larger than 4095.
+
+       * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
+       (FT_MulFix_arm) [__GNUC__]: Support clang compiler.
+
+       * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto.
+
+2013-10-12  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Improve tracing of `latin' hinter.
+
+       * src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
+       zone types.
+       (af_latin_metrics_scale_dim): Report scaling changes due to x height
+       alignment.
+       Report scaled stroke width and blue zone values.
+
+2013-10-03  Dave Arnold  <darnold@adobe.com>
+
+       * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.
+
+       Note that the old code avoided using a region of the piecewise
+       linear function where the slope was zero.  The recovery was to use a
+       different section of the function, which produced a different,
+       incorrect amount of darkening.
+
+2013-10-02  Darrell Bellert  <darrell.bellert@hl.konicaminolta.us>
+
+       * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'.
+
+2013-10-02  Dave Arnold  <darnold@adobe.com>
+
+       * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount.
+
+       This line was lost in commit 89ca1fd6 (from 2013-06-25).  The effect
+       is to use a previous darkening amount when producing an unhinted,
+       unscaled outline.  This can cause autohint samples in ftgrid and
+       ftview to be based on darkened CFF outlines instead of unhinted,
+       undarkened ones.
+
+2013-09-29  Dave Arnold  <darnold@adobe.com>
+
+       Fix Savannah bug #39295.
+
+       The bug was caused by switching to the initial hintmap (the one in
+       effect when `moveto' executes) just before drawing the final element
+       in the charstring.  This ensured that the path was closed (in both
+       Character Space and Device Space).  But if the final element was a
+       curve and if the final hintmap was different enough from the initial
+       one, then the curve was visibly distorted.
+
+       The first part of the fix is to draw the final curve using the final
+       hintmap as specified by the charstring.  This corrects the
+       distortion but does not ensure closing in Device Space.  It may
+       require the rasterizer to automatically generate an extra closing
+       line.  Depending on the hintmap differences, this line could be from
+       zero to a couple pixels in length.
+
+       The second part of the fix covers the case where the charstring
+       subpath is closed with an explicit line.  We now modify that line's
+       end point to avoid the distortion.
+
+       Some glyphs in the bug report font (TexGyreHeros-Regular) that show
+       the change are:
+
+         25ppem    S (98)
+         24ppem    eight (52)
+         25.5ppem  p (85)
+
+       Curves at the *end* of a subpath are no longer distorted.  However,
+       some of these glyphs have bad hint substitutions in the middle of a
+       subpath, and these are not affected.
+
+       The patch has been tested with a set of 106 fonts that shipped with
+       Adobe Creative Suite 4, together with 756 Open Source CFF fonts from
+       Google Fonts.  There are 1.5 million glyphs, of which some 20k are
+       changed with the fix.  A sampling of a few hundred of these changes
+       have been examined more closely, and the changes look good (or at
+       least acceptable).
+
+       * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing'
+       to indicate that we synthesize a closepath line.
+
+       * src/cff/cf2hints.c (cf2_glyphpath_init): Updated.
+       (cf2_glyphpath_pushPrevElem): If closing, use first hint map (for
+       `lineto' operator) and adjust hint zone.
+       For synthesized closing lines, use end point in first hint zone.
+       (cf2_glyphpath_lineTo): Take care of synthesized closing lines.  In
+       particular, shift the detection of zero-length lines from character
+       space to device space.
+       (cf2_glyphpath_closeOpenPath): Remove assertion.
+       Updated.
+
+2013-09-25  Werner Lemberg  <wl@gnu.org>
+
+       * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays.
+
+2013-09-25  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+       [bdf, pcf] Refuse non-zero face_index.
+
+       Suggested by Akira Tagoh, see
+
+         http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html
+
+       * src/bdf/bdfdrivr.c (BDF_Face_Init): Return `Invalid_Argument'
+       error if the font could be opened but non-zero `face_index' is
+       given.
+       * src/pcf/pcfdrivr.c (PCF_Face_Init): Ditto.
+
+       * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED
+       macro for `face_index' because it is validated later.
+
+2013-09-23  Werner Lemberg  <wl@gnu.org>
+
+       Fix Savannah bug #40090.
+
+       * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit
+       306f8c5d (from 2013-08-25) affecting this function.
+
+2013-09-22  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Disunify Cyrillic and Greek handling from Latin.
+
+       * src/autofit/afscript.h: Add Cyrillic and Greek.
+
+       * src/autofit/afblue.dat (AF_BLUE_STRINGSET_GREK,
+       AF_BLUE_STRINGSET_CYRL): Add blue zones for Greek and Cyrillic.
+       (AF_BLUE_STRINGSET_LATN): Fix typo.
+       * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+       * src/autofit/aflatin.c (af_grek_uniranges, af_cyrl_uniranges): New
+       arrays.
+       (af_grek_script_class, af_cyrl_script_class): New scripts.
+       * src/autofit/aflatin.h: Updated.
+
+2013-09-20  Werner Lemberg  <wl@gnu.org>
+
+       * docs/CHANGES: Updated.
+
+2013-09-20  Behdad Esfahbod  <behdad@behdad.org>
+
+       Fix vertical size of emboldened glyphs.
+
+       Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709
+
+       * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY'
+       also.
+
+2013-09-11  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation
+       algorithm description.
+
+2013-09-11  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Improve Hebrew rendering.
+
+       This change introduces a new blue zone property
+       `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short
+       top segments.
+
+       * src/autofit/afblue.dat: Fix Hebrew blue strings.
+       Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP.
+
+       * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro.
+
+       * src/autofit/afblue.c, src/autofit/afblue.h: Updated.
+
+       * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle
+       `AF_LATIN_IS_LONG_BLUE'.
+
+       * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro.
+
+2013-08-28  Behdad Esfahbod  <behdad@google.com>
+
+       [sfnt] Fix frame access while reading WOFF table directory.
+
+       * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame
+       while reading the directory entries for the whole loop.
+
+2013-08-29  Werner Lemberg  <wl@gnu.org>
+            Behdad Esfahbod  <behdad@google.com>
+
+       Implement support for WOFF containers.
+
+       We simply synthesize a SFNT from the WOFF, create a memory stream
+       for the new data, and load the SFNT as usual.
+
+       Does NOT add any API to access WOFF metadata or private blocks.
+
+       * include/freetype/internal/tttypes.h (WOFF_HeaderRec,
+       WOFF_TableRec): New structures.
+
+       * include/freetype/tttags.h (TTAG_wOFF): New macro.
+
+       * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling
+       `open_face'.
+
+       * src/sfnt/sfobjs.c [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Include
+       `FT_GZIP_H'.
+       (WRITE_BYTE, WRITE_USHORT, WRITE_ULONG): New temporary macros for
+       writing to a stream.
+       (sfnt_stream_close, compare_offsets, woff_open_font): New functions.
+       (sfnt_open_font): Handle `TTAG_wOFF'.
+       (sfnt_init_face): Set `stream' after calling `sfnt_open_font'.
+
+       * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling
+       `sfnt->init_face'.
+
+       * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an
+       argument so that a changed stream survives.
+       Update callers.
+
+2013-08-28  Werner Lemberg  <wl@gnu.org>
+
+       [gzip] New function `FT_Gzip_Uncompress'.
+
+       This is modeled after zlib's `uncompress' function.  We need this
+       for WOFF support.
+
+       * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress):
+       New function.
+
+       * src/gzip/rules.mk: Rewrite to better reflect dependencies.
+
+2013-08-28  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Fix `make multi' compilation.
+
+       * src/autofit/afblue.cin, src/autofit/afblue.c: Don't include
+       `afblue.h' but `aftypes.h'.
+       * src/autofit/afcjk.c: Don't include `aftypes.h' but `afglobal.h'.
+
+2013-08-28  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Fix C++ compilation.
+
+       * src/autofit/afglobal.c (af_face_globals_get_metrics),
+       src/autofit/afdummy.c (af_dflt_script_class), src/autofit/afindic.c
+       (af_deva_script_class): Use proper casts.
+
+2013-08-27  Behdad Esfahbod  <behdad@google.com>
+
+       * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos.
+
+2013-08-27  Behdad Esfahbod  <behdad@google.com>
+
+       FT_Open_Face: Improve external stream handling.
+
+       If the font's `clazz->init_face' function wants to swap to new
+       stream, handling of whether original stream was external could
+       result to either memory leak or double free.  Mark externality into
+       face flags before calling `init_face' such that the clazz can handle
+       external streams properly.
+
+       * src/base/ftobjs.c (FT_Open_Face): Move code to set
+       FT_FACE_FLAG_EXTERNAL_STREAM to...
+       (open_face): This function.
+
+2013-08-27  Werner Lemberg  <wl@gnu.org>
+
+       Remove `FT_SqrtFixed' function.
+
+       It's no longer used.
+
+       * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it.
+
+2013-08-27  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] While tracing, report script names instead of ID values.
+
+       * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]:
+       New array.
+       * src/autofit/afglobal.h: Updated.
+
+       * src/autofit/afcjk.c (af_cjk_metrics_init_widths,
+       af_cjk_hint_edges): Use `af_script_names'.
+       * src/autofit/aflatin.c (af_latin_metrics_init_widths,
+       af_latin_hint_edges): Ditto.
+
+2013-08-26  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Report used script while hinting a glyph.
+
+       * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c
+       (af_latin_hint_edges): Implement it.
+
+2013-08-26  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Add support for Hebrew script.
+
+       * src/autofit/afblue.dat: Add blue strings for Hebrew.
+       * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated.
+
+       * src/autofit/aflatin.c (af_hebr_uniranges): New array.
+       (af_hebr_script_class): New script.
+       * src/autofit/aflatin.h, src/autofit/afscript.h: Updated.
+
+2013-08-26  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Improve tracing messages.
+
+       * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Mention script
+       ID in tracing message.
+       (af_cjk_metrics_init_blues): Initialize `axis' outside of the inner
+       loop.
+       Improve tracing messages.
+       (af_cjk_hint_edges) [FT_DEBUG_LEVEL_TRACE]: New variable
+       `num_actions' to count hinting actions.
+       Improve tracing messages.
+
+       * src/autofit/aflatin.c (af_latin_metrics_init_widths): Mention
+       script ID in tracing message.
+       (af_latin_metrics_init_blues, af_latin_hint_edges): Improve tracing
+       messages.
+
+2013-08-26  Werner Lemberg  <wl@gnu.org>
+
+       Better tracing of loaded glyphs.
+
+       Previously, the loading of a glyph was traced at level 4, if at all.
+       With this change, all font loading routines emit a tracing message
+       at level 1, making it easier to select tracing output (for example
+       using F2_DEBUG="any:1 afhints:7 aflatin:7").
+
+       * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Add tracing message.
+       * src/cff/cffdrivr.c (cff_glyph_load): Ditto.
+       * src/cff/cffgload.c (cff_decoder_prepare): Improve tracing
+       messages.
+       * src/cid/cidgload.c (cid_load_glyph): Use level 1 for tracing
+       message.
+       * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
+       * src/pfr/pfrobjs.c (pfr_slot_load): Add tracing message.
+       * src/truetype/ttgload.c (TT_Load_Glyph): Ditto.
+       * src/type1/t1gload.c (T1_Load_Glyph): Ditto.
+       * src/type42/t42objs.c (T42_GlyphSlot_Load): Ditto.
+       * src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto.
+
+2013-08-26  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Fix script selection.
+
+       * src/autofit/afglobal.c (af_face_globals_get_metrics): Use
+       `AF_SCRIPT_DFLT', not value 0.
+       Simplify code.
+
+       * src/autofit/afscript.h: Sort by script name.
+
+2013-08-26  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Make `dummy' hinter work as expected.
+
+       * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling
+       information.
+       (af_dummy_hints_apply): Scale the glyphs.
+
+2013-08-25  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Make `cjk' module use blue stringsets.
+
+       * src/autofit/afcjk.c (AF_CJK_MAX_TEST_CHARACTERS): Removed.
+       (af_cjk_hani_blue_chars): Removed.
+       (AF_CJK_BLUE_TYPE_*): Removed.
+       (af_cjk_metrics_init_blues): Replace AF_CJK_MAX_TEST_CHARACTERS with
+       AF_BLUE_STRING_MAX_LEN.
+       Change loops to use offsets (in file `afblue.h') into the new arrays
+       `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
+       Instead of three dimensions (as used in the old blue string array)
+       we now use properties to do the same, saving one loop nesting level.
+
+       * src/autofit/afcjk.h: Remove old enumeration values superseded by
+       the new data in `afblue.h'.
+       (AF_CJK_IS_TOP_BLUE, AF_CJK_IS_HORIZ_BLUE, AF_CJK_IS_FILLED_BLUE,
+       AF_CJK_IS_RIGHT_BLUE): New macros, to be used in
+       `af_cjk_metrics_init_blues'.
+       (AF_CJK_BLUE_IS_RIGHT): Remove this now redundant enum value.
+       (AF_CJK_BLUE_IS_TOP): Renamed to...
+       (AF_CJK_BLUE_TOP): This.
+       (AF_CJK_MAX_BLUES): Remove.
+       (AF_CJKAxisRec): Updated.
+
+2013-08-25  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Typo.
+
+       * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use
+       cast.
+
+2013-08-25  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Synchronize `cjk' with `latin' module (and vice versa).
+
+       * src/autofit/afcjk.c (af_cjk_metrics_init_widths): Add tracing
+       messages.
+       (af_cjk_metrics_init_blues): Don't pass blue string array as
+       argument but use the global array directly.
+       Use `outline' directly.
+       Update and add tracing messages.
+       (af_cjk_metrics_init): Simplify code.
+       (af_cjk_metrics_scale_dim): Improve tracing message.
+       (af_cjk_metrics_scale): Synchronize.
+
+       * src/autofit/aflatin.c (af_latin_metrics_init_widths,
+       af_latin_metrics_init_blues): Improve and add tracing messages.
+
+2013-08-25  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Make `latin' module use blue stringsets.
+
+       * src/autofit/aflatin.c (AF_LATIN_MAX_TEST_CHARACTERS): Removed.
+       (af_latin_blue_chars): Removed.
+       (af_latin_metrics_init_blues): Replace AF_LATIN_MAX_TEST_CHARACTERS
+       with AF_BLUE_STRING_MAX_LEN.
+       Change loops to use offsets (in file `afblue.h') into the new arrays
+       `af_blue_stringsets' and `af_blue_strings' (in file `afblue.c').
+       Use `AF_LATIN_IS_SMALL_TOP_BLUE' macro.
+
+       * src/autofit/aflatin.h: Remove old enumeration values superseded by
+       the new data in `afblue.h'.
+       (AF_LATIN_IS_TOP_BLUE): Updated definition.
+       (AF_LATIN_IS_SMALL_TOP_BLUE): New macro.
+       (AF_LATIN_MAX_BLUES): Remove.
+       (AF_LatinAxisRec): Updated.
+
+2013-08-25  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Add blue stringsets.
+
+       * src/autofit/aftypes.h: Include `afblue.h'.
+       (AF_ScriptClassRec): Add `blue_stringset' field.
+       (AF_DEFINE_SCRIPT_CLASS): Updated.
+
+       * src/autofit/autofit.c: Include `afblue.c'.
+
+       * src/autofit/afcjk.c (af_hani_script_class), src/autofit/afdummy.c
+       (af_dflt_script_class), src/autofit/afindic.c
+       (af_deva_script_class), src/autofit/aflatin.c
+       (af_latn_script_class), src/autofit/aflatin2.c
+       (af_ltn2_script_class): Updated.
+
+       * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'.
+
+2013-08-25  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Introduce data file for blue strings.
+
+       The idea is to have a central file which gets processed by a Perl
+       script to create proper `.c' and `.h' files using templates.  There
+       are two other reasons to do that:
+
+         . The data file should be easily readable.  We use UTF-8 encoding
+           which then gets converted to single bytes.
+
+         . Since the number of supported scripts will increase soon, the
+           current usage of blue string arrays is a waste of space.  Using
+           the Perl script it is possible to imitate jagged arrays,
+           defining enumeration constants as offsets into the arrays.
+
+       This commit only adds files without changing any functionality.
+
+       * src/autofit/afblue.dat: New data file.
+       * src/tools/afblue.pl: New Perl script for processing `afblue.dat'.
+
+       * src/autofit/afblue.cin, src/autofit/afblue.hin: New template files
+       for...
+       * src/autofit/afblue.c, src/autofit/afblue.c: New source files.
+       To avoid a dependency on Perl, we add them too.
+
+2013-08-19  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       [base] Enable new algorithm for `BBox_Cubic_Check'.
+
+       * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove
+       the old one.
+       Improve comments.
+
+2013-08-18  Werner Lemberg  <wl@gnu.org>
+
+       * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit.
+
+2013-08-18  Werner Lemberg  <wl@gnu.org>
+
+       Fix Savannah bug #39804.
+
+       * builds/unix/configure.raw (LIBPNG): Define and export.
+       * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle
+       libpng.
+
+2013-08-17  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       [base] Clean up BBox_Conic_Check.
+
+       * src/base/ftbbox.c (BBox_Conic_Check): Remove redundant checks for
+       extremum at the segment ends, which are already within the bbox.
+       Slightly modify calculations.
+
+2013-08-15  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       [base] Finish experimental (disabled) BBox_Cubic_Check implementation.
+
+       * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve
+       accuracy and avoid overflows.
+
+2013-08-13  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       [base] Refactor experimental (disabled) BBox_Cubic_Check.
+
+       * src/base/ftbbox.c (BBox_Cubic_Check): Implement the minimum search
+       as the mirror image of the maximum search implemented here...
+       (update_max): New function.
+
+2013-08-06  John Tytgat  <John.Tytgat@esko.com>
+
+       Fix Savannah bug #39702.
+
+       * src/cff/cffload.c (cff_index_get_pointers): Check for `cur_offset
+       != 0'; this stronger test is mandated by the CFF specification.
+       Fix test for INDEX structures which have one or more empty entries
+       at the end.
+
+2013-08-05  Werner Lemberg  <wl@gnu.org>
+
+       Fix gcc pragmas, part 2.
+
+       * src/truetype/ttinterp.c (TT_MulFix14_long_long,
+       TT_DotFix14_long_long): `#pragma gcc diagnostic {push,pop}' has been
+       introduced with gcc version 4.6.
+
+2013-08-05  Werner Lemberg  <wl@gnu.org>
+
+       Fix gcc pragmas.
+
+       * src/truetype/ttinterp.c (TT_MulFix14_long_long,
+       TT_DotFix14_long_long): Older gcc versions don't accept diagnostic
+       pragmas within a function body.
+
+2013-08-05  Werner Lemberg  <wl@gnu.org>
+
+       Fix Savannah bug #39700.
+
+       * builds/unix/ftconfig.h: Synchronize with
+       `include/freetype/config/ftconfig.h'.
+
+       * builds/vms/ftconfig.h: Ditto.
+       Make the differences to the master `ftconfig.h' file as small as
+       possible for easier maintainance.
+
+2013-08-05  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Improve handling of `near' points.
+
+       Points which are very near to each other are now marked as such.
+       The `weak' flag is then computed by using the `in' vector of the
+       first and the `out' vector of the last point of a group of near
+       points.
+
+       For example, this fixes the rendering of glyph `Oslash' in
+       `Roboto-Thin.ttf'.
+
+       * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'.
+
+       * src/autofit/afhints.c (af_glyph_hints_reload): Introduce
+       the heuristic value `near_limit' to decide whether the current point
+       is near to the previous one, then set `AF_FLAG_NEAR' accordingly.
+       Store good `in' vector (of last non-near point) in
+       `last_good_in_{x,y}' and use it as an argument to
+       `ft_corner_is_flat' if necessary.
+
+2013-08-02  Werner Lemberg  <wl@gnu.org>
+
+       * include/freetype/ftcffdrv.h: Improve documentation.
+       This is based on blog entries from David Lemon and Dave Arnold (both
+       from Adobe) with kind permission.  Dave also helped in
+       proof-reading.
+
+2013-08-02  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Move declaration of scripts into separate file.
+
+       This has the benefit that we don't need to duplicate the data at
+       different places.
+
+       * src/autofit/afscript.h: New file.
+
+       * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define
+       the enumeration values.
+
+       * src/autofit/afglobal.c: Include `afscript.h' to get the script
+       specific header files.
+       (af_script_classes): Include `afscript.h' to fill this array.
+
+       * src/autofit/afpic.c: Include `afscript.h' to get the script
+       specific header files.
+       (autofit_module_class_pic_init): Include `afscript.h' for
+       initialization.
+       * src/autofit/afpic.h (AF_SCRIPT_CLASSES_COUNT,
+       AF_SCRIPT_CLASSES_REC_COUNT): Removed.  Use `AF_SCRIPT_MAX' instead.
+
+       * src/autofit/rules.mk (AUTOF_DRV_H): Updated.
+
+2013-08-02  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Move declaration of writing systems into separate file.
+
+       This has the benefit that we don't need to duplicate the data at
+       different places.
+
+       * src/autofit/afwrtsys.h: New file.
+
+       * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to
+       define the enumeration values.
+
+       * src/autofit/afglobal.c: Include `afwrtsys.h' to get the writing
+       system specific header files.
+       Include `afpic.h'.
+       (af_writing_system_classes): Include `afwrtsys.h' to fill this
+       array.
+
+       * src/autofit/afpic.c: Include `afwrtsys.h' to get the writing
+       system specific header files.
+       (autofit_module_class_pic_init): Include `afwrtsys.h' for
+       initialization.
+       * src/autofit/afpic.h (AF_WRITING_SYSTEM_CLASSES_COUNT,
+       AF_WRITING_SYSTEM_CLASSES_REC_COUNT): Removed.  Use
+       `AF_WRITING_SYSTEM_MAX' instead.
+
+2013-08-02  Werner Lemberg  <wl@gnu.org>
+
+       [sfnt] Fix compilation with g++.
+
+       * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use
+       cast.
+       (Load_SBit_Png): Pacify compiler.
+
+2013-08-02  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+            Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Fix `make multi'.
+
+       * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY,
+       FT_LOCAL_ARRAY_DEF): New macros.
+
+       * src/autofit/afglobal.c (af_writing_system_classes,
+       af_script_classes): Use FT_LOCAL_ARRAY_DEF.
+       * src/autofit/afglobal.h: Declare `af_writing_system_classes' and
+       `af_script_classes'.
+       * src/autofit/afloader.c: Include `afpic.h'.
+
+2013-08-01  Werner Lemberg  <wl@gnu.org>
+
+       Another round of cppcheck nitpicks.
+
+       The call was (from the top-level of the FreeType tree):
+
+         cppcheck --force \
+                  --enable=all \
+                  -I /usr/include \
+                  -I /usr/local/include \
+                  -I /usr/lib/gcc/i586-suse-linux/4.7/include \
+                  -I include \
+                  -I include/freetype \
+                  -I include/freetype/config \
+                  -I include/freetype/internal \
+                  -DFT2_BUILD_LIBRARY \
+                  . &> cppcheck.log
+
+       using cppcheck git commit f7e93f99.
+
+       Note that cppcheck still can't handle `#include FOO' (with `FOO' a
+       macro).
+
+       */* Improve variable scopes.
+       */* Remove redundant initializations which get overwritten.
+
+       * src/gxvalid/*: Comment out redundant code or guard it with
+       FT_DEBUG_LEVEL_TRACE.
+
+2013-07-30  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Introduce `writing systems'.
+
+       This patch adds a new top level to the auto-hinter's script class
+       hierarchy.  It defines `writing systems' which can contain multiple
+       scripts.
+
+       For example, the `latin' writing system (in file `aflatin.c') is
+       able to support scripts like Latin, Cyrillic, Armenian, etc., which
+       can be handled similarly.
+
+       Scripts are now named using four-letter OpenType tags.
+
+       * src/autofit/aftypes.h (AF_ScriptClassRec): Move relevant members
+       to...
+       (AF_WritingSystemClassRec): This new structure.  It holds pointers
+       to functions which can be shared among related scripts.
+       (AF_WritingSystem): New enumeration.
+       (AF_Script): Revised values using four-letter tags.
+       (AF_DEFINE_WRITING_SYSTEM_CLASS): New macro.
+       (AF_DEFINE_SCRIPT_CLASS): Updated.
+
+       * src/autofit/afglobal.c (af_writing_system_classes): New global,
+       constant array.
+       (af_script_classes): Updated.
+       (af_face_globals_free): Updated.
+       Remove assertion.
+       (af_face_globals_get_metrics): Updated.
+
+       * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK)
+       [!AF_CONFIG_OPTION_CJK]: Handle this case.
+
+       * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph):
+       Updated.
+
+       * src/autofit/afpic.c (autofit_module_class_pic_init): Updated;
+       initialize structures for both writing systems and scripts.
+       * src/autofit/afpic.h: Updated.
+       (AF_WRITING_SYSTEM_CLASSES_GET): New macro.
+
+       * src/autofit/afcjk.c (af_cjk_writing_system_class): New writing
+       system.
+       (af_cjk_uniranges): Renamed to...
+       (af_hani_uniranges): This.
+       (af_cjk_script_class): Reduced and renamed to...
+       (af_hani_script_class): This.
+       * src/autofit/afcjk.h: Updated.
+
+       * src/autofit/afdummy.c (af_dummy_writing_system_class): New writing
+       system.
+       (af_dummy_script_class): Reduced and renamed to...
+       (af_dflt_script_class): This.
+       * src/autofit/afdummy.h: Updated.
+
+       * src/autofit/afindic.c (af_indic_writing_system_class): New writing
+       system.
+       (af_indic_uniranges): Renamed to...
+       (af_deva_uniranges): This.
+       (af_indic_script_class): Reduced and renamed to...
+       (af_deva_script_class): This.
+       * src/autofit/afcjk.h: Updated.
+
+       * src/autofit/aflatin.c (af_latin_writing_system_class): New writing
+       system.
+       (af_latin_uniranges): Renamed to...
+       (af_latn_uniranges): This.
+       (af_latin_script_class): Reduced and renamed to...
+       (af_latn_script_class): This.
+       * src/autofit/aflatin.h: Updated.
+
+       * src/autofit/aflatin2.c (af_latin2_writing_system_class): New
+       writing system.
+       (af_latin2_uniranges): Renamed to...
+       (af_ltn2_uniranges): This.
+       Synchronize ranges with `latin'.
+       (af_latin2_script_class): Reduced and renamed to...
+       (af_ltn2_script_class): This.
+       * src/autofit/aflatin2.h: Updated.
+
+2013-07-30  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Variable renaming.
+
+       * src/autofit/aftypes.h (AF_ScriptMetricsRec):
+       s/clazz/script_class/.
+       Update all users.
+
+2013-07-30  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+       Ignore libpng-config under cross-building configuration,
+       because it will return the flags for the hosting environment.
+
+       * builds/unix/configure.raw: Ignore libpng-config when
+       `cross_compiling' == yes.
+
+2013-07-30  Behdad Esfahbod  <behdad@google.com>
+
+       Prevent division by zero by a transparent color.
+
+       * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra):
+       Return 0 immediately, when alpha channel is zero.
+
+2013-07-25  Behdad Esfahbod  <behdad@google.com>
+
+       Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR.
+
+       Also disambiguate Google's color bitmap tables.
+
+       * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR):
+       New macros.
+
+       * include/freetype/internal/tttypes.h (TT_SbitTableType): Add
+       TT_SBIT_TABLE_TYPE_CBLC.
+
+       * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR.
+
+       * src/sfnt/ttsbit.c (tt_face_load_sbit,
+       tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle
+       TT_SBIT_TABLE_TYPE_CBLC.
+
+2013-07-24  suzuki toshiya  <mpsuzuki@hiroshima-u.ac.jp>
+
+       [sfnt] Fix for `make multi' target.
+
+       * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF().
+
+2013-07-20  Werner Lemberg  <wl@gnu.org>
+
+       * docs/INSTALL.GNU: Updated.
+
+2013-07-20  Behdad Esfahbod  <behdad@google.com>
+
+       [sfnt] Fix `sbix' table version handling.
+
+       * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]:
+       USHORT version numbers are to be considered as `minor'.
+
+2013-07-19  Werner Lemberg  <wl@gnu.org>
+
+       [autofit] Fix segment classification for blue zones.
+
+       The old code (essentially unchanged since the very beginning)
+       incorrectly handled this configuration
+
+                      x -o- x
+                       /   \
+                      /     \
+                     /       \
+                    o         o
+
+       as flat and this
+
+                       o               o
+                      /               /
+                    x|              x|
+                     |               |
+                     o---------------o
+
+       as round.  (`o' and `x' are on and off points, respectively).
+
+       This is a major change which should improve the rendering results
+       enormously for many TrueType fonts, especially in the range approx.
+       20-40ppem, fixing the appearance of many overshoots.
+
+       * src/autofit/aflatin.c (af_latin_metrics_init_blues): Look at the
+       first and last points of the segment, not the points right before
+       and after.
+
+2013-07-19  Behdad Esfahbod  <behdad@google.com>
+
+       [sfnt] `sbix' fix-ups.
+
+       * src/sfnt/sfobjs.c (sfnt_load_face): Apple's `sbix' color bitmaps
+       are rendered scaled and then the `glyf' outline rendered on top.  We
+       don't support that yet, so just ignore the `glyf' outline and
+       advertise it as a bitmap-only font.
+
+       * src/sfnt/ttsbit.c (tt_face_load_strike_metrics)
+       [TT_SBIT_TABLE_TYPE_SBIX]: Return metrics in 26.6 units.
+       (tt_face_load_sbix_image): Typo.
+
+2013-07-18  Behdad Esfahbod  <behdad@google.com>
+
+       [sfnt] Add support for Apple's `sbix' color bitmap table.
+
+       * include/freetype/internal/tttypes.h (TT_SBit_MetricsRec): Widen
+       fields to FT_Short and FT_UShort, respectively.
+       (TT_SBitTableType): New enumeration.
+       (TT_FaceRec): Add `sbit_table_type' field.
+
+       * include/freetype/tttags.h (TTAG_sbix): New macro.
+
+       * src/sfnt/pngshim.c (Load_SBit_Png): Pass a more generic
+       FT_GlyphSlot argument instead FT_Bitmap.
+       Add flag to control map and metrics handling.
+       Update all users.
+
+       * src/sfnt/ttsbit.c: Include `ttmtx.h'.
+       (tt_face_load_eblc): Renamed to...
+       (tt_face_load_sbit): This.
+       Handlic `sbix' bitmaps.
+       (tt_face_free_eblc): Renamed to...
+       (tt_face_load_sbit): This.
+       Updated.
+       (tt_face_load_strike_metrics): Handle `sbix' bitmaps.
+       (tt_face_load_sbix_image): New function.
+       (tt_sbit_decoder_alloc_bitmap, tt_sbit_decoder_load_image,
+       tt_sbit_decoder_load_byte_aligned, tt_sbit_decoder_load_bit_aligned,
+       tt_sbit_decoder_load_compound, tt_sbit_decoder_load_png,
+       tt_sbit_decoder_load_image, tt_sbit_decoder_load_bitmap): Don't pass
+       and handle load flags.
+       (tt_sbit_decoder_load_bitmap) [!FT_CONFIG_OPTION_USE_PNG]: Better
+       handle formats 17-19.
+       Move color to grayscale conversion to...
+       (tt_face_load_sbit_image): Here.
+       Handle `sbix' bitmaps.
+
+       * src/sfnt/pngshim.h: Updated.
+       * src/sfnt/ttsbit.h: Updated.
+       * src/sfnt/sfdriver.c: Updated.
+
+2013-07-18  Werner Lemberg  <wl@gnu.org>
+
+       [sfnt] Ignore invalid magic number in `head' or `bhed'.
+
+       Other font engines seem to ignore it also.  Problem reported by
+       Hin-Tak Leung <htl10@users.sourceforge.net>.
+
+       * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if
+       we have an invalid magic number.
+
+2013-07-16  Werner Lemberg  <wl@gnu.org>
+
+       [smooth] Fix segfault caused by previous commit.
+
+       * src/smooth/ftgrays.c (gray_set_cell): Always compute
+       `ras.invalid'.
+
+2013-07-16  David Turner  <digit@google.com>
+
+       [smooth] Improve performance.
+
+       Provide a work-around for an ARM-specific performance bug in GCC.
+       This speeds up the rasterizer by more than 5%.
+
+       Also slightly optimize `set_gray_cell' and `gray_record_cell' (which
+       also improves performance on other platforms by a tiny bit (<1%).
+
+       * src/smooth/ftgrays.c (FT_DIV_MOD): New macro.
+       Use it where appropriate.
+
+       (gray_record_cell, gray_set_cell, gray_move_to,
+       gray_convert_glyph_inner): Streamline condition handling.
+
+2013-07-16  David Turner  <digit@google.com>
+
+       [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14.
+
+       This patch provides slightly optimized versions for ARM, x86, and
+       x86_64 CPUs if built with GCC.
+
+       Also remove some dead code.
+
+       * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long,
+       TT_DotFix14_long_long): New functions.
+
+2013-07-16  David Turner  <digit@google.com>
+
+       Optimize FT_MulFix for x86_64 GCC builds.
+
+       This patch provides an optimized `FT_MulFix' implementation for
+       x86_64 machines when FreeType is built with GCC, or compatible
+       compilers like Clang.
+
+       Example:
+         bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf
+
+       Before:
+
+         Load                       4.863 us/op
+         Load_Advances (Normal)     4.816 us/op
+         Load_Advances (Fast)       0.028 us/op
+         Render                     2.753 us/op
+         Get_Glyph                  0.463 us/op
+         Get_CBox                   0.077 us/op
+         Get_Char_Index             0.023 us/op
+         Iterate CMap              13.898 us/op
+         New_Face                  12.368 us/op
+         Embolden                   0.028 us/op
+         Get_BBox                   0.302 us/op
+
+       After:
+
+         Load                       4.617 us/op
+         Load_Advances (Normal)     4.645 us/op
+         Load_Advances (Fast)       0.027 us/op
+         Render                     2.789 us/op
+         Get_Glyph                  0.460 us/op
+         Get_CBox                   0.077 us/op
+         Get_Char_Index             0.024 us/op
+         Iterate CMap              13.403 us/op
+         New_Face                  12.278 us/op
+         Embolden                   0.028 us/op
+         Get_BBox                   0.301 us/op
+
+       * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
+       (FT_MulFix_x86_64): New function.
+
+2013-07-16  David Turner  <digit@google.com>
+
+       Speed up ARMv7 support.
+
+       When building for ARMv7 with thumb2 instructions, the optimized
+       `FT_MulFix_arm' assembly routine was not being used.
+
+       The reason for this is in the `ftconfig.h' header, namely:
+
+       - The assembly routine uses the `smull' instruction which is not
+         available when generating Thumb-1 machine code.  It is available
+         in Thumb-2 mode, though.
+
+       - The header was written a long time ago before Thumb-2 became
+         widely popular (e.g. with Android).  So it simply doesn't use the
+         assembly routine if the `__thumb__' built-in macro is defined.
+
+       - When compiling in Thumb-2 mode, the compiler will define both
+         `__thumb__' and `__thumb2__'.
+
+       By checking for `(__thumb2__ || !__thumb__)', we ensure that the
+       assembly routine is only avoided when generating Thumb-1 code.
+
+       Given that this is performance-sensitive function, this improves
+       `ftbench' as follows on a Galaxy Nexus:
+
+                                  Before (us/op)   After (us/op)
+
+         - loading Arial.ttf glyphs at 14 ppem [1]
+
+             Load                   34.285          33.098
+
+         - same operation with the light auto-hinter [2]
+
+             Load                   31.317          29.590
+
+         - same operation without hinting [3]
+
+             Load                    6.143           5.376
+
+         - loading Arial.ttf advances at 14 ppem [4]
+
+             Load_Advances (normal) 34.216          33.016
+             Load_Advances (fast)    0.176           0.176
+
+         [1] ftbench -t 5 -p -s 14 -b a -f 0008 Arial.ttf
+         [2] ftbench -t 5 -p -s 14 -b a -r 1 -f 0028 Arial.ttf
+         [3] ftbench -t 5 -p -s 14 -b a -f 000a Arial.ttf
+         [4] ftbench -t 5 -p -s 14 -b b -f 0008 Arial.ttf
+
+       * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h
+       (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7.
+
+2013-06-28  Werner Lemberg  <wl@gnu.org>
+
+       * docs/CHANGES: Updated.
+
+2013-06-27  Werner Lemberg  <wl@gnu.org>
+
+       * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard.
+
+2013-06-25  Werner Lemberg  <wl@gnu.org>
+
+       [cff] Add darkening limit to `darkening-parameters'.
+
+       * src/cff/cffdrivr.c (cff_property_set): Add check.
+
+2013-06-25  Werner Lemberg  <wl@gnu.org>
+
+       [cff] Add `darkening-parameters' property.
+
+       * include/freetype/ftcffdrv.h: Document it.
+
+       * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle
+       `darkening-parameters' property.
+
+       * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array.
+
+       * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams'
+       argument and use it.
+       Update all callers.
+
+       * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy
+       `darken_params' values.
+
+       * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array.
+
+       * src/cff/cffobjs.c (cff_driver_init): Set default values for
+       `darken_params'.
+
+2013-06-25  Werner Lemberg  <wl@gnu.org>
+
+       [docmaker] Code shuffling.
+
+       * src/tools/docmaker/tohtml.py (re_url): Move regexp...
+       * src/tools/docmaker/sources.py: ... to this file.
+
+2013-06-25  Werner Lemberg  <wl@gnu.org>
+
+       [docmaker] Remove unused functions.
+
+       * src/tools/docmaker/content.py (DocMarkup.get_start,
+       DocBlock.get_markup_name): Removed.
+       * src/tools/docmaker/tohtml.py (html_quote0, dump_html_code,
+       HtmlFormatter.make_html_words): Removed.
+
+2013-06-25  Werner Lemberg  <wl@gnu.org>
+
+       * builds/freetype.mk (dll): Remove target.
+
+       Problem reported by Jörg Günnewig <joerg.guennewig@googlemail.com>.
+
+2013-06-25  Werner Lemberg  <wl@gnu.org>
+
+       [docmaker] Recognise URLs.
+
+       * src/tools/docmaker/tohtml.py (re_url): New regular expression.
+       (make_html_para): Use it.
+
 2013-06-19  Werner Lemberg  <wl@gnu.org>
 
        * Version 2.5.0.1 released.
        */* Improve variable scopes.
        */* Remove redundant initializations which get overwritten.
 
-       * src/base/ftmac.c ,builds/mac/ftmac.c (count_faces_scalable):
+       * src/base/ftmac.cbuilds/mac/ftmac.c (count_faces_scalable):
        Remove unused variable.
 
        * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero.
        [sfnt] Clean up bitmap code.
 
        * src/sfnt/ttsbit.c: Deleted.
-       * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'. 
+       * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'.
        * rules.mk (SFNT_DRV_H): Updated.
 
 2013-05-10  Werner Lemberg  <wl@gnu.org>
index 798715a..c660cd1 100644 (file)
@@ -1,4 +1,4 @@
-  FreeType 2.5.0
+  FreeType 2.5.2
   ==============
 
   Homepage: http://www.freetype.org
@@ -24,9 +24,9 @@
 
   and download one of the following files.
 
-    freetype-doc-2.5.0.tar.bz2
-    freetype-doc-2.5.0.tar.gz
-    ftdoc250.zip
+    freetype-doc-2.5.2.tar.bz2
+    freetype-doc-2.5.2.tar.gz
+    ftdoc252.zip
 
   To view the documentation online, go to
 
index 0eaba39..cc0e661 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# Copyright 2005, 2006, 2007, 2008, 2009, 2010 by
+# Copyright 2005-2010, 2013 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -139,7 +139,7 @@ check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4
 check_tool_version $AUTOCONF   autoconf   AUTOCONF   2.62
 
 # This sets freetype_major, freetype_minor, and freetype_patch.
-eval `sed -nf version.sed include/freetype/freetype.h`
+eval `sed -nf version.sed include/freetype.h`
 
 # We set freetype-patch to an empty value if it is zero.
 if test "$freetype_patch" = ".0"; then
diff --git a/reactos/lib/3rdparty/freetype/devel/ft2build.h b/reactos/lib/3rdparty/freetype/devel/ft2build.h
new file mode 100644 (file)
index 0000000..6cc34b7
--- /dev/null
@@ -0,0 +1,40 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ft2build.h                                                             */
+/*                                                                         */
+/*    FreeType 2 build and setup macros (development version).             */
+/*                                                                         */
+/*  Copyright 1996-2001, 2003, 2006, 2013 by                               */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.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.
+  *
+  *  To use it, simply ensure that the directory containing this file is
+  *  scanned by the compiler before the default FreeType header directory.
+  *
+  */
+
+#ifndef __FT2BUILD_H__
+#define __FT2BUILD_H__
+
+#define FT_CONFIG_OPTIONS_H  <ftoption.h>
+
+#include <config/ftheader.h>
+
+#endif /* __FT2BUILD_H__ */
+
+
+/* END */
diff --git a/reactos/lib/3rdparty/freetype/devel/ftoption.h b/reactos/lib/3rdparty/freetype/devel/ftoption.h
new file mode 100644 (file)
index 0000000..27d1bd9
--- /dev/null
@@ -0,0 +1,833 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftoption.h (for development)                                           */
+/*                                                                         */
+/*    User-selectable configuration macros (specification only).           */
+/*                                                                         */
+/*  Copyright 1996-2013 by                                                 */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.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__
+#define __FTOPTION_H__
+
+
+#include <ft2build.h>
+
+
+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/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 <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 <config/ftmodule.h>.                         */
+  /*                                                                       */
+  /*  We highly recommend using the third method whenever possible.        */
+  /*                                                                       */
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /****                                                                 ****/
+  /**** G E N E R A L   F R E E T Y P E   2   C O N F I G U R A T I O N ****/
+  /****                                                                 ****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Uncomment the line below if you want to activate sub-pixel rendering  */
+  /* (a.k.a. LCD rendering, or ClearType) in this build of the library.    */
+  /*                                                                       */
+  /* Note that this feature is covered by several Microsoft patents        */
+  /* and should not be activated in any default build of the library.      */
+  /*                                                                       */
+  /* This macro has no impact on the FreeType API, only on its             */
+  /* _implementation_.  For example, using FT_RENDER_MODE_LCD when calling */
+  /* FT_Render_Glyph still generates a bitmap that is 3 times wider than   */
+  /* the original size in case this macro isn't defined; however, each     */
+  /* triplet of subpixels has R=G=B.                                       */
+  /*                                                                       */
+  /* This is done to allow FreeType clients to run unmodified, forcing     */
+  /* them to display normal gray-level anti-aliased glyphs.                */
+  /*                                                                       */
+#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.                    */
+  /*                                                                       */
+#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.               */
+/* #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'.      */
+  /*                                                                       */
+#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'.             */
+  /*                                                                       */
+#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.                       */
+  /*                                                                       */
+#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.                                 */
+  /*                                                                       */
+/* #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'.             */
+  /*                                                                       */
+#define FT_CONFIG_OPTION_USE_BZIP2
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*  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'.             */
+  /*                                                                       */
+#define FT_CONFIG_OPTION_USE_PNG
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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 */
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* DLL export compilation                                                */
+  /*                                                                       */
+  /*   When compiling FreeType as a DLL, some systems/compilers need a     */
+  /*   special keyword 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.            */
+  /*                                                                       */
+  /*     FT_EXPORT( return_type )                                          */
+  /*                                                                       */
+  /*       is used in a function declaration, as in                        */
+  /*                                                                       */
+  /*         FT_EXPORT( FT_Error )                                         */
+  /*         FT_Init_FreeType( FT_Library*  alibrary );                    */
+  /*                                                                       */
+  /*                                                                       */
+  /*     FT_EXPORT_DEF( return_type )                                      */
+  /*                                                                       */
+  /*       is used in a function definition, as in                         */
+  /*                                                                       */
+  /*         FT_EXPORT_DEF( FT_Error )                                     */
+  /*         FT_Init_FreeType( FT_Library*  alibrary )                     */
+  /*         {                                                             */
+  /*           ... some code ...                                           */
+  /*           return FT_Err_Ok;                                           */
+  /*         }                                                             */
+  /*                                                                       */
+  /*   You can provide your own implementation of FT_EXPORT and            */
+  /*   FT_EXPORT_DEF here if you want.  If you leave them undefined, they  */
+  /*   will be later automatically defined as `extern return_type' to      */
+  /*   allow normal compilation.                                           */
+  /*                                                                       */
+  /*   Do not #undef these macros here since the build system might define */
+  /*   them for certain configurations only.                               */
+  /*                                                                       */
+/* #define FT_EXPORT(x)      extern x */
+/* #define FT_EXPORT_DEF(x)  x */
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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.                                                     */
+  /*                                                                       */
+  /*   - 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.                                                              */
+  /*                                                                       */
+#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.                        */
+  /*                                                                       */
+#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.                              */
+  /*                                                                       */
+#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.           */
+  /*                                                                       */
+#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.                                                */
+  /*                                                                       */
+  /* This must be greater than 4KByte if you use FreeType to rasterize     */
+  /* glyphs; otherwise, you may set it to zero to avoid unnecessary        */
+  /* allocation of the render pool.                                        */
+  /*                                                                       */
+#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.                        */
+  /*                                                                       */
+#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.                               */
+  /*                                                                       */
+#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                                         */
+  /*                                                                       */
+  /*   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.                                 */
+  /*                                                                       */
+#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.   */
+  /*                                                                       */
+#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.                                               */
+  /*                                                                       */
+/* #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       ****/
+  /****                                                                 ****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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_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
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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
+#define TT_CONFIG_CMAP_FORMAT_6
+#define TT_CONFIG_CMAP_FORMAT_8
+#define TT_CONFIG_CMAP_FORMAT_10
+#define TT_CONFIG_CMAP_FORMAT_12
+#define TT_CONFIG_CMAP_FORMAT_13
+#define TT_CONFIG_CMAP_FORMAT_14
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /****                                                                 ****/
+  /****    T R U E T Y P E   D R I V E R    C O N F I G U R A T I O N   ****/
+  /****                                                                 ****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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       */
+  /* EXPERIMENTAL subpixel hinting support into the TrueType driver.  This */
+  /* replaces the native TrueType hinting mechanism when anything but      */
+  /* FT_RENDER_MODE_MONO is requested.                                     */
+  /*                                                                       */
+  /* Enabling this causes the TrueType driver to ignore instructions under */
+  /* certain conditions.  This is done in accordance with the guide here,  */
+  /* with some minor differences:                                          */
+  /*                                                                       */
+  /*  http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
+  /*                                                                       */
+  /* By undefining this, you only compile the code necessary to hint       */
+  /* TrueType glyphs with native TT hinting.                               */
+  /*                                                                       */
+  /*   This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be    */
+  /*   defined.                                                            */
+  /*                                                                       */
+#define TT_CONFIG_OPTION_SUBPIXEL_HINTING
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version  */
+  /* of the TrueType bytecode interpreter is used that doesn't implement   */
+  /* any of the patented opcodes and algorithms.  The patents related to   */
+  /* TrueType hinting have expired worldwide since May 2010; this option   */
+  /* is now deprecated.                                                    */
+  /*                                                                       */
+  /* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored*  */
+  /* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words,  */
+  /* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or                */
+  /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time.    */
+  /*                                                                       */
+  /* This macro is only useful for a small number of font files (mostly    */
+  /* for Asian scripts) that require bytecode interpretation to properly   */
+  /* load glyphs.  For all other fonts, this produces unpleasant results,  */
+  /* thus the unpatented interpreter is never used to load glyphs from     */
+  /* TrueType fonts unless one of the following two options is used.       */
+  /*                                                                       */
+  /*   - The unpatented interpreter is explicitly activated by the user    */
+  /*     through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag         */
+  /*     when opening the FT_Face.                                         */
+  /*                                                                       */
+  /*   - FreeType detects that the FT_Face corresponds to one of the       */
+  /*     `trick' fonts (e.g., `Mingliu') it knows about.  The font engine  */
+  /*     contains a hard-coded list of font names and other matching       */
+  /*     parameters (see function `tt_face_init' in file                   */
+  /*     `src/truetype/ttobjs.c').                                         */
+  /*                                                                       */
+  /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */
+  /*                                                                       */
+  /*   {                                                                   */
+  /*     FT_Parameter  parameter;                                          */
+  /*     FT_Open_Args  open_args;                                          */
+  /*                                                                       */
+  /*                                                                       */
+  /*     parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING;                  */
+  /*                                                                       */
+  /*     open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;         */
+  /*     open_args.pathname   = my_font_pathname;                          */
+  /*     open_args.num_params = 1;                                         */
+  /*     open_args.params     = &parameter;                                */
+  /*                                                                       */
+  /*     error = FT_Open_Face( library, &open_args, index, &face );        */
+  /*     ...                                                               */
+  /*   }                                                                   */
+  /*                                                                       */
+/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType    */
+  /* bytecode interpreter with a huge switch statement, rather than a call */
+  /* table.  This results in smaller and faster code for a number of       */
+  /* architectures.                                                        */
+  /*                                                                       */
+  /* Note however that on some compiler/processor combinations, undefining */
+  /* this macro will generate faster, though larger, code.                 */
+  /*                                                                       */
+#define TT_CONFIG_OPTION_INTERPRETER_SWITCH
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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.                                             */
+  /*                                                                       */
+  /*   http://www.microsoft.com/typography/otspec/glyf.htm                 */
+  /*   http://fonts.apple.com/TTRefMan/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
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /****                                                                 ****/
+  /****      T Y P E 1   D R I V E R    C O N F I G U R A T I O N       ****/
+  /****                                                                 ****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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.                                           */
+  /*                                                                       */
+#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. */
+  /*                                                                       */
+#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.                                  */
+  /*                                                                       */
+#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.                                                               */
+  /*                                                                       */
+#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /****                                                                 ****/
+  /****         C F F   D R I V E R    C O N F I G U R A T I O N        ****/
+  /****                                                                 ****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* 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
+
+
+  /*************************************************************************/
+  /*************************************************************************/
+  /****                                                                 ****/
+  /****    A U T O F I T   M O D U L E    C O N F I G U R A T I O N     ****/
+  /****                                                                 ****/
+  /*************************************************************************/
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Compile autofit module with CJK (Chinese, Japanese, Korean) script    */
+  /* support.                                                              */
+  /*                                                                       */
+#define AF_CONFIG_OPTION_CJK
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Compile autofit module with Indic script support.                     */
+  /*                                                                       */
+#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 only active if the render mode is         */
+  /* FT_RENDER_MODE_LIGHT.                                                 */
+  /*                                                                       */
+#define AF_CONFIG_OPTION_USE_WARPER
+
+  /* */
+
+
+  /*
+   *  This macro is obsolete.  Support has been removed in FreeType
+   *  version 2.5.
+   */
+/* #define FT_CONFIG_OPTION_OLD_INTERNALS */
+
+
+  /*
+   * This macro is defined if either unpatented or native TrueType
+   * hinting is requested by the definitions above.
+   */
+#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+#define  TT_USE_BYTECODE_INTERPRETER
+#undef   TT_CONFIG_OPTION_UNPATENTED_HINTING
+#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING
+#define  TT_USE_BYTECODE_INTERPRETER
+#endif
+
+FT_END_HEADER
+
+
+#endif /* __FTOPTION_H__ */
+
+
+/* END */
   /* 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 `freetype/builds/<system>', and        */
-  /* contains system-specific files that are always included first when    */
-  /* building the library.                                                 */
+  /* 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/freetype/config'.           */
+  /* This ANSI version should stay in `include/config/'.                   */
   /*                                                                       */
   /*************************************************************************/
 
@@ -53,7 +53,7 @@ FT_BEGIN_HEADER
   /* 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     */
-  /* `freetype/builds/<system>' directory, and edit it to port the engine. */
+  /* `builds/<system>' directory, and edit it to port the engine.          */
   /*                                                                       */
   /*************************************************************************/
 
@@ -338,6 +338,7 @@ FT_BEGIN_HEADER
   /* These must be defined `static __inline__' with GCC.             */
 
 #if defined( __CC_ARM ) || defined( __ARMCC__ )  /* RVCT */
+
 #define FT_MULFIX_ASSEMBLER  FT_MulFix_arm
 
   /* documentation is in freetype.h */
@@ -367,8 +368,10 @@ FT_BEGIN_HEADER
 
 #ifdef __GNUC__
 
-#if defined( __arm__ ) && !defined( __thumb__ )    && \
+#if defined( __arm__ )                                 && \
+    ( !defined( __thumb__ ) || defined( __thumb2__ ) ) && \
     !( defined( __CC_ARM ) || defined( __ARMCC__ ) )
+
 #define FT_MULFIX_ASSEMBLER  FT_MulFix_arm
 
   /* documentation is in freetype.h */
@@ -383,7 +386,11 @@ FT_BEGIN_HEADER
     __asm__ __volatile__ (
       "smull  %1, %2, %4, %3\n\t"       /* (lo=%1,hi=%2) = a*b */
       "mov    %0, %2, asr #31\n\t"      /* %0  = (hi >> 31) */
+#ifdef __clang__
+      "add.w  %0, %0, #0x8000\n\t"      /* %0 += 0x8000 */
+#else
       "add    %0, %0, #0x8000\n\t"      /* %0 += 0x8000 */
+#endif
       "adds   %1, %1, %0\n\t"           /* %1 += %0 */
       "adc    %2, %2, #0\n\t"           /* %2 += carry */
       "mov    %0, %1, lsr #16\n\t"      /* %0  = %1 >> 16 */
@@ -394,9 +401,13 @@ FT_BEGIN_HEADER
     return a;
   }
 
-#endif /* __arm__ && !__thumb__ && !( __CC_ARM || __ARMCC__ ) */
+#endif /* __arm__                      && */
+       /* ( __thumb2__ || !__thumb__ ) && */
+       /* !( __CC_ARM || __ARMCC__ )      */
+
 
 #if defined( __i386__ )
+
 #define FT_MULFIX_ASSEMBLER  FT_MulFix_i386
 
   /* documentation is in freetype.h */
@@ -465,6 +476,66 @@ FT_BEGIN_HEADER
 
 #endif /* _MSC_VER */
 
+
+#if defined( __GNUC__ ) && defined( __x86_64__ )
+
+#define FT_MULFIX_ASSEMBLER  FT_MulFix_x86_64
+
+  static __inline__ FT_Int32
+  FT_MulFix_x86_64( FT_Int32  a,
+                    FT_Int32  b )
+  {
+    /* Temporarily disable the warning that C90 doesn't support */
+    /* `long long'.                                             */
+#if ( __GNUC__ > 4 ) || ( ( __GNUC__ == 4 ) && ( __GNUC_MINOR__ >= 6 ) )
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wlong-long"
+#endif
+
+#if 1
+    /* Technically not an assembly fragment, but GCC does a really good */
+    /* job at inlining it and generating good machine code for it.      */
+    long long  ret, tmp;
+
+
+    ret  = (long long)a * b;
+    tmp  = ret >> 63;
+    ret += 0x8000 + tmp;
+
+    return (FT_Int32)( ret >> 16 );
+#else
+
+    /* For some reason, GCC 4.6 on Ubuntu 12.04 generates invalid machine  */
+    /* code from the lines below.  The main issue is that `wide_a' is not  */
+    /* properly initialized by sign-extending `a'.  Instead, the generated */
+    /* machine code assumes that the register that contains `a' on input   */
+    /* can be used directly as a 64-bit value, which is wrong most of the  */
+    /* time.                                                               */
+    long long  wide_a = (long long)a;
+    long long  wide_b = (long long)b;
+    long long  result;
+
+
+    __asm__ __volatile__ (
+      "imul %2, %1\n"
+      "mov %1, %0\n"
+      "sar $63, %0\n"
+      "lea 0x8000(%1, %0), %0\n"
+      "sar $16, %0\n"
+      : "=&r"(result), "=&r"(wide_a)
+      : "r"(wide_b)
+      : "cc" );
+
+    return (FT_Int32)result;
+#endif
+
+#if ( __GNUC__ > 4 ) || ( ( __GNUC__ == 4 ) && ( __GNUC_MINOR__ >= 6 ) )
+#pragma GCC diagnostic pop
+#endif
+  }
+
+#endif /* __GNUC__ && __x86_64__ */
+
 #endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
 
 
@@ -492,6 +563,9 @@ FT_BEGIN_HEADER
 
 #endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
 
+#define FT_LOCAL_ARRAY( x )      extern const  x
+#define FT_LOCAL_ARRAY_DEF( x )  const  x
+
 
 #ifndef FT_BASE
 
    *
    */
 #ifndef FT_CONFIG_CONFIG_H
-#define FT_CONFIG_CONFIG_H  <freetype/config/ftconfig.h>
+#define FT_CONFIG_CONFIG_H  <config/ftconfig.h>
 #endif
 
 
    *
    */
 #ifndef FT_CONFIG_STANDARD_LIBRARY_H
-#define FT_CONFIG_STANDARD_LIBRARY_H  <freetype/config/ftstdlib.h>
+#define FT_CONFIG_STANDARD_LIBRARY_H  <config/ftstdlib.h>
 #endif
 
 
    *
    */
 #ifndef FT_CONFIG_OPTIONS_H
-#define FT_CONFIG_OPTIONS_H  <freetype/config/ftoption.h>
+#define FT_CONFIG_OPTIONS_H  <config/ftoption.h>
 #endif
 
 
    *
    */
 #ifndef FT_CONFIG_MODULES_H
-#define FT_CONFIG_MODULES_H  <freetype/config/ftmodule.h>
+#define FT_CONFIG_MODULES_H  <config/ftmodule.h>
 #endif
 
   /* */
    *   base FreeType~2 API.
    *
    */
-#define FT_FREETYPE_H  <freetype/freetype.h>
+#define FT_FREETYPE_H  <freetype.h>
 
 
   /*************************************************************************
    *   It is included by @FT_FREETYPE_H.
    *
    */
-#define FT_ERRORS_H  <freetype/fterrors.h>
+#define FT_ERRORS_H  <fterrors.h>
 
 
   /*************************************************************************
    *   list of FreeType~2 module error offsets (and messages).
    *
    */
-#define FT_MODULE_ERRORS_H  <freetype/ftmoderr.h>
+#define FT_MODULE_ERRORS_H  <ftmoderr.h>
 
 
   /*************************************************************************
    *   It is included by @FT_FREETYPE_H.
    *
    */
-#define FT_SYSTEM_H  <freetype/ftsystem.h>
+#define FT_SYSTEM_H  <ftsystem.h>
 
 
   /*************************************************************************
    *   It is included by @FT_FREETYPE_H.
    *
    */
-#define FT_IMAGE_H  <freetype/ftimage.h>
+#define FT_IMAGE_H  <ftimage.h>
 
 
   /*************************************************************************
    *   It is included by @FT_FREETYPE_H.
    *
    */
-#define FT_TYPES_H  <freetype/fttypes.h>
+#define FT_TYPES_H  <fttypes.h>
 
 
   /*************************************************************************
    *   (Most applications will never need to include this file.)
    *
    */
-#define FT_LIST_H  <freetype/ftlist.h>
+#define FT_LIST_H  <ftlist.h>
 
 
   /*************************************************************************
    *   scalable outline management API of FreeType~2.
    *
    */
-#define FT_OUTLINE_H  <freetype/ftoutln.h>
+#define FT_OUTLINE_H  <ftoutln.h>
 
 
   /*************************************************************************
    *   API which manages multiple @FT_Size objects per face.
    *
    */
-#define FT_SIZES_H  <freetype/ftsizes.h>
+#define FT_SIZES_H  <ftsizes.h>
 
 
   /*************************************************************************
    *   module management API of FreeType~2.
    *
    */
-#define FT_MODULE_H  <freetype/ftmodapi.h>
+#define FT_MODULE_H  <ftmodapi.h>
 
 
   /*************************************************************************
    *   renderer module management API of FreeType~2.
    *
    */
-#define FT_RENDER_H  <freetype/ftrender.h>
+#define FT_RENDER_H  <ftrender.h>
 
 
   /*************************************************************************
    *   structures and macros related to the auto-hinting module.
    *
    */
-#define FT_AUTOHINTER_H  <freetype/ftautoh.h>
+#define FT_AUTOHINTER_H  <ftautoh.h>
 
 
   /*************************************************************************
    *   structures and macros related to the CFF driver module.
    *
    */
-#define FT_CFF_DRIVER_H  <freetype/ftcffdrv.h>
+#define FT_CFF_DRIVER_H  <ftcffdrv.h>
 
 
   /*************************************************************************
    *   structures and macros related to the TrueType driver module.
    *
    */
-#define FT_TRUETYPE_DRIVER_H  <freetype/ftttdrv.h>
+#define FT_TRUETYPE_DRIVER_H  <ftttdrv.h>
 
 
   /*************************************************************************
    *   types and API specific to the Type~1 format.
    *
    */
-#define FT_TYPE1_TABLES_H  <freetype/t1tables.h>
+#define FT_TYPE1_TABLES_H  <t1tables.h>
 
 
   /*************************************************************************
    *   definitions, taken from the TrueType and OpenType specifications.
    *
    */
-#define FT_TRUETYPE_IDS_H  <freetype/ttnameid.h>
+#define FT_TRUETYPE_IDS_H  <ttnameid.h>
 
 
   /*************************************************************************
    *   types and API specific to the TrueType (as well as OpenType) format.
    *
    */
-#define FT_TRUETYPE_TABLES_H  <freetype/tttables.h>
+#define FT_TRUETYPE_TABLES_H  <tttables.h>
 
 
   /*************************************************************************
    *   SFNT-based font formats (i.e., TrueType and OpenType).
    *
    */
-#define FT_TRUETYPE_TAGS_H  <freetype/tttags.h>
+#define FT_TRUETYPE_TAGS_H  <tttags.h>
 
 
   /*************************************************************************
    *   face.
    *
    */
-#define FT_BDF_H  <freetype/ftbdf.h>
+#define FT_BDF_H  <ftbdf.h>
 
 
   /*************************************************************************
    *   face.
    *
    */
-#define FT_CID_H  <freetype/ftcid.h>
+#define FT_CID_H  <ftcid.h>
 
 
   /*************************************************************************
    *   definitions of an API which supports gzip-compressed files.
    *
    */
-#define FT_GZIP_H  <freetype/ftgzip.h>
+#define FT_GZIP_H  <ftgzip.h>
 
 
   /*************************************************************************
    *   definitions of an API which supports LZW-compressed files.
    *
    */
-#define FT_LZW_H  <freetype/ftlzw.h>
+#define FT_LZW_H  <ftlzw.h>
 
 
   /*************************************************************************
    *   definitions of an API which supports bzip2-compressed files.
    *
    */
-#define FT_BZIP2_H  <freetype/ftbzip2.h>
+#define FT_BZIP2_H  <ftbzip2.h>
 
 
   /*************************************************************************
    *   definitions of an API which supports Windows FNT files.
    *
    */
-#define FT_WINFONTS_H   <freetype/ftwinfnt.h>
+#define FT_WINFONTS_H   <ftwinfnt.h>
 
 
   /*************************************************************************
    *   API of the optional glyph management component.
    *
    */
-#define FT_GLYPH_H  <freetype/ftglyph.h>
+#define FT_GLYPH_H  <ftglyph.h>
 
 
   /*************************************************************************
    *   API of the optional bitmap conversion component.
    *
    */
-#define FT_BITMAP_H  <freetype/ftbitmap.h>
+#define FT_BITMAP_H  <ftbitmap.h>
 
 
   /*************************************************************************
    *   API of the optional exact bounding box computation routines.
    *
    */
-#define FT_BBOX_H  <freetype/ftbbox.h>
+#define FT_BBOX_H  <ftbbox.h>
 
 
   /*************************************************************************
    *   API of the optional FreeType~2 cache sub-system.
    *
    */
-#define FT_CACHE_H  <freetype/ftcache.h>
+#define FT_CACHE_H  <ftcache.h>
 
 
   /*************************************************************************
    *   compiled on the Mac (note that the base API still works though).
    *
    */
-#define FT_MAC_H  <freetype/ftmac.h>
+#define FT_MAC_H  <ftmac.h>
 
 
   /*************************************************************************
    *   optional multiple-masters management API of FreeType~2.
    *
    */
-#define FT_MULTIPLE_MASTERS_H  <freetype/ftmm.h>
+#define FT_MULTIPLE_MASTERS_H  <ftmm.h>
 
 
   /*************************************************************************
    *   SFNT-based font formats (i.e., TrueType and OpenType).
    *
    */
-#define FT_SFNT_NAMES_H  <freetype/ftsnames.h>
+#define FT_SFNT_NAMES_H  <ftsnames.h>
 
 
   /*************************************************************************
    *   GPOS, GSUB, JSTF).
    *
    */
-#define FT_OPENTYPE_VALIDATE_H  <freetype/ftotval.h>
+#define FT_OPENTYPE_VALIDATE_H  <ftotval.h>
 
 
   /*************************************************************************
    *   mort, morx, bsln, just, kern, opbd, trak, prop).
    *
    */
-#define FT_GX_VALIDATE_H  <freetype/ftgxval.h>
+#define FT_GX_VALIDATE_H  <ftgxval.h>
 
 
   /*************************************************************************
    *   FreeType~2 API which accesses PFR-specific data.
    *
    */
-#define FT_PFR_H  <freetype/ftpfr.h>
+#define FT_PFR_H  <ftpfr.h>
 
 
   /*************************************************************************
    *   A macro used in #include statements to name the file containing the
    *   FreeType~2 API which provides functions to stroke outline paths.
    */
-#define FT_STROKER_H  <freetype/ftstroke.h>
+#define FT_STROKER_H  <ftstroke.h>
 
 
   /*************************************************************************
    *   A macro used in #include statements to name the file containing the
    *   FreeType~2 API which performs artificial obliquing and emboldening.
    */
-#define FT_SYNTHESIS_H  <freetype/ftsynth.h>
+#define FT_SYNTHESIS_H  <ftsynth.h>
 
 
   /*************************************************************************
    *   FreeType~2 API which provides functions specific to the XFree86 and
    *   X.Org X11 servers.
    */
-#define FT_XFREE86_H  <freetype/ftxf86.h>
+#define FT_XFREE86_H  <ftxf86.h>
 
 
   /*************************************************************************
    *   FreeType~2 API which performs trigonometric computations (e.g.,
    *   cosines and arc tangents).
    */
-#define FT_TRIGONOMETRY_H  <freetype/fttrigon.h>
+#define FT_TRIGONOMETRY_H  <fttrigon.h>
 
 
   /*************************************************************************
    *   A macro used in #include statements to name the file containing the
    *   FreeType~2 API which performs color filtering for subpixel rendering.
    */
-#define FT_LCD_FILTER_H  <freetype/ftlcdfil.h>
+#define FT_LCD_FILTER_H  <ftlcdfil.h>
 
 
   /*************************************************************************
    *   A macro used in #include statements to name the file containing the
    *   FreeType~2 API which performs color filtering for subpixel rendering.
    */
-#define FT_UNPATENTED_HINTING_H  <freetype/ttunpat.h>
+#define FT_UNPATENTED_HINTING_H  <ttunpat.h>
 
 
   /*************************************************************************
    *   A macro used in #include statements to name the file containing the
    *   FreeType~2 API which performs color filtering for subpixel rendering.
    */
-#define FT_INCREMENTAL_H  <freetype/ftincrem.h>
+#define FT_INCREMENTAL_H  <ftincrem.h>
 
 
   /*************************************************************************
    *   A macro used in #include statements to name the file containing the
    *   FreeType~2 API which returns entries from the TrueType GASP table.
    */
-#define FT_GASP_H  <freetype/ftgasp.h>
+#define FT_GASP_H  <ftgasp.h>
 
 
   /*************************************************************************
    *   A macro used in #include statements to name the file containing the
    *   FreeType~2 API which returns individual and ranged glyph advances.
    */
-#define FT_ADVANCES_H  <freetype/ftadvanc.h>
+#define FT_ADVANCES_H  <ftadvanc.h>
 
 
   /* */
 
-#define FT_ERROR_DEFINITIONS_H  <freetype/fterrdef.h>
+#define FT_ERROR_DEFINITIONS_H  <fterrdef.h>
 
 
   /* The internals of the cache sub-system are no longer exposed.  We */
   /* default to FT_CACHE_H at the moment just in case, but we know of */
   /* no rogue client that uses them.                                  */
   /*                                                                  */
-#define FT_CACHE_MANAGER_H           <freetype/ftcache.h>
-#define FT_CACHE_INTERNAL_MRU_H      <freetype/ftcache.h>
-#define FT_CACHE_INTERNAL_MANAGER_H  <freetype/ftcache.h>
-#define FT_CACHE_INTERNAL_CACHE_H    <freetype/ftcache.h>
-#define FT_CACHE_INTERNAL_GLYPH_H    <freetype/ftcache.h>
-#define FT_CACHE_INTERNAL_IMAGE_H    <freetype/ftcache.h>
-#define FT_CACHE_INTERNAL_SBITS_H    <freetype/ftcache.h>
+#define FT_CACHE_MANAGER_H           <ftcache.h>
+#define FT_CACHE_INTERNAL_MRU_H      <ftcache.h>
+#define FT_CACHE_INTERNAL_MANAGER_H  <ftcache.h>
+#define FT_CACHE_INTERNAL_CACHE_H    <ftcache.h>
+#define FT_CACHE_INTERNAL_GLYPH_H    <ftcache.h>
+#define FT_CACHE_INTERNAL_IMAGE_H    <ftcache.h>
+#define FT_CACHE_INTERNAL_SBITS_H    <ftcache.h>
 
 
-#define FT_INCREMENTAL_H          <freetype/ftincrem.h>
+#define FT_INCREMENTAL_H          <ftincrem.h>
 
-#define FT_TRUETYPE_UNPATENTED_H  <freetype/ttunpat.h>
+#define FT_TRUETYPE_UNPATENTED_H  <ttunpat.h>
 
 
   /*
-   * Include internal headers definitions from <freetype/internal/...>
+   * Include internal headers definitions from <internal/...>
    * only when building the library.
    */
 #ifdef FT2_BUILD_LIBRARY
-#define  FT_INTERNAL_INTERNAL_H  <freetype/internal/internal.h>
+#define  FT_INTERNAL_INTERNAL_H  <internal/internal.h>
 #include FT_INTERNAL_INTERNAL_H
 #endif /* FT2_BUILD_LIBRARY */
 
@@ -38,9 +38,9 @@ FT_BEGIN_HEADER
   /*    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.                                   */
+  /*    precisely in `$BUILD/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  */
@@ -51,7 +51,7 @@ FT_BEGIN_HEADER
   /*    locate this file during the build.  For example,                   */
   /*                                                                       */
   /*      #define FT_CONFIG_OPTIONS_H  <myftoptions.h>                     */
-  /*      #include <freetype/config/ftheader.h>                            */
+  /*      #include <config/ftheader.h>                                     */
   /*                                                                       */
   /*    will use `$BUILD/myftoptions.h' instead of this file for macro     */
   /*    definitions.                                                       */
@@ -59,7 +59,7 @@ FT_BEGIN_HEADER
   /*    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>.                */
+  /*    default, this file is <config/ftmodule.h>.                         */
   /*                                                                       */
   /*  We highly recommend using the third method whenever possible.        */
   /*                                                                       */
@@ -323,7 +323,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*   Note that the `FOND' resource isn't checked.                        */
   /*                                                                       */
-/*#define FT_CONFIG_OPTION_MAC_FONTS */
+#define FT_CONFIG_OPTION_MAC_FONTS
 
 
   /*************************************************************************/
@@ -528,7 +528,7 @@ FT_BEGIN_HEADER
   /* does not contain any glyph name though.                               */
   /*                                                                       */
   /* Accessing SFNT names is done through the functions declared in        */
-  /* `freetype/ftsnames.h'.                                                */
+  /* `ftsnames.h'.                                                         */
   /*                                                                       */
 #define TT_CONFIG_OPTION_SFNT_NAMES
 
@@ -98,7 +98,10 @@ FT_BEGIN_HEADER
   /*    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_GLYPH_NAMES                                           */
@@ -417,7 +420,8 @@ FT_BEGIN_HEADER
   /* <Note>                                                                */
   /*    Each @FT_Face has an _active_ @FT_Size object that is used by      */
   /*    functions like @FT_Load_Glyph to determine the scaling             */
-  /*    transformation which is used to load and hint glyphs and metrics.  */
+  /*    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     */
@@ -552,11 +556,12 @@ FT_BEGIN_HEADER
   /*    FT_ENCODING_MS_SYMBOL ::                                           */
   /*      Corresponds to the Microsoft Symbol encoding, used to encode     */
   /*      mathematical symbols in the 32..255 character code range.  For   */
-  /*      more information, see `http://www.ceviz.net/symbol.htm'.         */
+  /*      more information, see                                            */
+  /*      `http://www.kostis.net/charsets/symbol.htm'.                     */
   /*                                                                       */
   /*    FT_ENCODING_SJIS ::                                                */
   /*      Corresponds to Japanese SJIS encoding.  More info at             */
-  /*      at `http://langsupport.japanreference.com/encoding.shtml'.       */
+  /*      at `http://en.wikipedia.org/wiki/Shift_JIS'.                     */
   /*      See note on multi-byte encodings below.                          */
   /*                                                                       */
   /*    FT_ENCODING_GB2312 ::                                              */
@@ -570,7 +575,7 @@ FT_BEGIN_HEADER
   /*    FT_ENCODING_WANSUNG ::                                             */
   /*      Corresponds to the Korean encoding system known as Wansung.      */
   /*      For more information see                                         */
-  /*      `http://www.microsoft.com/typography/unicode/949.txt'.           */
+  /*      `http://msdn.microsoft.com/en-US/goglobal/cc305154'.             */
   /*                                                                       */
   /*    FT_ENCODING_JOHAB ::                                               */
   /*      The Korean standard character set (KS~C 5601-1992), which        */
@@ -645,10 +650,10 @@ FT_BEGIN_HEADER
   /*    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 which may   */
+  /*    @FT_Get_CMap_Language_ID to query the Mac language ID that may     */
   /*    be needed to be able to distinguish Apple encoding variants.  See  */
   /*                                                                       */
-  /*      http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT  */
+  /*      http://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.     */
@@ -808,7 +813,7 @@ FT_BEGIN_HEADER
   /*                           highest CID used in the font.               */
   /*                                                                       */
   /*    family_name         :: The face's family name.  This is an ASCII   */
-  /*                           string, usually in English, which describes */
+  /*                           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  */
@@ -820,7 +825,7 @@ FT_BEGIN_HEADER
   /*                           PDF file).                                  */
   /*                                                                       */
   /*    style_name          :: The face's style name.  This is an ASCII    */
-  /*                           string, usually in English, which describes */
+  /*                           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 */
@@ -1054,7 +1059,7 @@ FT_BEGIN_HEADER
   /*      exist make FT_Load_Glyph return successfully; in all other cases */
   /*      you get an `FT_Err_Invalid_Argument' error.                      */
   /*                                                                       */
-  /*      Note that CID-keyed fonts which are in an SFNT wrapper don't     */
+  /*      Note that CID-keyed fonts that are in an SFNT wrapper 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.                                                 */
@@ -1062,7 +1067,7 @@ FT_BEGIN_HEADER
   /*    FT_FACE_FLAG_TRICKY ::                                             */
   /*      Set if the font is `tricky', this is, it always needs the        */
   /*      font format's native hinting engine to get a reasonable result.  */
-  /*      A typical example is the Chinese font `mingli.ttf' which uses    */
+  /*      A typical example is the Chinese font `mingli.ttf' that uses     */
   /*      TrueType bytecode instructions to move and scale all of its      */
   /*      subglyphs.                                                       */
   /*                                                                       */
@@ -1075,6 +1080,10 @@ FT_BEGIN_HEADER
   /*      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 ::                                              */
+  /*      Set if the font has color glyph tables.  To access color glyphs  */
+  /*      use @FT_LOAD_COLOR.                                              */
+  /*                                                                       */
 #define FT_FACE_FLAG_SCALABLE          ( 1L <<  0 )
 #define FT_FACE_FLAG_FIXED_SIZES       ( 1L <<  1 )
 #define FT_FACE_FLAG_FIXED_WIDTH       ( 1L <<  2 )
@@ -1089,6 +1098,7 @@ FT_BEGIN_HEADER
 #define FT_FACE_FLAG_HINTER            ( 1L << 11 )
 #define FT_FACE_FLAG_CID_KEYED         ( 1L << 12 )
 #define FT_FACE_FLAG_TRICKY            ( 1L << 13 )
+#define FT_FACE_FLAG_COLOR             ( 1L << 14 )
 
 
   /*************************************************************************
@@ -1273,6 +1283,20 @@ FT_BEGIN_HEADER
           ( face->face_flags & FT_FACE_FLAG_TRICKY )
 
 
+  /*************************************************************************
+   *
+   * @macro:
+   *   FT_HAS_COLOR( face )
+   *
+   * @description:
+   *   A macro that returns true whenever a face object contains
+   *   tables for color glyphs.
+   *
+   */
+#define FT_HAS_COLOR( face ) \
+          ( face->face_flags & FT_FACE_FLAG_COLOR )
+
+
   /*************************************************************************/
   /*                                                                       */
   /* <Const>                                                               */
@@ -1394,9 +1418,9 @@ FT_BEGIN_HEADER
   /* <Fields>                                                              */
   /*    face    :: Handle to the parent face object.                       */
   /*                                                                       */
-  /*    generic :: A typeless pointer, which is 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 */
+  /*    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. */
@@ -1464,10 +1488,10 @@ FT_BEGIN_HEADER
   /*                         listed through a direct, single-linked list   */
   /*                         using its `next' field.                       */
   /*                                                                       */
-  /*    generic           :: A typeless pointer which is 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.     */
+  /*    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 */
@@ -1494,8 +1518,8 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*    advance           :: This shorthand is, depending on               */
   /*                         @FT_LOAD_IGNORE_TRANSFORM, the transformed    */
-  /*                         advance width for the glyph (in 26.6          */
-  /*                         fractional pixel format).  As specified with  */
+  /*                         (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.                              */
@@ -1584,7 +1608,7 @@ FT_BEGIN_HEADER
   /*    `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP.         */
   /*                                                                       */
   /* <Note>                                                                */
-  /*    Here a small pseudo code fragment which shows how to use           */
+  /*    Here a small pseudo code fragment that shows how to use            */
   /*    `lsb_delta' and `rsb_delta':                                       */
   /*                                                                       */
   /*    {                                                                  */
@@ -1813,7 +1837,7 @@ FT_BEGIN_HEADER
   /*                   opening a new face.                                 */
   /*                                                                       */
   /* <Note>                                                                */
-  /*    The stream type is determined by the contents of `flags' which     */
+  /*    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          */
@@ -1894,7 +1918,7 @@ FT_BEGIN_HEADER
   /*    FT_New_Memory_Face                                                 */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    This function calls @FT_Open_Face to open a font which has been    */
+  /*    This function calls @FT_Open_Face to open a font that has been     */
   /*    loaded into memory.                                                */
   /*                                                                       */
   /* <InOut>                                                               */
@@ -1940,7 +1964,7 @@ FT_BEGIN_HEADER
   /*    library    :: A handle to the library resource.                    */
   /*                                                                       */
   /* <Input>                                                               */
-  /*    args       :: A pointer to an `FT_Open_Args' structure which must  */
+  /*    args       :: A pointer to an `FT_Open_Args' structure that must   */
   /*                  be filled by the caller.                             */
   /*                                                                       */
   /*    face_index :: The index of the face within the font.  The first    */
@@ -1956,7 +1980,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /* <Note>                                                                */
   /*    Unlike FreeType 1.x, this function automatically creates a glyph   */
-  /*    slot for the face object which can be accessed directly through    */
+  /*    slot for the face object that can be accessed directly through     */
   /*    `face->glyph'.                                                     */
   /*                                                                       */
   /*    FT_Open_Face can be used to quickly check whether the font         */
@@ -1965,7 +1989,7 @@ FT_BEGIN_HEADER
   /*    if the font format is recognized, or non-zero otherwise;           */
   /*    the function returns a more or less empty face handle in `*aface'  */
   /*    (if `aface' isn't NULL).  The only useful field in this special    */
-  /*    case is `face->num_faces' which gives the number of faces within   */
+  /*    case is `face->num_faces' that gives the number of faces within    */
   /*    the font file.  After examination, the returned @FT_Face structure */
   /*    should be deallocated with a call to @FT_Done_Face.                */
   /*                                                                       */
@@ -2023,7 +2047,7 @@ FT_BEGIN_HEADER
   /*    face       :: The target face object.                              */
   /*                                                                       */
   /* <Input>                                                               */
-  /*    parameters :: A pointer to @FT_Open_Args which must be filled by   */
+  /*    parameters :: A pointer to @FT_Open_Args that must be filled by    */
   /*                  the caller.                                          */
   /*                                                                       */
   /* <Return>                                                              */
@@ -2054,7 +2078,7 @@ FT_BEGIN_HEADER
   /*    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 which    */
+  /*    This function helps in managing life-cycles of structures that     */
   /*    reference @FT_Face objects.                                        */
   /*                                                                       */
   /* <Input>                                                               */
@@ -2361,7 +2385,7 @@ FT_BEGIN_HEADER
   /*    the details.                                                       */
   /*                                                                       */
   /*    For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is        */
-  /*    returned for invalid CID values (this is, for CID values which     */
+  /*    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.              */
   /*                                                                       */
@@ -2635,7 +2659,7 @@ FT_BEGIN_HEADER
    *   `load_flags'.  They can't be ORed.
    *
    *   If @FT_LOAD_RENDER is also set, the glyph is rendered in the
-   *   corresponding mode (i.e., the mode which matches the used algorithm
+   *   corresponding mode (i.e., the mode that matches the used algorithm
    *   best).  An exeption is FT_LOAD_TARGET_MONO since it implies
    *   @FT_LOAD_MONOCHROME.
    *
@@ -3003,7 +3027,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*    This function is not compiled within the library if the config     */
   /*    macro `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is defined in              */
-  /*    `include/freetype/config/ftoptions.h'.                             */
+  /*    `ftoptions.h'.                                                     */
   /*                                                                       */
   FT_EXPORT( FT_Error )
   FT_Get_Glyph_Name( FT_Face     face,
@@ -3059,8 +3083,8 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*    Because many fonts contain more than a single cmap for Unicode     */
   /*    encoding, this function has some special code to select the one    */
-  /*    which covers Unicode best (`best' in the sense that a UCS-4 cmap   */
-  /*    is preferred to a UCS-2 cmap).  It is thus preferable to           */
+  /*    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 )
@@ -3414,7 +3438,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /* <Note>                                                                */
   /*    Use this function rather than directly reading the `fs_type' field */
-  /*    in the @PS_FontInfoRec structure which is only guaranteed to       */
+  /*    in the @PS_FontInfoRec structure, which is only guaranteed to      */
   /*    return the correct results for Type~1 fonts.                       */
   /*                                                                       */
   /* <Since>                                                               */
@@ -3594,7 +3618,7 @@ FT_BEGIN_HEADER
   /*      The character codepoint in Unicode.                              */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    A pointer to an array of variant selector code points which are    */
+  /*    A pointer to an array of variant selector code points that are     */
   /*    active for the given character, or NULL if the corresponding list  */
   /*    is empty.                                                          */
   /*                                                                       */
@@ -3628,7 +3652,7 @@ FT_BEGIN_HEADER
   /*      The variant selector code point in Unicode.                      */
   /*                                                                       */
   /* <Return>                                                              */
-  /*    A list of all the code points which are specified by this selector */
+  /*    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 variant selector is invalid.               */
   /*                                                                       */
@@ -3901,7 +3925,7 @@ FT_BEGIN_HEADER
    */
 #define FREETYPE_MAJOR  2
 #define FREETYPE_MINOR  5
-#define FREETYPE_PATCH  0
+#define FREETYPE_PATCH  2
 
 
   /*************************************************************************/
diff --git a/reactos/lib/3rdparty/freetype/include/freetype/ftcffdrv.h b/reactos/lib/3rdparty/freetype/include/freetype/ftcffdrv.h
deleted file mode 100644 (file)
index ccbcbcc..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcffdrv.h                                                             */
-/*                                                                         */
-/*    FreeType API for controlling the CFF driver (specification only).    */
-/*                                                                         */
-/*  Copyright 2013 by                                                      */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 __FTCFFDRV_H__
-#define __FTCFFDRV_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:
-   *   cff_driver
-   *
-   * @title:
-   *   The CFF driver
-   *
-   * @abstract:
-   *   Controlling the CFF driver module.
-   *
-   * @description:
-   *   While FreeType's CFF driver doesn't expose API functions by itself,
-   *   it is possible to control its behaviour with @FT_Property_Set and
-   *   @FT_Property_Get.  The following lists the available properties
-   *   together with the necessary macros and structures.
-   *
-   *   The CFF driver's module name is `cff'.
-   *
-   */
-
-
-  /**************************************************************************
-   *
-   * @property:
-   *   hinting-engine
-   *
-   * @description:
-   *   Thanks to Adobe, which contributed a new hinting (and parsing)
-   *   engine, an application can select between `freetype' and `adobe' if
-   *   compiled with CFF_CONFIG_OPTION_OLD_ENGINE.  If this configuration
-   *   macro isn't defined, `hinting-engine' does nothing.
-   *
-   *   The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is
-   *   defined, and `adobe' otherwise.
-   *
-   *   The following example code demonstrates how to select Adobe's hinting
-   *   engine (omitting the error handling).
-   *
-   *   {
-   *     FT_Library  library;
-   *     FT_Face     face;
-   *     FT_UInt     hinting_engine = FT_CFF_HINTING_ADOBE;
-   *
-   *
-   *     FT_Init_FreeType( &library );
-   *
-   *     FT_Property_Set( library, "cff",
-   *                               "hinting-engine", &hinting_engine );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   */
-
-
-  /**************************************************************************
-   *
-   * @enum:
-   *   FT_CFF_HINTING_XXX
-   *
-   * @description:
-   *   A list of constants used for the @hinting-engine property to select
-   *   the hinting engine for CFF fonts.
-   *
-   * @values:
-   *   FT_CFF_HINTING_FREETYPE ::
-   *     Use the old FreeType hinting engine.
-   *
-   *   FT_CFF_HINTING_ADOBE ::
-   *     Use the hinting engine contributed by Adobe.
-   *
-   */
-#define FT_CFF_HINTING_FREETYPE  0
-#define FT_CFF_HINTING_ADOBE     1
-
-
-  /**************************************************************************
-   *
-   * @property:
-   *   no-stem-darkening
-   *
-   * @description:
-   *   By default, the Adobe CFF engine darkens stems at smaller sizes,
-   *   regardless of hinting, to enhance contrast.  Setting this property,
-   *   stem darkening gets switched off.
-   *
-   *   Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set.
-   *
-   *   {
-   *     FT_Library  library;
-   *     FT_Face     face;
-   *     FT_Bool     no_stem_darkening = TRUE;
-   *
-   *
-   *     FT_Init_FreeType( &library );
-   *
-   *     FT_Property_Set( library, "cff",
-   *                               "no-stem-darkening", &no_stem_darkening );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   */
-
-
- /* */
-
-FT_END_HEADER
-
-
-#endif /* __FTCFFDRV_H__ */
-
-
-/* END */
index 923d887..6f8eb7f 100644 (file)
@@ -3,9 +3,8 @@
 /*  ft2build.h                                                             */
 /*                                                                         */
 /*    FreeType 2 build and setup macros.                                   */
-/*    (Generic version)                                                    */
 /*                                                                         */
-/*  Copyright 1996-2001, 2006 by                                           */
+/*  Copyright 1996-2001, 2006, 2013 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
 
   /*************************************************************************/
   /*                                                                       */
-  /* This file corresponds to the default `ft2build.h' file for            */
-  /* FreeType 2.  It uses the `freetype' include root.                     */
+  /* 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').                                              */
   /*                                                                       */
-  /* Note that specific platforms might use a different configuration.     */
-  /* See builds/unix/ft2unix.h for an example.                             */
+  /* A typical example is                                                  */
+  /*                                                                       */
+  /*   #include <ft2build.h>                                               */
+  /*   #include FT_FREETYPE_H                                              */
   /*                                                                       */
   /*************************************************************************/
 
 
-#ifndef __FT2_BUILD_GENERIC_H__
-#define __FT2_BUILD_GENERIC_H__
+#ifndef __FT2BUILD_H__
+#define __FT2BUILD_H__
 
-#include <freetype/config/ftheader.h>
+#include <config/ftheader.h>
 
-#endif /* __FT2_BUILD_GENERIC_H__ */
+#endif /* __FT2BUILD_H__ */
 
 
 /* END */
@@ -64,11 +64,11 @@ FT_BEGIN_HEADER
   /*    corresponding hinting mode or font driver doesn't allow for very   */
   /*    quick advance computation.                                         */
   /*                                                                       */
-  /*    Typically, glyphs which are either unscaled, unhinted, bitmapped,  */
+  /*    Typically, glyphs that are either unscaled, unhinted, bitmapped,   */
   /*    or light-hinted can have their advance width computed very         */
   /*    quickly.                                                           */
   /*                                                                       */
-  /*    Normal and bytecode hinted modes, which require loading, scaling,  */
+  /*    Normal and bytecode hinted modes that require loading, scaling,    */
   /*    and hinting of the glyph outline, are extremely slow by            */
   /*    comparison.                                                        */
   /*                                                                       */
@@ -79,7 +79,7 @@ FT_BEGIN_HEADER
    *   sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an
    *   array with `num_glyphs' elements, as found in the font's @FT_Face
    *   structure.  The `glyph-to-script-map' property returns a pointer to
-   *   this array which can be modified as needed.  Note that the
+   *   this array, which can be modified as needed.  Note that the
    *   modification should happen before the first glyph gets processed by
    *   the auto-hinter so that the global analysis of the font shapes
    *   actually uses the modified mapping.
@@ -282,7 +282,7 @@ FT_BEGIN_HEADER
    *   This property can be used with @FT_Property_Get also.
    *
    *   It's important to use the right timing for changing this value: The
-   *   creation of the glyph-to-script map which eventually uses the
+   *   creation of the glyph-to-script map that eventually uses the
    *   fallback script value gets triggered either by setting or reading a
    *   face-specific property like @glyph-to-script-map, or by auto-hinting
    *   any glyph from that face.  In particular, if you have already created
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType exact bbox computation (specification).                     */
 /*                                                                         */
-/*  Copyright 1996-2001, 2003, 2007, 2011 by                               */
+/*  Copyright 1996-2001, 2003, 2007, 2011, 2013 by                         */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -60,7 +60,7 @@ FT_BEGIN_HEADER
   /* <Description>                                                         */
   /*    Compute the exact bounding box of an outline.  This is slower      */
   /*    than computing the control box.  However, it uses an advanced      */
-  /*    algorithm which returns _very_ quickly when the two boxes          */
+  /*    algorithm that returns _very_ quickly when the two boxes           */
   /*    coincide.  Otherwise, the outline Bézier arcs are traversed to     */
   /*    extract their extrema.                                             */
   /*                                                                       */
@@ -78,7 +78,7 @@ FT_BEGIN_HEADER
   /*    @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  */
+  /*    properly shift and scale the subglyphs), then extracting the BBox, */
   /*    which can be eventually converted back to font units.              */
   /*                                                                       */
   FT_EXPORT( FT_Error )
@@ -156,7 +156,7 @@ FT_BEGIN_HEADER
    * @note:
    *   Never use NULL as a valid @FTC_FaceID.
    *
-   *   Face IDs are passed by the client to the cache manager, which calls,
+   *   Face IDs are passed by the client to the cache manager that calls,
    *   when needed, the @FTC_Face_Requester to translate them into new
    *   @FT_Face objects.
    *
diff --git a/reactos/lib/3rdparty/freetype/include/ftcffdrv.h b/reactos/lib/3rdparty/freetype/include/ftcffdrv.h
new file mode 100644 (file)
index 0000000..e4d039d
--- /dev/null
@@ -0,0 +1,254 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftcffdrv.h                                                             */
+/*                                                                         */
+/*    FreeType API for controlling the CFF driver (specification only).    */
+/*                                                                         */
+/*  Copyright 2013 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.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 __FTCFFDRV_H__
+#define __FTCFFDRV_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:
+   *   cff_driver
+   *
+   * @title:
+   *   The CFF driver
+   *
+   * @abstract:
+   *   Controlling the CFF driver module.
+   *
+   * @description:
+   *   While FreeType's CFF driver doesn't expose API functions by itself,
+   *   it is possible to control its behaviour with @FT_Property_Set and
+   *   @FT_Property_Get.  The list below gives the available properties
+   *   together with the necessary macros and structures.
+   *
+   *   The CFF driver's module name is `cff'.
+   *
+   *   *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine*
+   *
+   *   The rasterizer is positioning horizontal features (e.g., ascender
+   *   height & x-height, or crossbars) on the pixel grid and minimizing the
+   *   amount of antialiasing applied to them, while placing vertical
+   *   features (vertical stems) on the pixel grid without hinting, thus
+   *   representing the stem position and weight accurately.  Sometimes the
+   *   vertical stems may be only partially black.  In this context,
+   *   `antialiasing' means that stems are not positioned exactly on pixel
+   *   borders, causing a fuzzy appearance.
+   *
+   *   There are two principles behind this approach.
+   *
+   *   1) No hinting in the horizontal direction: Unlike `superhinted'
+   *   TrueType, which changes glyph widths to accommodate regular
+   *   inter-glyph spacing, Adobe's approach is `faithful to the design' in
+   *   representing both the glyph width and the inter-glyph spacing
+   *   designed for the font.  This makes the screen display as close as it
+   *   can be to the result one would get with infinite resolution, while
+   *   preserving what is considered the key characteristics of each glyph.
+   *   Note that the distances between unhinted and grid-fitted positions at
+   *   small sizes are comparable to kerning values and thus would be
+   *   noticeable (and distracting) while reading if hinting were applied.
+   *
+   *   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
+   *   pixel.  On devices where we can be certain this characteristic is
+   *   present a rasterizer can take advantage of the sub-pixels 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,
+   *   and Latin type designs.  Even when the rasterizer uses greyscale
+   *   antialiasing instead of color (a necessary compromise when one
+   *   doesn't know the screen characteristics), the unhinted vertical
+   *   features preserve the design's weight and spacing much better than
+   *   aliased type would.
+   *
+   *   2) Aligment in the vertical direction: Weights and spacing along the
+   *   y~axis are less critical; what is much more important is the visual
+   *   alignment of related features (like cap-height and x-height).  The
+   *   sense of alignment for these is enhanced by the sharpness of grid-fit
+   *   edges, while the cruder vertical resolution (full pixels instead of
+   *   1/3 pixels) is less of a problem.
+   *
+   *   On the technical side, horizontal alignment zones for ascender,
+   *   x-height, and other important height values (traditionally called
+   *   `blue zones') as defined in the font are positioned independently,
+   *   each being rounded to the nearest pixel edge, taking care of
+   *   overshoot suppression at small sizes, stem darkening, and scaling.
+   *
+   *   Hstems (this is, hint values defined in the font to help align
+   *   horizontal features) that fall within a blue zone are said to be
+   *   `captured' and are aligned to that zone.  Uncaptured stems are moved
+   *   in one of four ways, top edge up or down, bottom edge up or down.
+   *   Unless there are conflicting hstems, the smallest movement is taken
+   *   to minimize distortion.
+   */
+
+
+  /**************************************************************************
+   *
+   * @property:
+   *   hinting-engine
+   *
+   * @description:
+   *   Thanks to Adobe, which contributed a new hinting (and parsing)
+   *   engine, an application can select between `freetype' and `adobe' if
+   *   compiled with CFF_CONFIG_OPTION_OLD_ENGINE.  If this configuration
+   *   macro isn't defined, `hinting-engine' does nothing.
+   *
+   *   The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is
+   *   defined, and `adobe' otherwise.
+   *
+   *   The following example code demonstrates how to select Adobe's hinting
+   *   engine (omitting the error handling).
+   *
+   *   {
+   *     FT_Library  library;
+   *     FT_UInt     hinting_engine = FT_CFF_HINTING_ADOBE;
+   *
+   *
+   *     FT_Init_FreeType( &library );
+   *
+   *     FT_Property_Set( library, "cff",
+   *                               "hinting-engine", &hinting_engine );
+   *   }
+   *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_CFF_HINTING_XXX
+   *
+   * @description:
+   *   A list of constants used for the @hinting-engine property to select
+   *   the hinting engine for CFF fonts.
+   *
+   * @values:
+   *   FT_CFF_HINTING_FREETYPE ::
+   *     Use the old FreeType hinting engine.
+   *
+   *   FT_CFF_HINTING_ADOBE ::
+   *     Use the hinting engine contributed by Adobe.
+   *
+   */
+#define FT_CFF_HINTING_FREETYPE  0
+#define FT_CFF_HINTING_ADOBE     1
+
+
+  /**************************************************************************
+   *
+   * @property:
+   *   no-stem-darkening
+   *
+   * @description:
+   *   By default, the Adobe CFF engine darkens stems at smaller sizes,
+   *   regardless of hinting, to enhance contrast.  This feature requires
+   *   a rendering system with proper gamma correction.  Setting this
+   *   property, stem darkening gets switched off.
+   *
+   *   Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set.
+   *
+   *   {
+   *     FT_Library  library;
+   *     FT_Bool     no_stem_darkening = TRUE;
+   *
+   *
+   *     FT_Init_FreeType( &library );
+   *
+   *     FT_Property_Set( library, "cff",
+   *                               "no-stem-darkening", &no_stem_darkening );
+   *   }
+   *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * @property:
+   *   darkening-parameters
+   *
+   * @description:
+   *   By default, the Adobe CFF engine darkens stems as follows (if the
+   *   `no-stem-darkening' property isn't set):
+   *
+   *   {
+   *     stem width <= 0.5px:   darkening amount = 0.4px
+   *     stem width  = 1px:     darkening amount = 0.275px
+   *     stem width  = 1.667px: darkening amount = 0.275px
+   *     stem width >= 2.333px: darkening amount = 0px
+   *   }
+   *
+   *   and piecewise linear in-between.  Using the `darkening-parameters'
+   *   property, these four control points can be changed, as the following
+   *   example demonstrates.
+   *
+   *   {
+   *     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, "cff",
+   *                               "darkening-parameters", darken_params );
+   *   }
+   *
+   *   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
+   *   positive; the x~values must be monotonically increasing; the
+   *   y~values must be monotonically decreasing and smaller than or
+   *   equal to 500 (corresponding to half a pixel); the slope of each
+   *   linear piece must be shallower than -1 (e.g., -.4).
+   *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   */
+
+
+ /* */
+
+FT_END_HEADER
+
+
+#endif /* __FTCFFDRV_H__ */
+
+
+/* END */
@@ -1,7 +1,7 @@
 /***************************************************************************/
 /*                                                                         */
 /* This file defines the structure of the FreeType reference.              */
-/* It is used by the python script which generates the HTML files.         */
+/* It is used by the python script that generates the HTML files.          */
 /*                                                                         */
 /***************************************************************************/
 
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType convenience functions to handle glyphs (specification).     */
 /*                                                                         */
-/*  Copyright 1996-2003, 2006, 2008, 2009, 2011 by                         */
+/*  Copyright 1996-2003, 2006, 2008, 2009, 2011, 2013 by                   */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -358,17 +358,17 @@ FT_BEGIN_HEADER
   /*    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  */
-  /*    which contains Bézier outside arcs).                               */
+  /*    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.         */
+  /*    `ftbbox' component, which is dedicated to this single task.        */
   /*                                                                       */
   /* <Input>                                                               */
   /*    glyph :: A handle to the source glyph object.                      */
   /*                                                                       */
-  /*    mode  :: The mode which indicates how to interpret the returned    */
+  /*    mode  :: The mode that indicates how to interpret the returned     */
   /*             bounding box values.                                      */
   /*                                                                       */
   /* <Output>                                                              */
@@ -388,7 +388,7 @@ FT_BEGIN_HEADER
   /*    @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  */
+  /*    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  */
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
 /*                                                                         */
-/*  Copyright 2004, 2005, 2006 by                                          */
+/*  Copyright 2004-2006, 2013 by                                           */
 /*  Masatake YAMATO, Redhat K.K,                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
@@ -180,7 +180,7 @@ FT_BEGIN_HEADER
   *
   * @description:
   *    Validate various TrueTypeGX tables to assure that all offsets and
-  *    indices are valid.  The idea is that a higher-level library which
+  *    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).
   *
@@ -189,7 +189,7 @@ FT_BEGIN_HEADER
   *       A handle to the input face.
   *
   *    validation_flags ::
-  *       A bit field which specifies the tables to be validated.  See
+  *       A bit field that specifies the tables to be validated.  See
   *       @FT_VALIDATE_GXXXX for possible values.
   *
   *    table_length ::
@@ -286,7 +286,7 @@ FT_BEGIN_HEADER
   *
   * @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 which
+  *    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).
   *
@@ -299,7 +299,7 @@ FT_BEGIN_HEADER
   *       A handle to the input face.
   *
   *    validation_flags ::
-  *       A bit field which specifies the dialect to be validated.  See
+  *       A bit field that specifies the dialect to be validated.  See
   *       @FT_VALIDATE_CKERNXXX for possible values.
   *
   * @output:
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Gzip-compressed stream support.                                      */
 /*                                                                         */
-/*  Copyright 2002, 2003, 2004, 2006 by                                    */
+/*  Copyright 2002-2004, 2006, 2013 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -91,6 +91,53 @@ FT_BEGIN_HEADER
   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 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.
+  */
+  FT_EXPORT( FT_Error )
+  FT_Gzip_Uncompress( FT_Memory       memory,
+                      FT_Byte*        output,
+                      FT_ULong*       output_len,
+                      const FT_Byte*  input,
+                      FT_ULong        input_len );
+
+
  /* */
 
 
@@ -555,7 +555,7 @@ FT_BEGIN_HEADER
   /* <Input>                                                               */
   /*    to   :: A pointer to the target point of the `move to'.            */
   /*                                                                       */
-  /*    user :: A typeless pointer which is passed from the caller of the  */
+  /*    user :: A typeless pointer, which is passed from the caller of the */
   /*            decomposition function.                                    */
   /*                                                                       */
   /* <Return>                                                              */
@@ -582,7 +582,7 @@ FT_BEGIN_HEADER
   /* <Input>                                                               */
   /*    to   :: A pointer to the target point of the `line to'.            */
   /*                                                                       */
-  /*    user :: A typeless pointer which is passed from the caller of the  */
+  /*    user :: A typeless pointer, which is passed from the caller of the */
   /*            decomposition function.                                    */
   /*                                                                       */
   /* <Return>                                                              */
@@ -613,7 +613,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*    to      :: A pointer to the target end point of the conic arc.     */
   /*                                                                       */
-  /*    user    :: A typeless pointer which is passed from the caller of   */
+  /*    user    :: A typeless pointer, which is passed from the caller of  */
   /*               the decomposition function.                             */
   /*                                                                       */
   /* <Return>                                                              */
@@ -645,7 +645,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /*    to       :: A pointer to the target end point.                     */
   /*                                                                       */
-  /*    user     :: A typeless pointer which is passed from the caller of  */
+  /*    user     :: A typeless pointer, which is passed from the caller of */
   /*                the decomposition function.                            */
   /*                                                                       */
   /* <Return>                                                              */
@@ -836,8 +836,8 @@ FT_BEGIN_HEADER
   /* a 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 `freetype/ftrender.h' for   */
-  /* more details on renderers.                                            */
+  /* specific modules called `renderers'.  See `ftrender.h' for more       */
+  /* details on renderers.                                                 */
   /*                                                                       */
   /*************************************************************************/
 
@@ -891,8 +891,8 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /* <Note>                                                                */
   /*    This structure is used by the span drawing callback type named     */
-  /*    @FT_SpanFunc which takes the y~coordinate of the span as a         */
-  /*    a parameter.                                                       */
+  /*    @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.             */
@@ -1265,7 +1265,7 @@ FT_BEGIN_HEADER
   /*    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 which support direct */
+  /*         for examples of distinct implementations that support direct  */
   /*         composition).                                                 */
   /*                                                                       */
   typedef int
@@ -5,7 +5,7 @@
 /*    FreeType API for color filtering of subpixel bitmap glyphs           */
 /*    (specification).                                                     */
 /*                                                                         */
-/*  Copyright 2006, 2007, 2008, 2010 by                                    */
+/*  Copyright 2006-2008, 2010, 2013 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -45,9 +45,9 @@ FT_BEGIN_HEADER
    *
    * @description:
    *   The @FT_Library_SetLcdFilter API can be used to specify a low-pass
-   *   filter which is then applied to LCD-optimized bitmaps generated
+   *   filter, which is then applied to LCD-optimized bitmaps generated
    *   through @FT_Render_Glyph.  This is useful to reduce color fringes
-   *   which would occur with unfiltered rendering.
+   *   that would occur with unfiltered rendering.
    *
    *   Note that no filter is active by default, and that this function is
    *   *not* implemented in default builds of the library.  You need to
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Generic list support for FreeType (specification).                   */
 /*                                                                         */
-/*  Copyright 1996-2001, 2003, 2007, 2010 by                               */
+/*  Copyright 1996-2001, 2003, 2007, 2010, 2013 by                         */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -173,7 +173,7 @@ FT_BEGIN_HEADER
   /*    FT_List_Iterator                                                   */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    An FT_List iterator function which is called during a list parse   */
+  /*    An FT_List iterator function that is called during a list parse    */
   /*    by @FT_List_Iterate.                                               */
   /*                                                                       */
   /* <Input>                                                               */
@@ -200,7 +200,7 @@ FT_BEGIN_HEADER
   /* <Input>                                                               */
   /*    list     :: A handle to the list.                                  */
   /*    iterator :: An iterator function, called on each node of the list. */
-  /*    user     :: A user-supplied field which is passed as the second    */
+  /*    user     :: A user-supplied field that is passed as the second     */
   /*                argument to the iterator.                              */
   /*                                                                       */
   /* <Return>                                                              */
@@ -218,7 +218,7 @@ FT_BEGIN_HEADER
   /*    FT_List_Destructor                                                 */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    An @FT_List iterator function which is called during a list        */
+  /*    An @FT_List iterator function that is called during a list         */
   /*    finalization by @FT_List_Finalize to destroy all elements in a     */
   /*    given list.                                                        */
   /*                                                                       */
@@ -250,9 +250,9 @@ FT_BEGIN_HEADER
   /*    destroy :: A list destructor that will be applied to each element  */
   /*               of the list.                                            */
   /*                                                                       */
-  /*    memory  :: The current memory object which handles deallocation.   */
+  /*    memory  :: The current memory object that handles deallocation.    */
   /*                                                                       */
-  /*    user    :: A user-supplied field which is passed as the last       */
+  /*    user    :: A user-supplied field that is passed as the last        */
   /*               argument to the destructor.                             */
   /*                                                                       */
   /* <Note>                                                                */
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Additional Mac-specific API.                                         */
 /*                                                                         */
-/*  Copyright 1996-2001, 2004, 2006, 2007 by                               */
+/*  Copyright 1996-2001, 2004, 2006, 2007, 2013 by                         */
 /*  Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.     */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -18,7 +18,7 @@
 
 /***************************************************************************/
 /*                                                                         */
-/* NOTE: Include this file after <freetype/freetype.h> and after any       */
+/* 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.)                                      */
 /*                                                                         */
@@ -168,7 +168,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /* <Description>                                                         */
   /*    Return a pathname of the disk file and face index for given font   */
-  /*    name which is handled by ATS framework.                            */
+  /*    name that is handled by ATS framework.                             */
   /*                                                                       */
   /* <Input>                                                               */
   /*    fontName    :: Mac OS name of the font in ATS framework.           */
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType Multiple Master font interface (specification).             */
 /*                                                                         */
-/*  Copyright 1996-2001, 2003, 2004, 2006, 2009 by                         */
+/*  Copyright 1996-2001, 2003, 2004, 2006, 2009, 2013 by                   */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -196,7 +196,7 @@ FT_BEGIN_HEADER
   /*                       number of designs).                             */
   /*                                                                       */
   /*    num_namedstyles :: The number of named styles; only meaningful for */
-  /*                       GX which allows certain design coordinates to   */
+  /*                       GX that allows certain design coordinates to    */
   /*                       have a string ID (in the `name' table)          */
   /*                       associated with them.  The font can tell the    */
   /*                       user that, for example, Weight=1.5 is `Bold'.   */
@@ -258,8 +258,7 @@ FT_BEGIN_HEADER
   /*                                                                       */
   /* <Output>                                                              */
   /*    amaster :: The Multiple Masters/GX var descriptor.                 */
-  /*               Allocates a data structure, which the user must free    */
-  /*               (a single call to FT_FREE will do it).                  */
+  /*               Allocates a data structure, which the user must free.   */
   /*                                                                       */
   /* <Return>                                                              */
   /*    FreeType error code.  0~means success.                             */
@@ -298,7 +298,7 @@ FT_BEGIN_HEADER
    *       Note that only a few modules have properties.
    *
    *    value ::
-   *       A generic pointer to a variable or structure which gives the new
+   *       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 the `Synopsis' subsection of the
    *       module's documentation.
@@ -364,7 +364,7 @@ FT_BEGIN_HEADER
    *
    * @inout:
    *    value ::
-   *       A generic pointer to a variable or structure which gives the
+   *       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 the `Synopsis' subsection of the
    *       module's documentation.
@@ -418,7 +418,7 @@ FT_BEGIN_HEADER
   /*    @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 which    */
+  /*    This function helps in managing life-cycles of structures that     */
   /*    reference @FT_Library objects.                                     */
   /*                                                                       */
   /* <Input>                                                               */
@@ -584,7 +584,7 @@ FT_BEGIN_HEADER
    *       The library implements a bytecode interpreter that doesn't
    *       support the patented operations of the TrueType virtual machine.
    *
-   *       Its main use is to load certain Asian fonts which position and
+   *       Its main use is to load certain Asian fonts that position and
    *       scale glyph components with bytecode instructions.  It produces
    *       bad output for most other fonts.
    *
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType API for validating OpenType tables (specification).         */
 /*                                                                         */
-/*  Copyright 2004, 2005, 2006, 2007 by                                    */
+/*  Copyright 2004-2007, 2013 by                                           */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -116,7 +116,7 @@ FT_BEGIN_HEADER
   *
   * @description:
   *    Validate various OpenType tables to assure that all offsets and
-  *    indices are valid.  The idea is that a higher-level library which
+  *    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).
   *
@@ -125,7 +125,7 @@ FT_BEGIN_HEADER
   *       A handle to the input face.
   *
   *    validation_flags ::
-  *       A bit field which specifies the tables to be validated.  See
+  *       A bit field that specifies the tables to be validated.  See
   *       @FT_VALIDATE_OTXXX for possible values.
   *
   * @output:
@@ -5,7 +5,7 @@
 /*    Support for the FT_Outline type used to store glyph shapes of        */
 /*    most scalable font formats (specification).                          */
 /*                                                                         */
-/*  Copyright 1996-2003, 2005-2012 by                                      */
+/*  Copyright 1996-2003, 2005-2013 by                                      */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -97,7 +97,7 @@ FT_BEGIN_HEADER
   /*                      operations.                                      */
   /*                                                                       */
   /* <InOut>                                                               */
-  /*    user           :: A typeless pointer which is passed to each       */
+  /*    user           :: A typeless pointer that is passed to each        */
   /*                      emitter during the decomposition.  It can be     */
   /*                      used to store the state during the               */
   /*                      decomposition.                                   */
@@ -105,6 +105,13 @@ FT_BEGIN_HEADER
   /* <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).                             */
+  /*                                                                       */
   FT_EXPORT( FT_Error )
   FT_Outline_Decompose( FT_Outline*              outline,
                         const FT_Outline_Funcs*  func_interface,
@@ -217,12 +224,12 @@ FT_BEGIN_HEADER
   /*    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  */
-  /*    which contains Bézier outside arcs).                               */
+  /*    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.         */
+  /*    `ftbbox' component, which is dedicated to this single task.        */
   /*                                                                       */
   /* <Input>                                                               */
   /*    outline :: A pointer to the source outline descriptor.             */
@@ -525,9 +532,11 @@ FT_BEGIN_HEADER
   *
   * @description:
   *   This function analyzes a glyph outline and tries to compute its
-  *   fill orientation (see @FT_Orientation).  This is done by computing
-  *   the direction of each global horizontal and/or vertical extrema
-  *   within the outline.
+  *   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.
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType size objects management (specification).                    */
 /*                                                                         */
-/*  Copyright 1996-2001, 2003, 2004, 2006, 2009 by                         */
+/*  Copyright 1996-2001, 2003, 2004, 2006, 2009, 2013 by                   */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -129,7 +129,7 @@ FT_BEGIN_HEADER
   /* <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 which has been    */
+  /*    @FT_Load_Glyph or @FT_Load_Ch