From 7801477910b96a6df1b55f556976e0b96a34bf71 Mon Sep 17 00:00:00 2001 From: Youngbok Shin Date: Mon, 22 Aug 2016 14:19:50 +0900 Subject: [PATCH] Imported Upstream version 2.6.5 --- CMakeLists.txt | 319 +- ChangeLog | 7120 ++++++++++--------- ChangeLog.20 | 20 +- ChangeLog.21 | 84 +- ChangeLog.22 | 32 +- ChangeLog.23 | 98 +- ChangeLog.24 | 58 +- ChangeLog.25 | 5161 ++++++++++++++ Jamfile | 52 +- Jamrules | 2 +- Makefile | 2 +- README | 11 +- README.git | 2 +- autogen.sh | 5 +- builds/amiga/README | 17 +- builds/amiga/include/config/ftconfig.h | 8 +- builds/amiga/include/config/ftmodule.h | 2 +- builds/amiga/makefile | 20 +- builds/amiga/makefile.os4 | 20 +- builds/amiga/smakefile | 14 +- builds/amiga/src/base/ftdebug.c | 4 +- builds/amiga/src/base/ftsystem.c | 2 +- builds/ansi/ansi-def.mk | 2 +- builds/ansi/ansi.mk | 2 +- builds/atari/ATARI.H | 2 +- builds/atari/README.TXT | 8 +- builds/beos/beos-def.mk | 2 +- builds/beos/beos.mk | 2 +- builds/beos/detect.mk | 2 +- builds/cmake/FindHarfBuzz.cmake | 72 + builds/cmake/iOS.cmake | 7 +- builds/cmake/testbuild.sh | 157 + builds/compiler/ansi-cc.mk | 2 +- builds/compiler/bcc-dev.mk | 2 +- builds/compiler/bcc.mk | 2 +- builds/compiler/emx.mk | 2 +- builds/compiler/gcc-dev.mk | 2 +- builds/compiler/gcc.mk | 2 +- builds/compiler/intelc.mk | 2 +- builds/compiler/unix-lcc.mk | 2 +- builds/compiler/visualage.mk | 2 +- builds/compiler/visualc.mk | 2 +- builds/compiler/watcom.mk | 2 +- builds/compiler/win-lcc.mk | 2 +- builds/detect.mk | 2 +- builds/dos/detect.mk | 2 +- builds/dos/dos-def.mk | 2 +- builds/dos/dos-emx.mk | 2 +- builds/dos/dos-gcc.mk | 2 +- builds/dos/dos-wat.mk | 2 +- builds/exports.mk | 8 +- builds/freetype.mk | 36 +- builds/link_dos.mk | 2 +- builds/link_std.mk | 2 +- builds/mac/FreeType.m68k_cfm.make.txt | 6 +- builds/mac/FreeType.m68k_far.make.txt | 6 +- builds/mac/FreeType.ppc_carbon.make.txt | 6 +- builds/mac/FreeType.ppc_classic.make.txt | 6 +- builds/mac/ftmac.c | 2 +- builds/modules.mk | 2 +- builds/os2/detect.mk | 2 +- builds/os2/os2-def.mk | 2 +- builds/os2/os2-dev.mk | 2 +- builds/os2/os2-gcc.mk | 2 +- builds/symbian/bld.inf | 94 +- builds/symbian/freetype.mmp | 3 +- builds/toplevel.mk | 44 +- builds/unix/aclocal.m4 | 662 +- builds/unix/config.guess | 159 +- builds/unix/config.sub | 48 +- builds/unix/configure | 764 +- builds/unix/configure.ac | 108 +- builds/unix/configure.raw | 106 +- builds/unix/detect.mk | 8 +- builds/unix/freetype-config.in | 12 +- builds/unix/freetype2.in | 4 +- builds/unix/freetype2.m4 | 2 +- builds/unix/ft-munmap.m4 | 2 +- builds/unix/ftconfig.in | 39 +- builds/unix/ftsystem.c | 2 +- builds/unix/install-sh | 31 +- builds/unix/install.mk | 52 +- builds/unix/ltmain.sh | 173 +- builds/unix/mkinstalldirs | 161 - builds/unix/unix-cc.in | 4 +- builds/unix/unix-def.in | 8 +- builds/unix/unix-dev.mk | 2 +- builds/unix/unix-lcc.mk | 2 +- builds/unix/unix.mk | 2 +- builds/unix/unixddef.mk | 2 +- builds/vms/ftconfig.h | 35 +- builds/vms/ftsystem.c | 2 +- builds/wince/ftdebug.c | 6 +- builds/wince/vc2005-ce/freetype.sln | 1 - builds/wince/vc2005-ce/freetype.vcproj | 90 +- builds/wince/vc2005-ce/index.html | 14 +- builds/wince/vc2008-ce/freetype.sln | 1 - builds/wince/vc2008-ce/freetype.vcproj | 94 +- builds/wince/vc2008-ce/index.html | 14 +- builds/windows/detect.mk | 2 +- builds/windows/ftdebug.c | 6 +- builds/windows/vc2005/freetype.vcproj | 26 +- builds/windows/vc2005/index.html | 14 +- builds/windows/vc2008/freetype.vcproj | 30 +- builds/windows/vc2008/index.html | 14 +- builds/windows/vc2010/freetype.sln | 1 - builds/windows/vc2010/freetype.vcxproj | 38 +- builds/windows/vc2010/freetype.vcxproj.filters | 18 +- builds/windows/vc2010/index.html | 14 +- builds/windows/visualc/freetype.dsp | 38 +- builds/windows/visualc/freetype.vcproj | 30 +- builds/windows/visualc/index.html | 14 +- builds/windows/visualce/freetype.dsp | 38 +- builds/windows/visualce/freetype.vcproj | 102 +- builds/windows/visualce/index.html | 14 +- builds/windows/w32-bcc.mk | 2 +- builds/windows/w32-bccd.mk | 2 +- builds/windows/w32-dev.mk | 2 +- builds/windows/w32-gcc.mk | 2 +- builds/windows/w32-icc.mk | 2 +- builds/windows/w32-intl.mk | 2 +- builds/windows/w32-lcc.mk | 2 +- builds/windows/w32-mingw32.mk | 2 +- builds/windows/w32-vcc.mk | 2 +- builds/windows/w32-wat.mk | 2 +- builds/windows/win32-def.mk | 2 +- configure | 2 +- devel/ft2build.h | 10 +- devel/ftoption.h | 196 +- docs/CHANGES | 386 +- docs/CUSTOMIZE | 23 +- docs/DEBUG | 2 +- docs/FTL.TXT | 2 +- docs/INSTALL | 4 +- docs/INSTALL.ANY | 22 +- docs/INSTALL.CROSS | 4 +- docs/INSTALL.GNU | 2 +- docs/INSTALL.UNIX | 2 +- docs/INSTALL.VMS | 2 +- docs/LICENSE.TXT | 6 +- docs/TODO | 2 +- docs/{VERSION.DLL => VERSIONS.TXT} | 25 +- docs/formats.txt | 10 +- docs/freetype-config.1 | 2 +- docs/raster.txt | 2 +- docs/reference/ft2-auto_hinter.html | 75 +- docs/reference/ft2-base_interface.html | 498 +- docs/reference/ft2-basic_types.html | 95 +- docs/reference/ft2-bdf_fonts.html | 16 +- docs/reference/ft2-bitmap_handling.html | 34 +- docs/reference/ft2-bzip2.html | 8 +- docs/reference/ft2-cache_subsystem.html | 74 +- docs/reference/ft2-cff_driver.html | 23 +- docs/reference/ft2-cid_fonts.html | 14 +- docs/reference/ft2-computations.html | 62 +- docs/reference/ft2-error_code_values.html | 339 + docs/reference/ft2-error_enumerations.html | 144 + docs/reference/ft2-font_formats.html | 26 +- docs/reference/ft2-gasp_table.html | 10 +- docs/reference/ft2-glyph_management.html | 160 +- docs/reference/ft2-glyph_stroker.html | 50 +- docs/reference/ft2-glyph_variants.html | 16 +- docs/reference/ft2-gx_validation.html | 20 +- docs/reference/ft2-gzip.html | 12 +- docs/reference/ft2-header_file_macros.html | 119 +- docs/reference/ft2-header_inclusion.html | 14 +- docs/reference/ft2-incremental.html | 26 +- docs/reference/ft2-index.html | 548 +- docs/reference/ft2-lcd_filtering.html | 62 +- docs/reference/ft2-list_processing.html | 32 +- docs/reference/ft2-lzw.html | 8 +- docs/reference/ft2-mac_specific.html | 22 +- docs/reference/ft2-module_management.html | 86 +- docs/reference/ft2-multiple_masters.html | 42 +- docs/reference/ft2-ot_validation.html | 24 +- docs/reference/ft2-outline_processing.html | 62 +- docs/reference/ft2-pfr_fonts.html | 12 +- docs/reference/ft2-quick_advance.html | 14 +- docs/reference/ft2-raster.html | 36 +- docs/reference/ft2-sfnt_names.html | 16 +- docs/reference/ft2-sizes_management.html | 12 +- docs/reference/ft2-system_interface.html | 26 +- docs/reference/ft2-toc.html | 19 +- docs/reference/ft2-truetype_engine.html | 13 +- docs/reference/ft2-truetype_tables.html | 63 +- docs/reference/ft2-tt_driver.html | 147 +- docs/reference/ft2-type1_tables.html | 46 +- docs/reference/ft2-user_allocation.html | 6 +- docs/reference/ft2-version.html | 25 +- docs/reference/ft2-winfnt_fonts.html | 18 +- docs/release | 6 +- include/{ => freetype}/config/ftconfig.h | 35 +- include/{ => freetype}/config/ftheader.h | 137 +- include/{ => freetype}/config/ftmodule.h | 0 include/{ => freetype}/config/ftoption.h | 176 +- include/{ => freetype}/config/ftstdlib.h | 16 +- include/{ => freetype}/freetype.h | 432 +- include/{ => freetype}/ftadvanc.h | 10 +- include/{ => freetype}/ftautoh.h | 117 +- include/{ => freetype}/ftbbox.h | 8 +- include/{ => freetype}/ftbdf.h | 8 +- include/{ => freetype}/ftbitmap.h | 20 +- include/{ => freetype}/ftbzip2.h | 8 +- include/{ => freetype}/ftcache.h | 20 +- include/{ => freetype}/ftcffdrv.h | 26 +- include/{ => freetype}/ftchapters.h | 14 + include/{ => freetype}/ftcid.h | 13 +- include/{ => freetype}/fterrdef.h | 51 +- include/{ => freetype}/fterrors.h | 118 +- include/{ftxf86.h => freetype/ftfntfmt.h} | 39 +- include/{ => freetype}/ftgasp.h | 8 +- include/{ => freetype}/ftglyph.h | 8 +- include/{ => freetype}/ftgxval.h | 8 +- include/{ => freetype}/ftgzip.h | 18 +- include/{ => freetype}/ftimage.h | 32 +- include/{ => freetype}/ftincrem.h | 8 +- include/{ => freetype}/ftlcdfil.h | 187 +- include/{ => freetype}/ftlist.h | 8 +- include/{ => freetype}/ftlzw.h | 8 +- include/{ => freetype}/ftmac.h | 8 +- include/{ => freetype}/ftmm.h | 41 +- include/{ => freetype}/ftmodapi.h | 36 +- include/{ => freetype}/ftmoderr.h | 10 +- include/{ => freetype}/ftotval.h | 20 +- include/{ => freetype}/ftoutln.h | 12 +- include/{ => freetype}/ftpfr.h | 8 +- include/{ => freetype}/ftrender.h | 17 +- include/{ => freetype}/ftsizes.h | 8 +- include/{ => freetype}/ftsnames.h | 8 +- include/{ => freetype}/ftstroke.h | 8 +- include/{ => freetype}/ftsynth.h | 14 +- include/{ => freetype}/ftsystem.h | 10 +- include/{ => freetype}/fttrigon.h | 12 +- include/freetype/ftttdrv.h | 327 + include/{ => freetype}/fttypes.h | 8 +- include/{ => freetype}/ftwinfnt.h | 12 +- include/{ => freetype}/internal/autohint.h | 8 +- include/{ => freetype}/internal/ftcalc.h | 28 +- include/{ => freetype}/internal/ftdebug.h | 10 +- include/{ => freetype}/internal/ftdriver.h | 10 +- include/{ => freetype}/internal/ftgloadr.h | 60 +- include/freetype/internal/fthash.h | 136 + include/{ => freetype}/internal/ftmemory.h | 38 +- include/{ => freetype}/internal/ftobjs.h | 67 +- include/{ => freetype}/internal/ftpic.h | 8 +- include/{ => freetype}/internal/ftrfork.h | 14 +- include/{ => freetype}/internal/ftserv.h | 44 +- include/{ => freetype}/internal/ftstream.h | 10 +- include/{ => freetype}/internal/fttrace.h | 4 +- include/{ => freetype}/internal/ftvalid.h | 8 +- include/{ => freetype}/internal/internal.h | 46 +- include/{ => freetype}/internal/psaux.h | 28 +- include/{ => freetype}/internal/pshints.h | 10 +- include/{ => freetype}/internal/services/svbdf.h | 8 +- include/{ => freetype}/internal/services/svcid.h | 9 +- .../internal/services/svfntfmt.h} | 32 +- .../{ => freetype}/internal/services/svgldict.h | 11 +- include/{ => freetype}/internal/services/svgxval.h | 8 +- include/{ => freetype}/internal/services/svkern.h | 8 +- include/{ => freetype}/internal/services/svmm.h | 8 +- include/{ => freetype}/internal/services/svotval.h | 8 +- include/{ => freetype}/internal/services/svpfr.h | 8 +- .../{ => freetype}/internal/services/svpostnm.h | 8 +- include/{ => freetype}/internal/services/svprop.h | 8 +- .../{ => freetype}/internal/services/svpscmap.h | 8 +- .../{ => freetype}/internal/services/svpsinfo.h | 8 +- include/{ => freetype}/internal/services/svsfnt.h | 8 +- .../{ => freetype}/internal/services/svttcmap.h | 17 +- include/{ => freetype}/internal/services/svtteng.h | 8 +- .../{ => freetype}/internal/services/svttglyf.h | 9 +- .../{ => freetype}/internal/services/svwinfnt.h | 8 +- include/{ => freetype}/internal/sfnt.h | 53 +- include/{ => freetype}/internal/t1types.h | 28 +- include/{ => freetype}/internal/tttypes.h | 50 +- include/{ => freetype}/t1tables.h | 13 +- include/{ => freetype}/ttnameid.h | 10 +- include/{ => freetype}/tttables.h | 12 +- include/{ => freetype}/tttags.h | 8 +- include/{ => freetype}/ttunpat.h | 19 +- include/ft2build.h | 10 +- include/ftttdrv.h | 170 - modules.cfg | 58 +- src/Jamfile | 8 +- src/autofit/Jamfile | 20 +- src/autofit/afangles.c | 4 +- src/autofit/afblue.c | 398 +- src/autofit/afblue.cin | 2 +- src/autofit/afblue.dat | 529 +- src/autofit/afblue.h | 251 +- src/autofit/afblue.hin | 78 +- src/autofit/afcjk.c | 276 +- src/autofit/afcjk.h | 23 +- src/autofit/afcover.h | 2 +- src/autofit/afdummy.c | 8 +- src/autofit/afdummy.h | 8 +- src/autofit/aferrors.h | 11 +- src/autofit/afglobal.c | 121 +- src/autofit/afglobal.h | 45 +- src/autofit/afhints.c | 403 +- src/autofit/afhints.h | 83 +- src/autofit/afindic.c | 25 +- src/autofit/afindic.h | 8 +- src/autofit/aflatin.c | 1505 ++-- src/autofit/aflatin.h | 42 +- src/autofit/aflatin2.c | 104 +- src/autofit/aflatin2.h | 13 +- src/autofit/afloader.c | 491 +- src/autofit/afloader.h | 32 +- src/autofit/afmodule.c | 209 +- src/autofit/afmodule.h | 27 +- src/autofit/afpic.c | 4 +- src/autofit/afpic.h | 16 +- src/autofit/afranges.c | 720 +- src/autofit/afranges.h | 16 +- src/autofit/afscript.h | 204 +- src/autofit/{hbshim.c => afshaper.c} | 306 +- src/autofit/{hbshim.h => afshaper.h} | 42 +- src/autofit/afstyles.h | 169 +- src/autofit/aftypes.h | 111 +- src/autofit/afwarp.c | 10 +- src/autofit/afwarp.h | 10 +- src/autofit/afwrtsys.h | 8 +- src/autofit/autofit.c | 4 +- src/autofit/module.mk | 2 +- src/autofit/rules.mk | 11 +- src/base/Jamfile | 48 +- src/base/basepic.c | 2 +- src/base/basepic.h | 17 +- src/base/ftadvanc.c | 18 +- src/base/ftapi.c | 2 +- src/base/ftbase.c | 3 +- src/base/ftbase.h | 13 +- src/base/ftbbox.c | 9 +- src/base/ftbdf.c | 2 +- src/base/ftbitmap.c | 69 +- src/base/ftcalc.c | 442 +- src/base/ftcid.c | 3 +- src/base/ftdbgmem.c | 131 +- src/base/ftdebug.c | 6 +- src/base/{ftxf86.c => ftfntfmt.c} | 29 +- src/base/ftfstype.c | 2 +- src/base/ftgasp.c | 2 +- src/base/ftgloadr.c | 17 +- src/base/ftglyph.c | 30 +- src/base/ftgxval.c | 2 +- src/base/fthash.c | 339 + src/base/ftinit.c | 14 +- src/base/ftlcdfil.c | 39 +- src/base/ftmac.c | 15 +- src/base/ftmm.c | 2 +- src/base/ftobjs.c | 331 +- src/base/ftotval.c | 2 +- src/base/ftoutln.c | 183 +- src/base/ftpatent.c | 247 +- src/base/ftpfr.c | 2 +- src/base/ftpic.c | 2 +- src/base/ftrfork.c | 61 +- src/base/ftsnames.c | 2 +- src/base/ftstream.c | 90 +- src/base/ftstroke.c | 66 +- src/base/ftsynth.c | 2 +- src/base/ftsystem.c | 16 +- src/base/fttrigon.c | 78 +- src/base/fttype1.c | 2 +- src/base/ftutil.c | 14 +- src/base/ftwinfnt.c | 2 +- src/base/md5.c | 57 +- src/base/rules.mk | 8 +- src/bdf/Jamfile | 6 +- src/bdf/bdf.h | 41 +- src/bdf/bdfdrivr.c | 77 +- src/bdf/bdfdrivr.h | 8 +- src/bdf/bdferror.h | 8 +- src/bdf/bdflib.c | 629 +- src/bdf/rules.mk | 5 +- src/bzip2/Jamfile | 5 +- src/bzip2/ftbzip2.c | 30 +- src/bzip2/rules.mk | 9 +- src/cache/Jamfile | 16 +- src/cache/ftcache.c | 2 +- src/cache/ftcbasic.c | 28 +- src/cache/ftccache.c | 30 +- src/cache/ftccache.h | 48 +- src/cache/ftccback.h | 9 +- src/cache/ftccmap.c | 15 +- src/cache/ftcerror.h | 11 +- src/cache/ftcglyph.c | 6 +- src/cache/ftcglyph.h | 16 +- src/cache/ftcimage.c | 11 +- src/cache/ftcimage.h | 12 +- src/cache/ftcmanag.c | 27 +- src/cache/ftcmanag.h | 10 +- src/cache/ftcmru.c | 2 +- src/cache/ftcmru.h | 14 +- src/cache/ftcsbits.c | 12 +- src/cache/ftcsbits.h | 12 +- src/cache/rules.mk | 9 +- src/cff/Jamfile | 20 +- src/cff/cf2arrst.c | 4 +- src/cff/cf2arrst.h | 6 +- src/cff/cf2blues.h | 6 +- src/cff/cf2error.h | 10 +- src/cff/cf2fixed.h | 28 +- src/cff/cf2font.h | 14 +- src/cff/cf2ft.c | 33 +- src/cff/cf2ft.h | 12 +- src/cff/cf2glue.h | 6 +- src/cff/cf2hints.c | 11 +- src/cff/cf2hints.h | 8 +- src/cff/cf2intrp.c | 446 +- src/cff/cf2intrp.h | 6 +- src/cff/cf2read.h | 6 +- src/cff/cf2stack.c | 84 +- src/cff/cf2stack.h | 11 +- src/cff/cf2types.h | 6 +- src/cff/cff.c | 2 +- src/cff/cffcmap.c | 2 +- src/cff/cffcmap.h | 8 +- src/cff/cffdrivr.c | 182 +- src/cff/cffdrivr.h | 8 +- src/cff/cfferrs.h | 10 +- src/cff/cffgload.c | 288 +- src/cff/cffgload.h | 18 +- src/cff/cffload.c | 64 +- src/cff/cffload.h | 8 +- src/cff/cffobjs.c | 110 +- src/cff/cffobjs.h | 8 +- src/cff/cffparse.c | 296 +- src/cff/cffparse.h | 31 +- src/cff/cffpic.c | 2 +- src/cff/cffpic.h | 16 +- src/cff/cfftoken.h | 12 +- src/cff/cfftypes.h | 15 +- src/cff/module.mk | 2 +- src/cff/rules.mk | 7 +- src/cid/Jamfile | 9 +- src/cid/ciderrs.h | 10 +- src/cid/cidgload.c | 86 +- src/cid/cidgload.h | 8 +- src/cid/cidload.c | 205 +- src/cid/cidload.h | 10 +- src/cid/cidobjs.c | 18 +- src/cid/cidobjs.h | 8 +- src/cid/cidparse.c | 104 +- src/cid/cidparse.h | 12 +- src/cid/cidriver.c | 68 +- src/cid/cidriver.h | 8 +- src/cid/cidtoken.h | 2 +- src/cid/module.mk | 2 +- src/cid/rules.mk | 7 +- src/cid/type1cid.c | 2 +- src/gxvalid/Jamfile | 29 +- src/gxvalid/README | 2 +- src/gxvalid/gxvalid.c | 3 +- src/gxvalid/gxvalid.h | 9 +- src/gxvalid/gxvbsln.c | 5 +- src/gxvalid/gxvcommn.c | 48 +- src/gxvalid/gxvcommn.h | 18 +- src/gxvalid/gxverror.h | 12 +- src/gxvalid/gxvfeat.c | 2 +- src/gxvalid/gxvfeat.h | 9 +- src/gxvalid/gxvfgen.c | 3 +- src/gxvalid/gxvjust.c | 40 +- src/gxvalid/gxvkern.c | 12 +- src/gxvalid/gxvlcar.c | 11 +- src/gxvalid/gxvmod.c | 8 +- src/gxvalid/gxvmod.h | 9 +- src/gxvalid/gxvmort.c | 7 +- src/gxvalid/gxvmort.h | 9 +- src/gxvalid/gxvmort0.c | 3 +- src/gxvalid/gxvmort1.c | 7 +- src/gxvalid/gxvmort2.c | 5 +- src/gxvalid/gxvmort4.c | 3 +- src/gxvalid/gxvmort5.c | 3 +- src/gxvalid/gxvmorx.c | 4 +- src/gxvalid/gxvmorx.h | 9 +- src/gxvalid/gxvmorx0.c | 3 +- src/gxvalid/gxvmorx1.c | 7 +- src/gxvalid/gxvmorx2.c | 6 +- src/gxvalid/gxvmorx4.c | 3 +- src/gxvalid/gxvmorx5.c | 3 +- src/gxvalid/gxvopbd.c | 5 +- src/gxvalid/gxvprop.c | 5 +- src/gxvalid/gxvtrak.c | 14 +- src/gxvalid/module.mk | 6 +- src/gxvalid/rules.mk | 8 +- src/gzip/Jamfile | 2 +- src/gzip/ftgzip.c | 41 +- src/gzip/rules.mk | 11 +- src/gzip/zlib.h | 2 +- src/lzw/Jamfile | 2 +- src/lzw/ftlzw.c | 19 +- src/lzw/ftzopen.c | 5 +- src/lzw/ftzopen.h | 13 +- src/lzw/rules.mk | 10 +- src/otvalid/Jamfile | 12 +- src/otvalid/module.mk | 2 +- src/otvalid/otvalid.c | 2 +- src/otvalid/otvalid.h | 8 +- src/otvalid/otvbase.c | 2 +- src/otvalid/otvcommn.c | 4 +- src/otvalid/otvcommn.h | 8 +- src/otvalid/otverror.h | 10 +- src/otvalid/otvgdef.c | 4 +- src/otvalid/otvgpos.c | 10 +- src/otvalid/otvgpos.h | 8 +- src/otvalid/otvgsub.c | 10 +- src/otvalid/otvjstf.c | 2 +- src/otvalid/otvmath.c | 12 +- src/otvalid/otvmod.c | 4 +- src/otvalid/otvmod.h | 8 +- src/otvalid/rules.mk | 7 +- src/pcf/Jamfile | 7 +- src/pcf/pcf.h | 15 +- src/pcf/pcfdrivr.c | 109 +- src/pcf/pcfdrivr.h | 6 +- src/pcf/pcferror.h | 8 +- src/pcf/pcfread.c | 141 +- src/pcf/pcfread.h | 6 +- src/pcf/pcfutil.h | 6 +- src/pcf/rules.mk | 5 +- src/pfr/Jamfile | 10 +- src/pfr/module.mk | 2 +- src/pfr/pfr.c | 2 +- src/pfr/pfrcmap.c | 4 +- src/pfr/pfrcmap.h | 8 +- src/pfr/pfrdrivr.c | 59 +- src/pfr/pfrdrivr.h | 8 +- src/pfr/pfrerror.h | 10 +- src/pfr/pfrgload.c | 67 +- src/pfr/pfrgload.h | 8 +- src/pfr/pfrload.c | 203 +- src/pfr/pfrload.h | 25 +- src/pfr/pfrobjs.c | 59 +- src/pfr/pfrobjs.h | 8 +- src/pfr/pfrsbit.c | 268 +- src/pfr/pfrsbit.h | 8 +- src/pfr/pfrtypes.h | 126 +- src/pfr/rules.mk | 7 +- src/psaux/Jamfile | 10 +- src/psaux/afmparse.c | 45 +- src/psaux/afmparse.h | 11 +- src/psaux/module.mk | 2 +- src/psaux/psaux.c | 2 +- src/psaux/psauxerr.h | 10 +- src/psaux/psauxmod.c | 2 +- src/psaux/psauxmod.h | 8 +- src/psaux/psconv.c | 6 +- src/psaux/psconv.h | 8 +- src/psaux/psobjs.c | 51 +- src/psaux/psobjs.h | 18 +- src/psaux/rules.mk | 7 +- src/psaux/t1cmap.c | 10 +- src/psaux/t1cmap.h | 8 +- src/psaux/t1decode.c | 50 +- src/psaux/t1decode.h | 8 +- src/pshinter/Jamfile | 9 +- src/pshinter/module.mk | 2 +- src/pshinter/pshalgo.c | 147 +- src/pshinter/pshalgo.h | 55 +- src/pshinter/pshglob.c | 14 +- src/pshinter/pshglob.h | 8 +- src/pshinter/pshinter.c | 2 +- src/pshinter/pshmod.c | 2 +- src/pshinter/pshmod.h | 8 +- src/pshinter/pshnterr.h | 10 +- src/pshinter/pshpic.c | 2 +- src/pshinter/pshpic.h | 16 +- src/pshinter/pshrec.c | 190 +- src/pshinter/pshrec.h | 16 +- src/pshinter/rules.mk | 7 +- src/psnames/Jamfile | 6 +- src/psnames/module.mk | 2 +- src/psnames/psmodule.c | 36 +- src/psnames/psmodule.h | 8 +- src/psnames/psnamerr.h | 10 +- src/psnames/psnames.c | 2 +- src/psnames/pspic.c | 2 +- src/psnames/pspic.h | 18 +- src/psnames/pstables.h | 2 +- src/psnames/rules.mk | 7 +- src/raster/Jamfile | 7 +- src/raster/ftmisc.h | 12 +- src/raster/ftraster.c | 791 +-- src/raster/ftraster.h | 10 +- src/raster/ftrend1.c | 114 +- src/raster/ftrend1.h | 14 +- src/raster/module.mk | 2 +- src/raster/raster.c | 2 +- src/raster/rasterrs.h | 10 +- src/raster/rastpic.c | 22 +- src/raster/rastpic.h | 18 +- src/raster/rules.mk | 7 +- src/sfnt/Jamfile | 15 +- src/sfnt/module.mk | 2 +- src/sfnt/pngshim.c | 35 +- src/sfnt/pngshim.h | 9 +- src/sfnt/rules.mk | 7 +- src/sfnt/sfdriver.c | 30 +- src/sfnt/sfdriver.h | 8 +- src/sfnt/sferrors.h | 11 +- src/sfnt/sfnt.c | 2 +- src/sfnt/sfntpic.c | 2 +- src/sfnt/sfntpic.h | 20 +- src/sfnt/sfobjs.c | 185 +- src/sfnt/sfobjs.h | 17 +- src/sfnt/ttbdf.c | 2 +- src/sfnt/ttbdf.h | 8 +- src/sfnt/ttcmap.c | 382 +- src/sfnt/ttcmap.h | 8 +- src/sfnt/ttcmapc.h | 2 +- src/sfnt/ttkern.c | 6 +- src/sfnt/ttkern.h | 8 +- src/sfnt/ttload.c | 140 +- src/sfnt/ttload.h | 8 +- src/sfnt/ttmtx.c | 2 +- src/sfnt/ttmtx.h | 8 +- src/sfnt/ttpost.c | 36 +- src/sfnt/ttpost.h | 10 +- src/sfnt/ttsbit.c | 213 +- src/sfnt/ttsbit.h | 8 +- src/smooth/Jamfile | 7 +- src/smooth/ftgrays.c | 1047 +-- src/smooth/ftgrays.h | 10 +- src/smooth/ftsmerrs.h | 10 +- src/smooth/ftsmooth.c | 8 +- src/smooth/ftsmooth.h | 8 +- src/smooth/ftspic.c | 2 +- src/smooth/ftspic.h | 13 +- src/smooth/module.mk | 2 +- src/smooth/rules.mk | 8 +- src/smooth/smooth.c | 2 +- src/tools/afblue.pl | 17 +- src/tools/apinames.c | 6 +- src/tools/chktrcmp.py | 2 +- src/tools/docmaker/content.py | 30 +- src/tools/docmaker/docmaker.py | 2 +- src/tools/docmaker/formatter.py | 7 +- src/tools/docmaker/sources.py | 29 +- src/tools/docmaker/tohtml.py | 88 +- src/tools/docmaker/utils.py | 4 +- src/tools/ftfuzzer/README | 77 + src/tools/ftfuzzer/ftfuzzer.cc | 310 + src/tools/ftfuzzer/ftmutator.cc | 314 + src/tools/ftfuzzer/rasterfuzzer.cc | 129 + src/tools/ftfuzzer/runinput.cc | 58 + src/tools/glnames.py | 6 +- src/tools/no-copyright | 65 + src/tools/test_afm.c | 2 +- src/tools/update-copyright | 14 + src/tools/update-copyright-year | 135 + src/truetype/Jamfile | 12 +- src/truetype/module.mk | 2 +- src/truetype/rules.mk | 7 +- src/truetype/truetype.c | 2 +- src/truetype/ttdriver.c | 87 +- src/truetype/ttdriver.h | 8 +- src/truetype/tterrors.h | 11 +- src/truetype/ttgload.c | 794 ++- src/truetype/ttgload.h | 8 +- src/truetype/ttgxvar.c | 1105 ++- src/truetype/ttgxvar.h | 18 +- src/truetype/ttinterp.c | 7347 +++++++++----------- src/truetype/ttinterp.h | 208 +- src/truetype/ttobjs.c | 167 +- src/truetype/ttobjs.h | 33 +- src/truetype/ttpic.c | 2 +- src/truetype/ttpic.h | 18 +- src/truetype/ttpload.c | 40 +- src/truetype/ttpload.h | 8 +- src/truetype/ttsubpix.c | 92 +- src/truetype/ttsubpix.h | 53 +- src/type1/Jamfile | 10 +- src/type1/module.mk | 2 +- src/type1/rules.mk | 7 +- src/type1/t1afm.c | 26 +- src/type1/t1afm.h | 8 +- src/type1/t1driver.c | 134 +- src/type1/t1driver.h | 8 +- src/type1/t1errors.h | 10 +- src/type1/t1gload.c | 43 +- src/type1/t1gload.h | 8 +- src/type1/t1load.c | 380 +- src/type1/t1load.h | 9 +- src/type1/t1objs.c | 20 +- src/type1/t1objs.h | 8 +- src/type1/t1parse.c | 51 +- src/type1/t1parse.h | 14 +- src/type1/t1tokens.h | 2 +- src/type1/type1.c | 2 +- src/type42/Jamfile | 7 +- src/type42/module.mk | 2 +- src/type42/rules.mk | 7 +- src/type42/t42drivr.c | 55 +- src/type42/t42drivr.h | 9 +- src/type42/t42error.h | 10 +- src/type42/t42objs.c | 30 +- src/type42/t42objs.h | 10 +- src/type42/t42parse.c | 174 +- src/type42/t42parse.h | 13 +- src/type42/t42types.h | 11 +- src/type42/type42.c | 2 +- src/winfonts/Jamfile | 2 +- src/winfonts/fnterrs.h | 10 +- src/winfonts/module.mk | 2 +- src/winfonts/rules.mk | 7 +- src/winfonts/winfnt.c | 123 +- src/winfonts/winfnt.h | 8 +- vms_make.com | 14 +- 709 files changed, 34813 insertions(+), 19594 deletions(-) create mode 100644 ChangeLog.25 create mode 100644 builds/cmake/FindHarfBuzz.cmake create mode 100755 builds/cmake/testbuild.sh delete mode 100755 builds/unix/mkinstalldirs rename docs/{VERSION.DLL => VERSIONS.TXT} (87%) create mode 100644 docs/reference/ft2-error_code_values.html create mode 100644 docs/reference/ft2-error_enumerations.html rename include/{ => freetype}/config/ftconfig.h (94%) rename include/{ => freetype}/config/ftheader.h (87%) rename include/{ => freetype}/config/ftmodule.h (100%) rename include/{ => freetype}/config/ftoption.h (89%) rename include/{ => freetype}/config/ftstdlib.h (95%) rename include/{ => freetype}/freetype.h (91%) rename include/{ => freetype}/ftadvanc.h (98%) rename include/{ => freetype}/ftautoh.h (77%) rename include/{ => freetype}/ftbbox.h (97%) rename include/{ => freetype}/ftbdf.h (98%) rename include/{ => freetype}/ftbitmap.h (96%) rename include/{ => freetype}/ftbzip2.h (96%) rename include/{ => freetype}/ftcache.h (99%) rename include/{ => freetype}/ftcffdrv.h (95%) rename include/{ => freetype}/ftchapters.h (89%) rename include/{ => freetype}/ftcid.h (94%) rename include/{ => freetype}/fterrdef.h (81%) rename include/{ => freetype}/fterrors.h (56%) rename include/{ftxf86.h => freetype/ftfntfmt.h} (79%) rename include/{ => freetype}/ftgasp.h (97%) rename include/{ => freetype}/ftglyph.h (99%) rename include/{ => freetype}/ftgxval.h (98%) rename include/{ => freetype}/ftgzip.h (91%) rename include/{ => freetype}/ftimage.h (98%) rename include/{ => freetype}/ftincrem.h (98%) rename include/{ => freetype}/ftlcdfil.h (52%) rename include/{ => freetype}/ftlist.h (99%) rename include/{ => freetype}/ftlzw.h (96%) rename include/{ => freetype}/ftmac.h (99%) rename include/{ => freetype}/ftmm.h (93%) rename include/{ => freetype}/ftmodapi.h (97%) rename include/{ => freetype}/ftmoderr.h (98%) rename include/{ => freetype}/ftotval.h (94%) rename include/{ => freetype}/ftoutln.h (99%) rename include/{ => freetype}/ftpfr.h (97%) rename include/{ => freetype}/ftrender.h (94%) rename include/{ => freetype}/ftsizes.h (98%) rename include/{ => freetype}/ftsnames.h (98%) rename include/{ => freetype}/ftstroke.h (99%) rename include/{ => freetype}/ftsynth.h (89%) rename include/{ => freetype}/ftsystem.h (98%) rename include/{ => freetype}/fttrigon.h (97%) create mode 100644 include/freetype/ftttdrv.h rename include/{ => freetype}/fttypes.h (99%) rename include/{ => freetype}/ftwinfnt.h (97%) rename include/{ => freetype}/internal/autohint.h (99%) rename include/{ => freetype}/internal/ftcalc.h (95%) rename include/{ => freetype}/internal/ftdebug.h (98%) rename include/{ => freetype}/internal/ftdriver.h (99%) rename include/{ => freetype}/internal/ftgloadr.h (74%) create mode 100644 include/freetype/internal/fthash.h rename include/{ => freetype}/internal/ftmemory.h (93%) rename include/{ => freetype}/internal/ftobjs.h (97%) rename include/{ => freetype}/internal/ftpic.h (94%) rename include/{ => freetype}/internal/ftrfork.h (98%) rename include/{ => freetype}/internal/ftserv.h (96%) rename include/{ => freetype}/internal/ftstream.h (99%) rename include/{ => freetype}/internal/fttrace.h (98%) rename include/{ => freetype}/internal/ftvalid.h (98%) rename include/{ => freetype}/internal/internal.h (60%) rename include/{ => freetype}/internal/psaux.h (98%) rename include/{ => freetype}/internal/pshints.h (99%) rename include/{ => freetype}/internal/services/svbdf.h (95%) rename include/{ => freetype}/internal/services/svcid.h (94%) rename include/{internal/services/svxf86nm.h => freetype/internal/services/svfntfmt.h} (65%) rename include/{ => freetype}/internal/services/svgldict.h (95%) rename include/{ => freetype}/internal/services/svgxval.h (95%) rename include/{ => freetype}/internal/services/svkern.h (92%) rename include/{ => freetype}/internal/services/svmm.h (97%) rename include/{ => freetype}/internal/services/svotval.h (93%) rename include/{ => freetype}/internal/services/svpfr.h (94%) rename include/{ => freetype}/internal/services/svpostnm.h (95%) rename include/{ => freetype}/internal/services/svprop.h (95%) rename include/{ => freetype}/internal/services/svpscmap.h (97%) rename include/{ => freetype}/internal/services/svpsinfo.h (96%) rename include/{ => freetype}/internal/services/svsfnt.h (96%) rename include/{ => freetype}/internal/services/svttcmap.h (89%) rename include/{ => freetype}/internal/services/svtteng.h (91%) rename include/{ => freetype}/internal/services/svttglyf.h (91%) rename include/{ => freetype}/internal/services/svwinfnt.h (91%) rename include/{ => freetype}/internal/sfnt.h (93%) rename include/{ => freetype}/internal/t1types.h (95%) rename include/{ => freetype}/internal/tttypes.h (98%) rename include/{ => freetype}/t1tables.h (98%) rename include/{ => freetype}/ttnameid.h (99%) rename include/{ => freetype}/tttables.h (99%) rename include/{ => freetype}/tttags.h (97%) rename include/{ => freetype}/ttunpat.h (78%) delete mode 100644 include/ftttdrv.h rename src/autofit/{hbshim.c => afshaper.c} (67%) rename src/autofit/{hbshim.h => afshaper.h} (57%) rename src/base/{ftxf86.c => ftfntfmt.c} (67%) create mode 100644 src/base/fthash.c create mode 100644 src/tools/ftfuzzer/README create mode 100644 src/tools/ftfuzzer/ftfuzzer.cc create mode 100644 src/tools/ftfuzzer/ftmutator.cc create mode 100644 src/tools/ftfuzzer/rasterfuzzer.cc create mode 100644 src/tools/ftfuzzer/runinput.cc create mode 100644 src/tools/no-copyright create mode 100755 src/tools/update-copyright create mode 100755 src/tools/update-copyright-year diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b859a5..0cd492a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ # CMakeLists.txt # -# Copyright 2013, 2014 by +# Copyright 2013-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # -# Written by John Cary +# Written originally by John Cary # # This file is part of the FreeType project, and may only be used, modified, # and distributed under the terms of the FreeType project license, @@ -12,46 +12,75 @@ # fully. # # -# Say +# As a preliminary, create a compilation directory and change into it, for +# example # -# cmake CMakeLists.txt +# mkdir ~/freetype2.compiled +# cd ~/freetype2.compiled +# +# Now you can say +# +# cmake # # to create a Makefile that builds a static version of the library. # # For a dynamic library, use # -# cmake CMakeLists.txt -DBUILD_SHARED_LIBS:BOOL=true +# cmake -D BUILD_SHARED_LIBS:BOOL=true # # For a framework on OS X, use # -# cmake CMakeLists.txt -DBUILD_FRAMEWORK:BOOL=true -G Xcode +# cmake -D BUILD_FRAMEWORK:BOOL=true -G Xcode # # instead. # # For an iOS static library, use # -# cmake CMakeLists.txt -DIOS_PLATFORM=OS -G Xcode +# cmake -D IOS_PLATFORM=OS -G Xcode # # or # -# cmake CMakeLists.txt -DIOS_PLATFORM=SIMULATOR -G Xcode +# cmake -D IOS_PLATFORM=SIMULATOR -G Xcode # # Please refer to the cmake manual for further options, in particular, how # to modify compilation and linking parameters. # # Some notes. # -# . `cmake' will overwrite FreeType's original (top-level) `Makefile' file. +# . `cmake' creates configuration files in +# +# /include/freetype/config +# +# which should be further modified if necessary. # # . You can use `cmake' directly on a freshly cloned FreeType git # repository. # -# . `CMakeLists.txt' is provided as-is since it is not used by the +# . `CMakeLists.txt' is provided as-is since it is normally not used by the # developer team. +# +# . If you want to disable the automatic generation of the distribution +# targets, add the `-D FREETYPE_NO_DIST=true' command line argument. +# +# . Set the `WITH_ZLIB', `WITH_BZip2', `WITH_PNG', and `WITH_HarfBuzz' +# CMake variables to `ON' or `OFF' to force or skip using a dependency. +# Leave a variable undefined (which is the default) to use the dependency +# only if it is available. Example: +# +# cmake ... -DWITH_ZLIB=ON -DWITH_HarfBuzz=OFF ... +# +# . Installation of FreeType can be controlled with the CMake variables +# `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' +# (this is compatible with the same CMake variables in zlib's CMake +# support). cmake_minimum_required(VERSION 2.6) + +include(CheckIncludeFile) + + # CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which # configures the base build environment and references the toolchain file if (APPLE) @@ -78,7 +107,7 @@ if (APPLE) set(BUILD_SHARED_LIBS OFF) set(CMAKE_TOOLCHAIN_FILE - ${PROJECT_SOURCE_DIR}/builds/cmake/iOS.cmake) + ${CMAKE_SOURCE_DIR}/builds/cmake/iOS.cmake) endif () else () if (DEFINED IOS_PLATFORM) @@ -86,8 +115,33 @@ else () endif () endif () + project(freetype) + +if (WIN32 AND NOT MINGW AND BUILD_SHARED_LIBS) + message(FATAL_ERROR "Building shared libraries on Windows needs MinGW") +endif () + +# Disallow in-source builds +if ("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") + message(FATAL_ERROR + " +In-source builds are not permitted! Make a separate folder for" + " building, e.g.," + " + mkdir build; cd build; cmake .." + " +Before that, remove the files created by this failed run with" + " + rm -rf CMakeCache.txt CMakeFiles") +endif () + + +# Add local cmake modules +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/builds/cmake) + + if (BUILD_FRAMEWORK) if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") message(FATAL_ERROR @@ -97,68 +151,149 @@ if (BUILD_FRAMEWORK) set(BUILD_SHARED_LIBS ON) endif () + set(VERSION_MAJOR "2") -set(VERSION_MINOR "5") +set(VERSION_MINOR "6") set(VERSION_PATCH "5") + set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) +set(SHARED_LIBRARY_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}) + # Compiler definitions for building the library add_definitions(-DFT2_BUILD_LIBRARY) + +# Find dependencies +foreach (d ZLIB BZip2 PNG HarfBuzz) + string(TOUPPER "${d}" D) + + if (DEFINED WITH_${d} OR DEFINED WITH_${D}) + if (WITH_${d} OR WITH_${D}) + find_package(${d} QUIET REQUIRED) + endif () + else () + find_package(${d} QUIET) + endif () + + if (${d}_FOUND OR ${D}_FOUND) + message(STATUS "Building with ${d}") + endif () +endforeach () + + +message(STATUS + "Creating directory ${PROJECT_BINARY_DIR}/include/freetype/config") +file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/include/freetype/config") + + +# Create the configuration file +message(STATUS + "Creating file ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h") + +if (UNIX) + check_include_file("unistd.h" HAVE_UNISTD_H) + check_include_file("fcntl.h" HAVE_FCNTL_H) + check_include_file("stdint.h" HAVE_STDINT_H) + + file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.in" + FTCONFIG_H) + if (HAVE_UNISTD_H) + string(REGEX REPLACE + "#undef +(HAVE_UNISTD_H)" "#define \\1" + FTCONFIG_H "${FTCONFIG_H}") + endif () + if (HAVE_FCNTL_H) + string(REGEX REPLACE + "#undef +(HAVE_FCNTL_H)" "#define \\1" + FTCONFIG_H "${FTCONFIG_H}") + endif () + if (HAVE_STDINT_H) + string(REGEX REPLACE + "#undef +(HAVE_STDINT_H)" "#define \\1" + FTCONFIG_H "${FTCONFIG_H}") + endif () + string(REPLACE "/undef " "#undef " + FTCONFIG_H "${FTCONFIG_H}") + file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new" + "${FTCONFIG_H}") +else () + file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h" + FTCONFIG_H) + file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new" + "${FTCONFIG_H}") +endif () +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h-new" + "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h") + + +# Create the options file +message(STATUS + "Creating file ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h") + +file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h" + FTOPTION_H) +if (ZLIB_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (BZIP2_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (PNG_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +if (HARFBUZZ_FOUND) + string(REGEX REPLACE + "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1" + FTOPTION_H "${FTOPTION_H}") +endif () +file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h-new" + "${FTOPTION_H}") +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h-new" + "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h") + + # Specify library include directories include_directories("${PROJECT_SOURCE_DIR}/include") +include_directories(BEFORE "${PROJECT_BINARY_DIR}/include") -# Create the configuration file -message(STATUS "Creating directory, ${PROJECT_BINARY_DIR}/include/freetype2.") -file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/include/freetype2) - -# For the auto-generated ftconfig.h file -include_directories(BEFORE "${PROJECT_BINARY_DIR}/include/freetype2") -message(STATUS "Creating ${PROJECT_BINARY_DIR}/include/freetype2/ftconfig.h.") -execute_process( - COMMAND sed -e "s/FT_CONFIG_OPTIONS_H//" -e "s/FT_CONFIG_STANDARD_LIBRARY_H//" -e "s?/undef ?#undef ?" - INPUT_FILE ${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.in - OUTPUT_FILE ${PROJECT_BINARY_DIR}/include/freetype2/ftconfig.h -) -file(GLOB PUBLIC_HEADERS "include/*.h") -file(GLOB PUBLIC_CONFIG_HEADERS "include/config/*.h") -file(GLOB PRIVATE_HEADERS "include/internal/*.h") +file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h") +file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h") +file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h") + set(BASE_SRCS src/autofit/autofit.c - src/base/ftadvanc.c + src/base/ftbase.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/ftfntfmt.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 src/bzip2/ftbzip2.c src/cache/ftcache.c @@ -170,7 +305,7 @@ set(BASE_SRCS src/pfr/pfr.c src/psaux/psaux.c src/pshinter/pshinter.c - src/psnames/psmodule.c + src/psnames/psnames.c src/raster/raster.c src/sfnt/sfnt.c src/smooth/smooth.c @@ -180,13 +315,14 @@ set(BASE_SRCS src/winfonts/winfnt.c ) -include_directories("src/truetype") -include_directories("src/sfnt") -include_directories("src/autofit") -include_directories("src/smooth") -include_directories("src/raster") -include_directories("src/psaux") -include_directories("src/psnames") +if (WIN32) + set(BASE_SRCS ${BASE_SRCS} builds/windows/ftdebug.c) +elseif (WINCE) + set(BASE_SRCS ${BASE_SRCS} builds/wince/ftdebug.c) +else () + set(BASE_SRCS ${BASE_SRCS} src/base/ftdebug.c) +endif () + if (BUILD_FRAMEWORK) set(BASE_SRCS @@ -195,6 +331,8 @@ if (BUILD_FRAMEWORK) ) endif () +set(CMAKE_DEBUG_POSTFIX d) + add_library(freetype ${PUBLIC_HEADERS} ${PUBLIC_CONFIG_HEADERS} @@ -202,6 +340,16 @@ add_library(freetype ${BASE_SRCS} ) + +if (BUILD_SHARED_LIBS) + set_target_properties(freetype PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${SHARED_LIBRARY_VERSION} + COMPILE_DEFINITIONS freetype_EXPORTS + ) +endif () + + if (BUILD_FRAMEWORK) set_property(SOURCE ${PUBLIC_CONFIG_HEADERS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/config @@ -214,18 +362,66 @@ if (BUILD_FRAMEWORK) ) endif () +if (NOT CMAKE_VERSION VERSION_LESS 2.8.11) + target_include_directories(freetype + PUBLIC $) +endif () + +if (CMAKE_VERSION VERSION_LESS 2.8.12) + set(MAYBE_PRIVATE "") +else () + set(MAYBE_PRIVATE "PRIVATE") +endif () + +if (ZLIB_FOUND) + target_link_libraries(freetype ${MAYBE_PRIVATE} ${ZLIB_LIBRARIES}) + include_directories(${ZLIB_INCLUDE_DIRS}) +endif () +if (BZIP2_FOUND) + target_link_libraries(freetype ${MAYBE_PRIVATE} ${BZIP2_LIBRARIES}) + include_directories(${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS +endif () +if (PNG_FOUND) + add_definitions(${PNG_DEFINITIONS}) + target_link_libraries(freetype ${MAYBE_PRIVATE} ${PNG_LIBRARIES}) + include_directories(${PNG_INCLUDE_DIRS}) +endif () +if (HARFBUZZ_FOUND) + target_link_libraries(freetype ${MAYBE_PRIVATE} ${HARFBUZZ_LIBRARIES}) + include_directories(${HARFBUZZ_INCLUDE_DIRS}) +endif () + + # Installations # Note the trailing slash in the argument to the `DIRECTORY' directive -install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ - DESTINATION include/freetype2 - PATTERN "internal" EXCLUDE -) -install(TARGETS freetype - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - FRAMEWORK DESTINATION Library/Frameworks -) +if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) + install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ + DESTINATION include/freetype2 + PATTERN "internal" EXCLUDE + PATTERN "ftconfig.h" EXCLUDE + PATTERN "ftoption.h" EXCLUDE + ) + install(FILES + ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h + ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h + DESTINATION include/freetype2/freetype/config + ) +endif () + +if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) + install(TARGETS freetype + EXPORT freetype-targets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + FRAMEWORK DESTINATION Library/Frameworks + ) + install(EXPORT freetype-targets + DESTINATION lib/cmake/freetype + FILE freetype-config.cmake + ) +endif () + # Packaging # CPack version numbers for release tarball name. @@ -247,7 +443,10 @@ set(CPACK_SOURCE_IGNORE_FILES set(CPACK_GENERATOR TGZ) include(CPack) -# add make dist target -add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) + +# Add `make dist' target if FREETYPE_DIST is set (which is the default) +if (NOT DEFINED FREETYPE_NO_DIST) + add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) +endif () # eof diff --git a/ChangeLog b/ChangeLog index 809b475..a8cba88 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,13 +1,15 @@ -2014-12-30 Werner Lemberg +2016-07-12 Werner Lemberg - * Version 2.5.5 released. + * Version 2.6.5 released. ========================= - Tag sources with `VER-2-5-5'. + Tag sources with `VER-2-6-5'. - * docs/VERSION.DLL: Update documentation and bump version number to - 2.5.5. + * include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Comment out. + + * docs/VERSION.TXT: Add entry for version 2.6.5. * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, builds/windows/vc2005/index.html, @@ -24,5126 +26,5596 @@ 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.4/2.5.5/, s/254/255/. + builds/wince/vc2008-ce/index.html: s/2.6.4/2.6.5/, s/264/265/. * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5. - * builds/unix/configure.raw (version_info): Set to 17:4:11. + * builds/unix/configure.raw (version_info): Set to 18:5:12. * CMakeLists.txt (VERSION_PATCH): Set to 5. + * docs/CHANGES: Updated. -2014-12-24 Alexei Podtelezhnikov +2016-07-09 suzuki toshiya - [base] Formatting and nanooptimizations. + [mac] Fix ftexport.sym target in Jamfile. - * src/base/ftcalc.c, - * src/base/fttrigon.c: Revise sign restoration. + * Jamfile: Update the directories of the header files scanned for + ftexport.sym. They were incorrect since the migration of the + header files, on 2015-06-22. Either inexisting include/cache + (removed on 2006-03-20) is not needed to be listed explicitly. + Now ftmac.h is scanned only in the case of Mac OS & Mac OS X. -2014-12-13 Werner Lemberg +2016-07-08 Alexei Podtelezhnikov - * src/pcf/pcfread.c (pcf_read_TOC): Improve fix from 2014-12-08. + [smooth] Sub-banding protocol revision. -2014-12-11 Werner Lemberg + Rasterization sub-banding is utilized at large sizes while using a + rather small fixed memory pool. Indeed it is possible to make an + educated guess how much memory is necessary at a given size for a + given glyph. It turns out that, for a large majority of European + glyphs, you should store about 8 times more boundary pixels than + their height. Or, vice versa, if your memory pool can hold 800 + pixels the band height should be 100 and you should sub-band + anything larger than that. Should you still run out of memory, + FreeType bisects the band but you have wasted some time. This is + what has been implemented in FreeType since the beginning. - * builds/toplevel.mk (dist): Use older POSIX standard for `tar'. + It was overlooked, however, that the top band could grow to twice + the default band size leading to unnecessary memory overflows there. + This commit fixes that. Now the bands are distributed more evenly + and cannot exceed the default size. - Apparently, BSD tar isn't capable yet of handling POSIX-1.2001 - (contrary to GNU tar), so force the POSIX-1.1988 format. + Now the magic number 8 is really suitable for rather simple European + scripts. For complex Chinese logograms the magic number should be + 13 but that is subject for another day. - Problem reported by Stephen Fisher . + * src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding + protocol. -2014-12-11 Werner Lemberg +2016-07-07 suzuki toshiya - * src/type42/t42parse.c (t42_parse_sfnts): Reject invalid TTF size. + [mac] Fix Savannah bug #48417. -2014-12-11 Werner Lemberg + Mac OS X linker throws errors when `-exported_symbol_list' input + file includes non-existing symbols. Reported by Ryan Schmidt. - * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix off-by-one check. + * builds/exports.mk: Exclude ftmac.h from the headers for apinames + by default. Include it when ftmac.c would be compiled. - Problem reported by Dennis Felsing . +2016-07-06 Werner Lemberg -2014-12-11 Werner Lemberg + * src/truetype/ttinterp.c (TInstruction_Function): Removed, unused. - * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size'. +2016-07-05 Werner Lemberg - Problem reported by Dennis Felsing . + * Version 2.6.4 released. + ========================= -2014-12-09 suzuki toshiya - [gxvalid] Fix a naming convention conflicting with ftvalid. + Tag sources with `VER-2-6-4'. - See previous changeset for otvalid. + * docs/VERSION.TXT: Update documentation and bump version number to + 2.6.4. - * src/gxvalid/{gxvcommn.h, gxvmort.h, gxvmorx.h}: Replace - `valid' by `gxvalid'. - * src/gxvalid/{gxvbsln.c, gxvcommn.c, gxvfeat.c, gxvjust.c, - gxvkern.c, gxvlcar.c, gxvmort.c, gxvmort0.c, gxvmort1.c, - gxvmort2.c, gxvmort4.c, gxvmort5.c, gxvmorx.c, gxvmorx0.c, - gxvmorx1.c, gxvmorx2.c, gxvmorx4.c, gxvmorx5.c, gxvopbd.c, - gxvprop.c, gxvtrak.c}: Replace `valid' by `gxvalid' if - it is typed as GXV_Validator. + * 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.6.3/2.6.4/, s/263/264/. -2014-12-09 suzuki toshiya + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. - [otvalid] Fix a naming convention conflicting with ftvalid. + * builds/unix/configure.raw (version_info): Set to 18:4:12. + * CMakeLists.txt (VERSION_PATCH): Set to 4. - Some prototypes in ftvalid.h use `valid' for the variables - typed as FT_Validator. Their implementations in src/base/ - ftobjs.c and utilizations in src/sfnt/ttcmap.c do similar. + * docs/CHANGES: Updated. - Some macros in otvcommn.h assume the exist of the variable - `valid' typed as OTV_Validator in the caller. +2016-07-05 Werner Lemberg - Mixing these two conventions cause invalid pointer conversion - and unexpected SEGV in longjmp. To prevent it, all variables - typed as OTV_Validator are renamed to `otvalid'. + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Fix compiler warning. - * src/otvalid/otvcommn.h: Replace `valid' by `otvalid'. - * src/otvalid/{otvcommn.c, otvbase.c, otvgdef.c, otvgpos.c, - otvgsub.c, otvjstf.c, otvmath.c}: Replace `valid' by `otvalid' - if it is typed as OTV_Validator. +2016-07-04 Alexei Podtelezhnikov -2014-12-09 suzuki toshiya + [smooth] Variable type revision (part 2). - [ftvalid] Introduce FT_THROW() in FT_INVALID_XXX macros. + * src/smooth/ftgrays.c (TArea): Restore original definition as `int'. + (gray_render_line) [FT_LONG64]: Updated. + (gray_convert_glyph): 32-bit band bisection stack should be 32 bands. + (gray_convert_glyph_inner): Trace successes and failures. - Original patch is designed by Werner Lemberg. Extra part - for otvalid and gxvalid are added by suzuki toshiya, see - discussion: - http://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00002.html - http://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00007.html +2016-07-04 Werner Lemberg - * include/internal/ftvalid.h: Introduce FT_THROW() in FT_INVALID_(). - * src/gxvalid/gxvcommn.h: Ditto. - * src/otvalid/otvcommn.h: Ditto. + [autofit] Handle single-point contours as segments. -2014-12-08 Werner Lemberg + Doing so allows us to link them to edges – some fonts like + `NotoSansGurmukhi-Regular' have such isolated points sitting exactly + on other outlines. - [pcf] Fix Savannah bug #43774. + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Don't + ignore one-point contours but handle them specially as one-point + segments. + (af_latin_hints_compute_edges): Append one-point segments to edges + if possible. - Work around `features' of X11's `pcfWriteFont' and `pcfReadFont' - functions. Since the PCF format doesn't have an official - specification, we have to exactly follow these functions' behaviour. +2016-07-02 Werner Lemberg - The problem was unveiled with a patch from 2014-11-06, fixing issue - #43547. + [autofit] Remove unused structure members. - * src/pcf/pcfread.c (pcf_read_TOC): Don't check table size for last - element. Instead, assign real size. + * src/autofit/afhints.h (AF_SegmentRec, AF_EdgeRec): Remove + `num_linked'. -2014-12-07 Werner Lemberg + * src/autofit/afcjk.c (af_cjk_hints_link_segments): Updated. - Work around a bug in Borland's C++ compiler. +2016-07-02 Werner Lemberg - See + [autofit] Update to Unicode 9.0.0. - http://qc.embarcadero.com/wc/qcmain.aspx?d=118998 + * src/autofit/afranges.c (af_arab_nonbase_uniranges, + af_cyrl_uniranges): Add new data. - for Borland's bug tracker entry. +2016-07-01 Alexei Podtelezhnikov - Reported by Yuliana Zigangirova , - http://lists.gnu.org/archive/html/freetype-devel/2014-04/msg00001.html. + [smooth] Variable type revision (part 1). - * include/internal/ftvalid.h (FT_ValidatorRec), src/smooth/ftgrays.c - (gray_TWorker_): Move `ft_jmp_buf' field to be the first element. + This patch restores original `TCoord' definition as `int' so that the + rendering pool is used more efficiently on LP64 platforms (unix). -2014-12-07 Werner Lemberg + * src/smooth/ftgrays.c (gray_TWorker, TCell, gray_TBand): Switch some + fields to `TCoord'. + (gray_find_cell, gray_render_scanline, gray_render_line, gray_hline, + gray_sweep, gray_convert_glyph): Updated. - */*: Decorate hex constants with `U' and `L' where appropriate. +2016-06-28 Alexei Podtelezhnikov -2014-12-07 Werner Lemberg + [smooth] Minor clean-ups. - [truetype] Prevent memory leak for buggy fonts. + * src/smooth/ftgrays.c (gray_TWorker): Remove redundant `ycount'. + (gray_sweep, gray_convert_glyph, gray_dump_cells): Updated. - * src/truetype/ttobjs.c (tt_size_done): Unconditionally call - `tt_size_done_bytecode'. +2016-06-27 Alexei Podtelezhnikov -2014-12-06 Werner Lemberg + [smooth] Minor clean-ups. - * Version 2.5.4 released. - ========================= + * src/smooth/ftgrays.c (gray_convert_glyph): Do not use volatile + qualifier. + (gray_raster_render): Move span initializations from here. + (gray_sweep): ... to here and remove unused `target' argument. +2016-06-26 Alexei Podtelezhnikov - Tag sources with `VER-2-5-4'. + [pcf] Fix handling of very large fonts (#47708). - * docs/VERSION.DLL: Update documentation and bump version number to - 2.5.4. + * src/pcf/pcfread.c (pcf_get_encodings): Make `encodingOffset' an + unsigned short. + Only reject `0xFFFF' as an invalid encoding offset. - * 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.3/2.5.4/, s/253/254/. +2016-06-25 Werner Lemberg - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. + [truetype] Really fix deallocation in case of error (#47726). - * builds/unix/configure.raw (version_info): Set to 17:3:11. - * CMakeLists.txt (VERSION_PATCH): Set to 4. - * docs/CHANGES: Updated. + * src/truetype/ttgload.c (load_truetype_glyph): Thinko; initialize + `outline.points' also. -2014-12-04 Werner Lemberg +2016-06-23 Alexei Podtelezhnikov - docs/CHANGES: Updated, formatted. + [smooth] Consolidate memory management. -2014-12-04 Dave Arnold + * src/smooth/ftgrays.c (gray_init_cells): Remove function. + (gray_TWorker): Remove fields that become local variables. + (gray_raster_render): Move rendering buffer declaration from here. + (gray_convert_glyph): ... to here and update accordingly. - [cff] Modify an FT_ASSERT. +2016-06-22 Alexei Podtelezhnikov - * src/cff/cf2hints.c (cf2_hintmap_map): After the fix for Savannah - bug #43661, the test font `...aspartam.otf' still triggers an - FT_ASSERT. Since hintmap still works with count==0, ... - (cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): ... add that term to - suppress the assert. + [smooth] Consolidate boundary checks. -2014-12-04 Dave Arnold + Removing the checks from `gray_hline' shaves 1% off rendering speed. - [cff] Fix Savannah bug #43661. + * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_MIN' and `FT_MAX'. + (gray_TWorker): No need to store `clip_box'. + (gray_hline): Remove unnecessary boundary checks. + (gray_convert_glyph): Move boundary checks from here. + (gray_raster_render): ... to here and consolidate. - * src/cff/cf2intrp.c (cf2_interpT2CharString) : Don't append to stem arrays after - hintmask is constructed. +2016-06-21 Alexei Podtelezhnikov - * src/cff/cf2hints.c (cf2_hintmap_build): Add defensive code to - avoid reading past end of hintmask. + [smooth] Use `FT_Outline_Get_CBox'. -2014-12-03 Werner Lemberg + * src/smooth/ftgrays.c [STANDALONE_]: Duplicate `FT_Outline_Get_CBox'. + (gray_compute_cbox): Remove this function. + (gray_convert_glyph): Update to use `FT_Outline_Get_CBox'. - docs/CHANGES: Updated. +2016-06-20 Werner Lemberg -2014-12-03 Werner Lemberg + [smooth] Remove compiler warnings. - [autofit] Better fix for conversion specifiers in debug messages. + * src/smooth/ftgrays.c (gray_convert_glyph): Fix reports from clang. - Using `%ld' for pointer differences causes warnings on 32bit - platforms. The correct type would be (the relatively new) `%td', - however, this is missing on some important platforms. +2016-06-20 Alexei Podtelezhnikov - This patch improves the change from 2014-11-28. + [smooth] Sanitize memory managenent. - * src/autofit/afhints.c (AF_INDEX_NUM): Use `int' typecast. Our - pointer differences are always sufficiently small. - (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, - af_glyph_hints_dump_edge): Revert to `%d' and use `AF_INDEX_NUM'. + * src/smooth/ftgrays.c (gray_convert_glyph): Cleaned up. -2014-12-03 Werner Lemberg +2016-06-18 Alexei Podtelezhnikov - FT_Sfnt_Tag: s/ft_sfnt_xxx/FT_SFNT_XXX/ for orthogonality. + [smooth] Remove `band_shoot' that never worked. - All public FreeType enumeration and flag values are uppercase... + * src/smooth/ftgrays.c (gray_TWorker): Remove `band_shoot'. + (gray_convert_glyph): Updated. - * include/tttables.h (FT_Sfnt_Tag): Implement it. For backwards - compatilibity, retain the old values as macros. +2016-06-17 Alexei Podtelezhnikov - * src/base/ftfstype.c (FT_Get_FSType_Flags), src/sfnt/sfdriver.c - (get_sfnt_table): Updated. + [raster, smooth] Handle FT_RENDER_POOL_SIZE better. -2014-12-02 Werner Lemberg + * src/raster/ftraster.c (FT_MAX_BLACK_POOL): New macro. + (ft_black_render): Updated. + * src/smooth/ftgrays.c (FT_MAX_GRAY_POOL): New macro. + (gray_raster_render): Updated. - * include/*: Improve structure of documentation. +2016-06-16 Werner Lemberg - . Add and update many `' tags. - . Apply various documentation fixes. - . Remove details to deprecated (or never implemented) data. + * src/base/md5.c: Updated to recent version. -2014-12-02 Werner Lemberg +2016-06-14 Alexei Podtelezhnikov - [docmaker] Always handle `' section elements. + * src/smooth/ftgrays.c (gray_hline): Optimize if-condition. - Previously, those elements were handled only for sections present in - a `' chapter element. +2016-06-13 Werner Lemberg - * src/tools/docmaker/content.py (ContentProcessor::finish): - Implement it. + [autofit] Add support for Cherokee script. -2014-12-02 Werner Lemberg + * src/autofit/afblue.dat: Add blue zone data for Cherokee. - [docmaker] Properly handle empty rows in Synopsis. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit - ` ' for empty fields. + * src/autofit/afscript.h: Add Cherokee standard characters. -2014-12-02 Werner Lemberg + * src/autofit/afranges.c: Add Cherokee data. - [docmaker] Thinko. + * src/autofit/afstyles.h: Add Cherokee data. - * src/tools/docmaker/content.py (DocBlock::get_markup_words_all): - Emit `/empty/' string for first element also. +2016-06-09 David Capello -2014-12-02 Werner Lemberg + [cmake] Avoid modifying `ftconfig.h' and `ftoption.h' files. - [docmaker] Honour empty lines in `' section element. + * CMakeLists.txt: Each time cmake is run those files are + modified and the whole FreeType library is recompiled. With this + change we change the files only if there are real modifications, so + we can avoid recompilations. - This greatly improves the readability of the `Synopsis' links. +2016-06-09 Werner Lemberg - * src/tools/docmaker/content.py (DocBlock::get_markup_words_all): - Insert string `/empty/' between items. + [bdf] Check number of properties (#48166). - * src/tools/docmaker/formatter.py (Formatter::section_dump): Make it - robust against nonexistent keys. + * src/bdf/bdflib.c (_bdf_parse_start): Implement. - * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit - empty elements for `/empty/'. +2016-06-08 Alexei Podtelezhnikov -2014-12-02 Werner Lemberg + [smooth] Re-enable new line renderer on 64-bit archs. - [docmaker] Ensure Python 3 compatibility. + * src/smooth/ftgrays.c (gray_render_line): Conditionally re-enable new + implementation, where it is safe from overflows. - * src/tools/docmaker/content.py (ContentProcessor::set_section, - ContentProcessor::finish): Replace `has_key' function with `in' - keyword. +2016-06-08 Alexei Podtelezhnikov - * src/tools/docmaker/formatter.py (Formatter::__init__): Replace - sorting function with a key generator. - (Formatter::add_identifier): Replace `has_key' function with `in' - keyword. + [smooth] Minor clean-ups. - * src/tools/docmaker/tohtml.py (HtmlFormatter::html_source_quote): - Replace `has_key' function with `in' keyword. - (HtmlFormatter::index_exit, HtmlFormatter::section_enter): Use - integer division. - s/<>/>/. + * src/smooth/ftgrays.c (gray_dump_cells): Move out of the way. + (gray_render_span): Remove spurious casts and streamline. - * src/tools/docmaker/utils.py: Import `itertools'. - (index_sort): Replaced by... - (index_key): ... this new key generator (doing exactly the same). +2016-06-07 Werner Lemberg -2014-11-29 Werner Lemberg + [autofit] Add support for Ethiopic script. - [docmaker] Don't output a block multiple times. + * src/autofit/afblue.dat: Add blue zone data for Ethiopic. - This bug was hidden by not processing all lines of `' blocks. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - * src/tools/docmaker/formatter.py (Formatter::section_dump): Filter - out field names. + * src/autofit/afscript.h: Add Ethiopic standard characters. -2014-11-29 Werner Lemberg + * src/autofit/afranges.c: Add Ethiopic data. - [docmaker] Use field values as HTML link targets where possible. + * src/autofit/afstyles.h: Add Ethiopic data. - * src/tools/docmaker/tohtml.py (HtmlFormatter::make_block_url): - Accept second, optional argument to specify a name. - (HtmlFormatter::html_source_quote): Link to field ID if possible. - (HtmlFormatter::print_html_field_list): Emit `id' attribute. +2016-06-07 Werner Lemberg -2014-11-29 Werner Lemberg + [autofit] Fix compilation with VS2016 (#48126). - [docmaker] Allow empty lines in `' blocks. + This compiler doesn't recognize the end-of-comment sequence `*/' if + it immediately follows non-ASCII characters. - Before this patch, the suggested order of entries stopped at the - first empty line. + * src/autofit/afscript.h: Ensure whitespace before `*/'. - Obviously, nobody noticed that this problem caused a much reduced - set of links in the `Synopsis' sections; in particular, the - `' blocks contain a lot of entries that wouldn't be listed - otherwise... +2016-06-04 Werner Lemberg - * src/tools/docmaker/content.py (DocBlock::get_markup_words_all): - New function to iterate over all items. - (DocSection::process): Use it. + Fix a test for named instances (#48122). -2014-11-29 Werner Lemberg + This was missed while giving negative face indices an extended + meaning. - * src/tools/docmaker/sources.py (column) [Format 2]: Fix regexp. + * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Implement. - After the single asterisk there must be no other immediately following - asterisk. +2016-05-31 Nikolaus Waxweiler -2014-11-29 Werner Lemberg + [truetype] Let SHPIX move points in the twilight zone in v40. - * src/tools/docmaker/tohtml.py: Improve CSS for vertical spacing. + * src/truetype/ttinterp.c (Ins_SHPIX): Allow SHPIX to move points in + the twilight zone. Otherwise, treat SHPIX the same as DELTAP. + Unbreaks various fonts such as older versions of Rokkitt and DTL + Argo T Light that would glitch severly after calling ALIGNRP after a + blocked SHPIX. -2014-11-29 Werner Lemberg +2016-05-30 Werner Lemberg - [docmaker] Improve HTML code for table of contents. + [type42] Support `CharStrings' entry format as created by LilyPond. - * src/tools/docmaker/tohtml.py: Introduce a new table class `toc', - together with proper CSS. + * src/type42/t42parse.c (t42_parse_charstrings): Handle entries + having the format -2014-11-29 Werner Lemberg + (foo) cvn 12345 def - [docmaker] Provide higher-level markup and simplify HTML. +2016-05-28 Werner Lemberg - * src/tools/docmaker/tohtml.py: Instead of using extraneous `
' - elements, use CSS descendants (of class `section') to format the - data. + * src/autofit/afranges.c: Remove `UL' postfix from hex numbers. - Also remove reduntant

and
elements, replacing them with - proper CSS. + Suggested by Alexei. `UL' is only needed for 16bit compilers, but + it seems noone is using this anymore (and we no longer test whether + FreeType compiles in such an environment). Otherwise, it is easy to + add the postfix to the `AF_UNICODE_RANGE' macro. - Globally reduce page width to 75%. +2016-05-26 Alexei Podtelezhnikov - (block_header): Rename

class to `section'. + [smooth] Shrink bisection stack. -2014-11-29 Werner Lemberg + The convergence of Bézier flatteners is fast with the deviation + from straight line being assymptotically cut 4-fold on each bisection. + This justifies smaller bisection stack size. - [docmaker] Add `top' links after blocks. + * src/smooth/ftgrays.c (gray_TWorker): Remove common `bez_stack'. + (gray_render_conic): Create and use conic `bez_stack'. Move back the + band analysis from... + (gray_conic_to): ... here. + (gray_render_cubic): Create and use cubic `bez_stack'. Move back the + band analysis from... + (gray_cubic_to): ... here. + (gray_move_to): Updated. - * src/tools/docmaker/tohtml.py (block_footer_middle): Implement it. +2016-05-25 Werner Lemberg -2014-11-29 Werner Lemberg + [autofit] Fixes for Armenian and Gujarati ranges. - * src/tools/docmaker/tohtml.py: Improve CSS for fields. + * src/autofit/afranges.c (af_armn_uniranges): Corrected. + (af_guru_nonbase_uniranges): Make U+0A3E a base character. - Make fields align horizontally relative to full line width. +2016-05-24 Werner Lemberg -2014-11-29 Werner Lemberg + [autofit] Add support for Armenian script. - * src/tools/docmaker/tohtml.py: Fix index and TOC templates. + * src/autofit/afblue.dat: Add blue zone data for Armenian. - This thinko was introduced 2014-11-27. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. -2014-11-28 Werner Lemberg + * src/autofit/afscript.h: Add Armenian standard characters. - [docmaker] Format field lists with CSS. + * src/autofit/afranges.c: Add Armenian data. - This also simplifies the inserted HTML code. + * src/autofit/afstyles.h: Add Armenian data. - * src/tools/docmaker/tohtml.py - (HtmlFormatter::print_html_field_list): Do it. +2016-05-23 Werner Lemberg -2014-11-28 suzuki toshiya + * builds/unix/unix-cc.in (LINK_LIBRARY): Use `-export-symbols'. - Fix compiler warning to the comparison between signed and - unsigned variable. + This was commented about 10 years ago – I think the reason then to + disable libtool's `-export-symbols' option was to give some badly + programmed applications access to internal FreeType functions. - * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Fix the comparison - between `ypos + ysize' and FT_INT_{MAX,MIN}. + I believe that we should no longer take care of such programs; the + number of symbols exported should be rather restricted as much as + possible. -2014-11-28 Werner Lemberg +2016-05-22 Werner Lemberg - [docmaker] Replace empty `' with CSS. + [autofit] Add blue-zone support for Gurmukhi script. - * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Do - it. + This essentially moves the Gurmukhi script from the `Indic' hinter to + the `Latin' hinter. -2014-11-28 Werner Lemberg + * src/autofit/afblue.dat: Add blue zone data for Gurmukhi. - [docmaker] Replace some `' tags with `

' and `
'. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - * src/tools/docmaker/tohtml.py (marker_*): Use `

'. - (source_*): Use `
'. - (HtmlFormatter::block_enter): s/

/

/. + * src/autofit/afscript.h: Add Gurmukhi standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. -2014-11-28 suzuki toshiya + * src/autofit/afranges.c: Move Gurmukhi data out of + AF_CONFIG_OPTION_INDIC block. - Fix compiler warning to conversion specifiers in debug messages. + * src/autofit/afstyles.h: Update Gurmukhi data; in particular, use + AF_WRITING_SYSTEM_LATIN. - * src/autofit/afhints.c (af_glyph_hints_dump_points): Add length - modifier to dump long integers. - (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Ditto. +2016-05-21 Werner Lemberg -2014-11-27 Werner Lemberg + Minor clang++ fixes. - * src/tools/docmaker/tohtml.py: Use more CSS for index. + * src/base/ftobjs.c (FT_Add_Module), src/psaux/psobjs.c + (ps_parser_load_field), src/type1/t1load.c (parse_subrs): Add + initializer. -2014-11-27 Werner Lemberg + * src/cache/ftccache.h (FTC_CACHE_TRYLOOP_END): Avoid implicit + conversion from NULL to boolean. - [docmaker] Replace `name' attribute of `' with `id'. +2016-05-21 Werner Lemberg - * src/tools/docmaker/tohtml.py (HtmlFormatter::block_enter): Do it. + Work around a bug of the C 8.0.0.1 compiler on AIX 5.3 (#47955). -2014-11-27 Werner Lemberg + * include/freetype/internal/ftmemory.h (cplusplus_typeof): Use + braces for `extern "C++"'. - * src/tools/docmaker/tohtml.py: Remove remaining `width' attributes. +2016-05-17 Nikolaus Waxweiler - For `Index' and `TOC' links, we now simply use the `text-align' CSS - property of `

' to enforce flush-left and flush-right, - eliminating the hack with an empty, full-width `' element - inbetween. + [truetype] Make TT_LOADER_SET_PP support subpixel hinting [3/3]. - The change also enforces the same (smaller) size for all index and - TOC links. + * src/truetype/ttgload.c (TT_LOADER_SET_PP): Replace macro with... + (tt_loader_set_pp): ... this new function. + Update all callers. -2014-11-27 suzuki toshiya +2016-05-17 Nikolaus Waxweiler - * src/cff/cf2font.c: Include `ftcalc.h' to use FT_MSB(), - cf2font.c could not find it under `make multi' build. + [truetype] New implementation of v38 bytecode interpreter [2/3]. -2014-11-27 suzuki toshiya + This patch actually modifies the bytecode interpreter. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove - unrequired negative value check for `width' and `height'. + See added comments in `ttinterp.h' for more information on this and + the following commit in the series. -2014-11-27 Werner Lemberg + * src/truetype/ttinterp.c (SUBPIXEL_HINTING): Replaced by... + (NO_SUBPIXEL_HINTING, SUBPIXEL_HINTING_INFINALITY, + SUBPIXEL_HINTING_MINIMAL): ...new macros. + (Direct_Move, Direct_Move_X, Direct_Move_Y): Handle backwards + compatibility. + Updated. + (Ins_RS, Ins_FDEF, Ins_ENDF, Ins_CALL, Ins_LOOPCALL, Ins_MD): + Updated. + (Ins_INSTCTRL): Handle native ClearType mode flag. + Updated. + (Ins_FLIPPT, Ins_FLIPRGON, Ins_FLIPRGOFF): Handle backwards + compatibility. + (Move_Zp2_Point): Ditto. + (Ins_SHP): Updated. + (Ins_SHPIX): Handle backwards compatibility. + Updated. + (Ins_MSIRP, Ins_MDAP, Ins_MIAP, Ins_MDRP, Ins_MIRP): Updated. + (Ins_ALIGNRP): Updated. + (Ins_IUP, Ins_DELTAP): Handle backwards compatibility. + Updated. + (Ins_GETINFO): Handle v38 flags. + Updated. + (TT_RunIns): Handle backwards compatibility mode. + Updated. + +2016-05-17 Nikolaus Waxweiler + + [truetype] New implementation of v38 bytecode interpreter [1/3]. + + This patch prepares data structures and the like. + + See added comments in `ttinterp.h' for more information on this and + the following commits in the series. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_SUBPIXEL_HINTING): Assign values to differentiate + between subpixel versions. + (TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY, + TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL): New macros. + + * include/freetype/ftttdrv.h (TT_INTERPRETER_VERSION_40): New macro. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Define new fields + `subpixel_hinting_lean', `vertical_lcd_lean', + `backwards_compatibility', `iupx_called', iupy_called', and + `grayscale_cleartype' for new hinting mode. + + * src/truetype/ttdriver.c (tt_property_set): Handle v38 and v40 + interpreters conditionally. + + * src/truetype/ttgload.c (TT_Hint_Glyph): Save phantom points unless + in v38 backwards compatibility mode. + Updated. + (compute_glyph_metrics): Add v38 backwards compatibility mode + constraint for adjusting advance widths. + Updated. + (tt_loader_init): Handle new flags `subpixel_hinting_lean', + `grayscale_cleartype', and `vertical_lcd_lean'. + Updated. + (tt_get_metrics, TT_Process_Simple_Glyph, TT_LOADER_SET_PP): + Updated. + + * src/truetype/ttobjs.c (tt_driver_init): Conditionally set + default interpreter version number. - * src/tools/docmaker/tohtml.py: More HTML table refactoring. + * src/truetype/ttsubpix.c, src/truetype/ttsubpix.h: Updated. - Replace some `' tags with `
' to simplify structure. +2016-05-17 Werner Lemberg - Move `bgcolor' attribute to CSS. + [cff] Fix matrix scaling (#47848). - Replace most `width' attributes with CSS. The remaining instances - (providing a similar effect as LaTeX's `\hfill' command) are removed - in a later patch. + * include/freetype/config/ftstdlib.h (FT_LONG_MIN): New macro. -2014-11-27 Werner Lemberg + * src/cff/cffparse.c (cff_parse_font_matrix): Use largest scaling + value of all matrix coefficients to scale matrix. - * src/tools/docmaker/tohtml.py: Replace with CSS. + * src/cff/cffobjs.c (cff_face_init): Use `matrix->yx' member for + matrix normalization if `matrix->yy' is zero. -2014-11-27 Werner Lemberg +2016-05-16 Werner Lemberg - * src/tools/docmaker/tohtml.py: Center
with CSS. + [base] Reject invalid sfnt Mac resource (#47891). -2014-11-27 Werner Lemberg + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Check validity + of `CID ' and `TYPE1' table offset and length. + +2016-05-16 Werner Lemberg + + [cid] Fix scanning for `StartData' and `/sfnts' (#47892). + + * src/cid/cidparse.c (STARTDATA, STARTDATA_LEN, SFNTS, SFNTS_LEN): + New macros. + (cid_parser_new): Fix and document algorithm. - * src/tools/docmaker/tohtml.py: Replace `
' with `
'. +2016-05-16 suzuki toshiya -2014-11-27 Werner Lemberg + [truetype] Improve the recursive reference detector. - * src/tools/docmaker/tohtml.py: Remove redundant `
' tags. + The previous fix for #46372 misunderstood a composite glyph referring + same component twice as a recursive reference. See the discussion - This starts a series of commits into the direction of generating - valid HTML 5 code, especially using much more CSS. + http://lists.gnu.org/archive/html/freetype/2016-05/msg00000.html -2014-11-27 suzuki toshiya + Thanks to Khaled Hosny for finding this issue. - Prevent too negative values (< FT_INT_MIN) in bitmap metrics, - suggested by Alexei. + * src/truetype/ttgload.c (ft_list_get_node_at): A function to get + the i-th node from FT_List. + (load_truetype_glyph): In the traversal scan of the reference tree + in the composite glyph, we clear the nodes filled by previous + sibling chain. - * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Prevent too - negative values in `xpos' and `ypos + ysize'. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Prevent - too negative values in `x_left' and `y_top'. Either negative - values in `width' and `height' are checked. +2016-05-07 Werner Lemberg -2014-11-27 Werner Lemberg + [cache] Allow value 0 for face ID. - [docmaker] Produce better HTML code. + We never dereference `face_id', and some implementations might use a + running number instead of a pointer. Additionally, disallowing + value zero was undocumented. - * src/tools/docmaker/tohtml.py: Always use double quotes for - attribute values. - (source_footer): Close `td' and `tr' groups. + * src/cache/ftccmap.c (FTC_CMapCache_Lookup), src/cache/ftcmanag.c + (FTC_Manager_LookupFace, FTC_Manager_RemoveFaceID): Remove test for + `face_id'. -2014-11-27 Werner Lemberg +2016-05-05 Alexei Podtelezhnikov - Use better way to disable creation of .pyc files for `make refdoc'. + [smooth] More efficient accounting of conic splits and draws. - Python 2.6 was released in 2008... + A single decrement counter of segments to draw, instead of an array, + contains all the information necessary to decide when to split and + when to draw a conic segment. The number of splits before each draw is + equal to the number of trailing zeros in the counter. - * builds/freetype.mk (refdoc): Use python's `-B' option. + * src/smooth/ftgrays.c (gray_TWorker): Remove `lev_stack'. + (gray_render_conic): Updated to use decrement counter of segments. - * builds/detect.mk (std_setup, dos_setup): Mention required python - version for `refdoc' target. +2016-05-05 Werner Lemberg + + [cff, truetype] Fix logic for `FT_Property_Set'. + + Otherwise some properties could be set to arbitrary values, which is + harmless, but querying could give wrong positive results. + + * src/cff/cffdrivr.c (cff_property_set) [hinting-engine], + * src/truetype/ttdriver.c (tt_property_set) [interpreter-version]: + Only allow defined values. + +2016-04-25 Werner Lemberg + + [autofit] Add blue-zone support for Gujarati script. + + This essentially moves the Gujarati script from the `Indic' hinter to + the `Latin' hinter. -2014-11-27 Werner Lemberg + * src/autofit/afblue.dat: Add blue zone data for Gujarati. - * src/tools/docmaker/sources.py (re_bold, re_italic): Use - non-grouping parentheses. - * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word): + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Gujarati standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Gujarati data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Gujarati data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2016-04-24 Werner Lemberg + + Minor. + + * include/freetype/freetype.h (FT_HAS_*, FT_IS_*): Protect macro + argument with parentheses. + +2016-04-24 Werner Lemberg + + [truetype] Fix deallocation in case of error (#47726). + + * src/truetype/ttgload.c (load_truetype_glyph): Initialize fields in + `outline' that are going to be deallocated in case of error. + +2016-04-23 Werner Lemberg + + [autofit] Improve Georgian blue zone characters. + + Suggested by Akaki Razmadze . + + * src/autofit/afblue.dat (AF_BLUE_STRING_GEORGIAN_MKHEDRULI_BOTTOM): Updated. -2014-11-27 Werner Lemberg + * src/autofit/afblue.c: Regenerated. - * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix compiler warning. +2016-04-16 David Capello - Introdruced in previous change. Reported by Alexei. + [cmake] Honor SKIP_INSTALL_* settings (as used in zlib). -2014-11-26 Werner Lemberg + As FreeType depends on zlib, if we don't install zlib (e.g., because + we defined SKIP_INSTALL_ALL), FreeType cannot be installed, too + (cmake triggers an error saying that FreeType cannot be installed + because zlib target isn't in the export set). - * src/*: Add checks for parameters of API functions where missing. + * CMakeLists.txt: Honor `SKIP_INSTALL_HEADERS', + `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' settings. - `API functions' are functions tagged with `FT_EXPORT_DEF'. +2016-04-16 Behdad Esfahbod - Besides trivial fixes, the following changes are included, too. + [truetype] Another fix for non-intermediate GX tuples. - * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Set - error code if no service is available. + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Add some missing + cases. - * src/base/ftinit.c (FT_Done_FreeType): Change return value for - invalid `library' parameter to `Invalid_Library_Handle'. +2016-04-12 Alexei Podtelezhnikov - * src/base/ftobjs.c (FT_New_Size): Change return value for invalid - `asize' parameter to `Invalid_Argument'. + Remove forgotten macro. - * src/base/ftoutln.c (FT_Outline_Copy): Change return value for - invalid `source' and `target' parameters to `Invalid_Outline'. - (FT_Outline_Done_Internal): Change return value for invalid - `outline' parameter to `Invalid_Outline'. + * include/freetype/internal/internal.h + [FT_INTERNAL_POSTSCRIPT_GLOBALS_H]: Remove. -2014-11-26 Werner Lemberg +2016-04-09 Werner Lemberg - * src/cache/ftcbasic.c: Use single calls to `FT_TRACE'. + [autofit] Add support for Georgian scripts. -2014-11-26 suzuki toshiya + Georgian is problematic, since `uppercase' forms of Mkhedruli + (called Mtavruli) are not yet defined in Unicode, which means that + proper blue zones can't be defined. However, there is already a + proposal submitted to Unicode; see - * src/base/ftobj.c (Mac_Read_POST_Resource): Additional - overflow check in the summation of POST fragment lengths, - suggested by Mateusz Jurczyk . + http://www.unicode.org/L2/L2016/16034-n4707-georgian.pdf -2014-11-26 suzuki toshiya + Additionally, due to historical reasons, Unicode treats Khutsuri as + the same script as Mkhedruli, and so does OpenType. However, since + the two scripts have completely different shapes it can happen that + blue zones differ considerably. The tag `geok' used here (derived + from ISO 15924) to differentiate the two scripts is not an OpenType + tag in use. If we now have a font that contains both glyphs for + Mkhedruli and Khutsuri, and it uses OpenType features for both also, + HarfBuzz unavoidably treats all glyphs as `geor'. As a consequence, + blue zones for `geok' are not used for glyphs involved in the + OpenType features. - * src/base/ftobjs.c (Mac_Read_POST_Resource): Insert comments - and fold too long tracing messages. + An issue not yet resolved is which OpenType feature should be used + to access Mtavruli glyph shapes; right now, FreeType doesn't set up + support for them, but it is easy to add them later on as soon as + more information is available. -2014-11-26 suzuki toshiya + * src/autofit/afblue.dat: Add blue zone data for Georgian. - Fix Savannah bug #43540. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - * src/base/ftmac.c (parse_fond): Prevent a buffer overrun - caused by a font including too many (> 63) strings to store - names[] table. + * src/autofit/afscript.h: Add Georgian standard characters. -2014-11-26 suzuki toshiya + * src/autofit/afranges.c: Add Georgian data. - * src/base/ftobjs.c (Mac_Read_POST_Resource): Use unsigned long - variables to read the lengths in POST fragments. Suggested by - Mateusz Jurczyk . + * src/autofit/afstyles.h: Add Georgian data. -2014-11-26 suzuki toshiya +2016-04-05 Werner Lemberg - Fix Savannah bug #43539. + [autofit] Provide dummy blue zone for pseudo script `none'. - * src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow - by a broken POST table in resource-fork. + Even if the dummy hinter is used as the handler for `none' (which + doesn't use blue zones), it is more consistent than the old value + (which was 0), pointing to Arabic... -2014-11-26 suzuki toshiya + * src/autofit/afblue.dat: Add `AF_BLUE_STRINGSET_NONE'. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - Fix Savannah bug #43538. + * src/autofit/afstyles.h (none_dflt): Use AF_BLUE_STRINGSET_NONE. - * src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow - by a broken POST table in resource-fork. +2016-03-30 Werner Lemberg -2014-11-26 suzuki toshiya + * src/pfr/pfrload.c (pfr_aux_name_load): Thinko (#47567). - * src/base/ftobjs.c (Mac_Read_POST_Resource): Avoid memory leak - by a broken POST table in resource-fork. Return after freeing - the buffered POST table when it is found to be broken. +2016-03-30 Werner Lemberg -2014-11-25 Werner Lemberg + * src/pfr/pfrload.c (pfr_log_font_count): Better font size estimate. - */*: s/Invalid_Argument/Invalid_Size_Handle/ where appropriate. +2016-03-30 Werner Lemberg -2014-11-25 Werner Lemberg + * src/pfr/pfrload.c (pfr_aux_name_load): Fix memory leak (#47567). - */*: s/Invalid_Argument/Invalid_Stream_Handle/ where appropriate. +2016-03-29 Werner Lemberg -2014-11-25 Werner Lemberg + * src/base/ftadvanc.c (FT_Get_Advances): Fix invalid left shift. - */*: s/Invalid_Argument/Invalid_Library_Handle/ where appropriate. +2016-03-29 Werner Lemberg -2014-11-25 Werner Lemberg + [pfr] Fix binary search (#47514). - */*: s/Invalid_Argument/Invalid_Outline/ where appropriate. + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border + conditions correctly. -2014-11-25 Werner Lemberg +2016-03-29 Werner Lemberg - */*: s/Invalid_Argument/Invalid_Face_Handle/ where appropriate. + [pfr] Minor. -2014-11-24 Werner Lemberg + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left', + `right', and `middle' with `min', `max', and `mid' as used in other + FreeType binary search code. + (pfr_load_bitmap_metrics): Fix invalid left shift. - [Savannah bug #43682] Adjust some renderer callbacks. +2016-03-29 Werner Lemberg - * src/raster/ftraster.c (ft_black_set_mode): Change return type to - `int' to stay in sync with `FT_Renderer_SetModeFunc' prototype. + * src/pfr/pfrtypes.h: Replace all enums with macros. - * src/smooth/ftgrays.c (gray_raster_set_mode): New dummy function - for orthogonality. - (ft_grays_raster): Use it. + We need `~FOO' to unset bits, and only with unsigned values (which + `enum' isn't normally) this works cleanly. -2014-11-25 Werner Lemberg +2016-03-26 Werner Lemberg - [Savannah bug #43682] Properly handle missing return errors. + [pfr] Robustify bitmap strike handling (#47514). - The functions in this patch *do* return non-trivial errors that must - be taken care of. + We did a binary search for a charcode without ensuring that the + searched data is ordered. Validating the order is now done lazily, + this is, the first access to a bitmap glyph triggers the order check + in the corresponding bitmap strike. - * src/autofit/afloader.c (af_loader_load_g), src/base/ftobjs.c - (FT_Render_Glyph_Internal), src/base/ftoutln.c (FT_Outline_Render), - src/cff/cffgload.c (cff_decoder_parse_charstrings) , - src/psaux/psobjs.c (ps_parser_load_field_table), src/psaux/t1decode - (t1_decoder_parse_charstrings) , src/truetype/ttgload.c - (load_truetype_glyph , tt_loader_init, - TT_Load_Glyph), src/truetype/ttgxvar.c (TT_Set_MM_Blend), - src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Do it. + * src/pfr/pfrtypes.h (PFR_BitmapFlags): New values + `PFR_BITMAP_VALID_CHARCODES' and `PFR_BITMAP_CHARCODES_VALIDATED'. -2014-11-25 Werner Lemberg + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Make `flags' argument + a pointer. Handle new PFR_BITMAP_XXX flags. + (pfr_slot_load_bitmap): Updated. - [Savannah bug #43682] Add/remove `void' casts to some functions. +2016-03-26 Werner Lemberg - We use a cast to indicate that we intentionally ignore a function's - return value. However, this doesn't apply to API functions where - errors can only happen for trivially invalid input. + [pfr] Fix handling of compound glyphs. - * src/base/ftstroke.c (FT_Glyph_Stroke, FT_Glyph_StrokeBorder), - src/base/ftsynth.c (FT_GlyphSlot_Embolden), src/cff/cffgload.c - (cff_slot_load), src/pfr/pfrdrivr.c (pfr_get_kerning), - src/type1/t1load.c (parse_encoding), src/type42/t42parse.c - (t42_parse_encoding): Do it. + Extra items are indicated with different bit positions. -2014-11-25 Werner Lemberg + * src/pfr/pfrtypes.h (PFR_GlyphFlags): Replace + `PFR_GLYPH_EXTRA_ITEMS' with `PFR_GLYPH_SIMPLE_EXTRA_ITEMS' and + `PFR_GLYPH_COMPOUND_EXTRA_ITEMS'. - [Savannah bug #43682] Change some signatures to `void' return type. + * src/pfr/pfrgload.c (pfr_glyph_load_simple, + pfr_glyph_load_compound): Use them. - * include/internal/pshints.h (PSH_Globals_SetScaleFunc), - include/internal/sfnt.h (TT_Get_Metrics_Func), - src/pshinter/pshglob.c (psh_globals_set_scale), - src/pshinter/pshrec.c (ps_hints_init), src/sfnt/ttmtx.c - (tt_face_get_metrics), src/truetype/ttinterp.c (TT_Goto_CodeRange, - TT_Set_CodeRange, TT_Clear_CodeRange, TT_Done_Context, - TT_Save_Context): Do it. +2016-03-25 Werner Lemberg - * src/pshinter/pshglob.h, src/pshinter/pshrec.h, src/sfnt/ttmtx.h, - src/truetype/ttgload.c (TT_Hint_Glyph), src/truetype/ttinterp.c - (TT_Run_Context), src/truetype/ttinterp.h, src/truetype/ttobjs.c - (tt_size_run_fpgm, tt_size_run_prep): Updated. + [pfr] Minor. -2014-11-24 Werner Lemberg + * src/pfr/pfrsbit.c, src/pfr/pfrobjs.c: Use flag names instead of + bare numbers. - Remove all code related to FT_MAX_CHARMAP_CACHEABLE. +2016-03-25 Werner Lemberg - This is no longer used. + [pfr] Various clang sanitizer fixes. - * src/base/ftobjs.c, src/cache/ftccmap.c, src/cff/cffobjs.c, - src/sfnt/ttcmap.c: Do it. + * src/pfr/pfrsbit.c (pfr_load_bitmap_metrics): Correctly handle + signed nibbles. + (pfr_slot_load_bitmap): Correctly exit frame in case of error. + Fix invalid left shifts. -2014-11-24 Werner Lemberg +2016-03-23 Werner Lemberg - [sfnt] Fix Savannah bug #43680. + Rename `VERSION.DLL' (#47472). - This adds an additional constraint to make the fix from 2013-01-25 - really work. + * docs/VERSION.DLL: Renamed to... + * docs/VERSIONS.TXT: ...this. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image) : - Check `p' before `num_glyphs'. +2016-03-23 Werner Lemberg -2014-11-24 Werner Lemberg + [raster, smooth] Directly test outline size (#47500). - [truetype] Fix Savannah bug #43679. + This improves stand-alone compilation. - * src/truetype/ttpload.c (tt_face_load_hdmx): Check minimum size of - `record_size'. + * src/base/ftoutln.c (FT_Outline_Render): Move cbox size test to... -2014-11-24 Jarkko Pöyry + * src/raster/ftraster.c (ft_black_render), src/smooth/ftgrays.c + (gray_raster_render): ...these functions. - [cff, pfr, psaux, winfonts] Fix Savannah bug #43676. +2016-03-23 Werner Lemberg - Don't cast cmap init function pointers to an incompatible type. + [raster, smooth] Fix some clang sanitizer runtime issues. - Without this patch, the number of parameters between declaration and - the real signature differs. Calling such a function results in - undefined behavior. + * src/raster/ftraster.c (ft_black_reset, ft_black_set_mode, + ft_black_render): Harmonize signatures with `ftimage.h'. - ISO/IEC 9899:TC3 (Committee Draft September 7, 2007) - 6.5.2.2 Function calls - 9 If the function is defined with a type that is not - compatible with the type (of the expression) pointed to by - the expression that denotes the called function, the - behavior is undefined. + * src/smooth/ftgrays.c (gray_raster_render, gray_raster_reset): + Ditto. - On certain platforms (c -> js with emscripten) this causes - termination of execution or invalid calls because in the emscripten - implementation, function pointers of different types are stored in - different pointer arrays. Incorrect pointer type here results in - indexing of an incorrect array. +2016-03-22 Werner Lemberg - * src/cff/cffcmap.c (cff_cmap_encoding_init, cff_cmap_unicode_init), - src/pfr/pfrcmap.c (pfr_cmap_init), src/psaux/t1cmap.c - t1_cmap_standard_init, t1_cmap_expert_init, t1_cmap_custom_init, - t1_cmap_unicode_init), src/winfonts/winfnt.c (fnt_cmap_init): Fix - signature. + * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Minor. -2014-11-24 Werner Lemberg + This fixes an AddressSanitizer issue: - [sfnt] Fix Savannah bug #43672. + ttgload.c:430:7: runtime error: null pointer passed as argument 1, + which is declared to never be null - * src/sfnt/ttkern.c (tt_face_load_kern): Use correct value for - minimum table length test. +2016-03-21 Werner Lemberg -2014-11-24 Werner Lemberg + * src/autofit/afhints.c (af_glyph_hints_reload): Thinko. - [type1, type42] Another fix for Savannah bug #43655. + This fixes the previous commit to this file. - * src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c - (t42_parse_charstrings): Add another boundary testing. +2016-03-21 Alexei Podtelezhnikov -2014-11-24 Werner Lemberg + [smooth] Partly revert recent changes. - [docmaker] Formatting, copyright, improved documentation. + * src/smooth/ftgrays.c (gray_conic_to, gray_cubic_to): Rework + conditions to fix rendering issues. - * src/tools/docmaker/*: No code changes besides trivial - modifications. +2016-03-20 Werner Lemberg -2014-11-22 Werner Lemberg + [autofit] Show `near' points in tracing. - [bdf] Fix Savannah bug #43660. + * src/autofit/afhints.h (AF_FLAG_NEAR): New macro. - * src/bdf/bdflib.c (_bdf_parse_glyphs) <"ENDFONT">: Check - `_BDF_GLYPH_BITS'. + * src/autofit/afhints.c (af_glyph_hints_dump_points): Implement it. + (af_glyph_hints_reload): Handle AF_FLAG_NEAR. -2014-11-22 Werner Lemberg +2016-03-18 Alexei Podtelezhnikov - [type42] Allow only embedded TrueType fonts. + [smooth] Minor refactoring and microoptimizations. - This is a follow-up to Savannah bug #43659. + * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move + band clipping from here. + (gray_conic_to, gray_cubic_to): ... to here. + (gray_rander_line, gray_render_scanline): Initialize variables closer + to their use. - * src/type42/t42objs.c (T42_Face_Init): Exclusively use the - `truetype' font driver for loading the font contained in the `sfnts' - array. +2016-03-17 Alexei Podtelezhnikov -2014-11-22 Werner Lemberg + [smooth] Minor refactoring. - [type42] Fix Savannah bug #43659. + * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move + upscaling from here. + (gray_conic_to, gray_cubic_to): ... to here. - * src/type42/t42objs.c (T42_Open_Face): Initialize `face->ttf_size'. +2016-03-15 Werner Lemberg - * src/type42/t42parse.c (t42_parse_sfnts): Always set - `face->ttf_size' directly. This ensures a correct stream size in - the call to `FT_Open_Face', which follows after parsing, even for - buggy input data. - Fix error messages. + * src/autofit/aflatin.c (af_latin_compute_stem_width): Optimize. -2014-11-22 Werner Lemberg +2016-03-14 Alexei Podtelezhnikov - [cff] Fix Savannah bug #43658. + [smooth] Temporarily revert 6eb6158dd787 (#47114). - * src/cff/cf2ft.c (cf2_builder_lineTo, cf2_builder_cubeTo): Handle - return values of point allocation routines. + * src/smooth/ftgrays.c (gray_render_line): Old implementation. -2014-11-22 Werner Lemberg +2016-03-12 Werner Lemberg - [sfnt] Fix Savannah bug #43656. + [ftfuzzer] Improve coverage of rasterfuzzer. - * src/sfnt/ttcmap.c (tt_cmap4_validate): Fix order of validity - tests. + * src/tools/ftfuzzer/rasterfuzzer.cc (LLVMFuzzerTestOneInput): Use + input data for `tags' array also. + Trim input data to get more positive hits. -2014-11-21 Werner Lemberg +2016-03-11 Pavlo Denysov - [type1, type42] Fix Savannah bug #43655. + Fix CMake issues for iOS (patch #8941). - * src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c - (t42_parse_charstrings): Fix boundary testing. + * CMakeLists.txt (CMAKE_TOOLCHAIN_FILE): Fix directory. + * builds/cmake/iOS.cmake: No longer enforce gcc. -2014-11-21 Werner Lemberg +2016-03-09 Behdad Esfahbod - * src/pcf/pcfread.c (pcf_get_metrics): Sanitize invalid metrics. + [truetype] Fix handling of non-intermediate GX tuples. -2014-11-21 Werner Lemberg + We probably did not notice this as all fonts we tested had only + tuple_coords[i] be +1 or -1 for non-intermediate tuples. - [ftlcdfil] Obey flow direction. + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Implement it. - * src/base/ftlcdfil.c (_ft_lcd_filter_fir, _ft_lcd_filter_legacy): - Handle `up' flow. +2016-03-06 Alexei Podtelezhnikov -2014-11-21 Werner Lemberg + [base] Refuse to render enormous outlines (#47114). - * src/base/ftbitmap.c (FT_Bitmap_Convert): Improve. + The goal is to avoid integer overflows in the rendering algorithms. + The limit is chosen arbitrarily at some 2^18 pixels, which should be + enough for modern devices including printers. - This commit completes argument checks and adds support for different - flow directions. + * src/base/ftoutln.c (FT_Outline_Render): Check CBox and reject + enormous outlines. -2014-11-21 Werner Lemberg +2016-03-06 Alexei Podtelezhnikov - * src/base/ftbitmap.c (FT_Bitmap_Copy): Improve. + [smooth] Replace left shifts with multiplications (#47114). - This commit adds argument checks and support for different flow - directions. + * src/smooth/ftgrays.c (SUBPIXELS, UPSCALE, DOWNSCALE): Do it. -2014-11-20 Werner Lemberg +2016-03-05 Werner Lemberg - * src/base/ftbitmap.c (FT_Bitmap_New): Check argument. + [autofit] Avoid excessive stem length rounding (#25392). -2014-11-19 Werner Lemberg + * src/autofit/aflatin.c (af_latin_compute_stem_width): Add argument + to pass difference between hinted and unhinted position of base + point; use this to adjust the stem width depending on the PPEM so + that it doesn't become too large under certain circumstances. + Update all callers using value 0 for this argument except... + (af_latin_align_linked_edge): Pass position delta of base point to + `af_latin_compute_stem_width'. - Change some fields in `FT_Bitmap' to unsigned type. +2016-03-05 J Raynor - This doesn't break ABI. + Make FreeType compile on AIX out of the box. - * include/ftimage.h (FT_Bitmap): Make `rows', `width', `num_grays', - `pixel_mode', and `palette_mode' unsigned types. + * builds/unix/configure.raw (XX_ANSIFLAGS): Don't use `-ansi' on + AIX. - * src/base/ftbitmap.c: Updated. - (FT_Bitmap_Copy): Fix casts. +2016-03-01 Werner Lemberg + Kostya Serebryany - * src/cache/ftcsbits.c, src/raster/ftraster.c, src/sfnt/pngshim.c: - Updated. + [ftfuzzer] Add unit for testing smooth and black rasterizers. + + * src/tools/ftfuzzer/rasterfuzzer.cc: New file. + +2016-03-01 Werner Lemberg + + [autofit] Fix reallocation error introduced in 2016-02-27 (#47310). + + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Reassign + `prev_segment' after reallocation. + +2016-03-01 Werner Lemberg + + Fix clang warnings. -2014-11-19 Werner Lemberg + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Use + FT_UShort for `min_flags' and `max_flags'. + Initialize `prev_*' variables. - Make `FT_Bitmap_Convert' correctly handle negative `pitch' values. + * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Fix + types of local variables. - * src/base/ftbitmap.c (FT_Bitmap_Convert): Always use positive value - for the pitch while copying data. - Correctly set pitch sign in target bitmap. + * src/smooth/ftgrays.c (gray_dump_cells) [FT_DEBUG_LEVEL_TRACE]: + Update `printf' format string. -2014-11-19 Werner Lemberg + * src/tools/ftfuzzer/ftfuzzer.cc (setIntermediateAxis): Add cast. + (LLVMFuzzerTestOneInput): Fix loop type. - Minor code improvement in `FT_Bitmap_Embolden'. +2016-02-29 Werner Lemberg - * src/base/ftbitmap.c (FT_Bitmap_Embolden) : - Fix thinko. + [autofit] Add blue-zone support for Sinhala script. -2014-11-19 Alexei Podtelezhnikov + This essentially moves the Sinhala script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Sinhala. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Sinhala standard character and move data + out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Sinhala data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Sinhala data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2016-02-27 Werner Lemberg + + [autofit] Properly handle spikes pointing to the x-axis. + + An example that gets better rendered is glyph `uusignTaml' (glyph + index 2286) in font `FreeSerif.ttf' (Version 0412.2263) at 22ppem. + + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Properly + handle segments where the last point of the first segment is + identical to the first point in the second one. This can happen for + malformed fonts or spikes. We either merge the new segment with the + previous one (both segments point into the same direction), or we + discard the shorter segment if they point into different directions. + +2016-02-27 Werner Lemberg + + [autofit] Minor code clean-up. - * src/base/fttrigon.c: Use dedicated `FT_Angle' for arctan table. + * src/autofit/aflatin.c (af_latin_hints_compute_segments): Change + some local variable names to better differentiate between values + along a segment and values orthogonal to it. -2014-11-19 Behdad Esfahbod +2016-02-26 Werner Lemberg - Avoid compiler warnings on x86-64 for `FT_MulFix'. + [autofit] Improve BOUND action. - `FT_MulFix' takes `FT_Long' parameters as defined in `freetype.h', - but several inline implementations of it in `ftcalc.h' take - `FT_Int32' arguments. This is causing compiler warnings on x86-64: - If parameters of type `FT_Fixed' (= `FT_Long') are passed to the - inline implementation of this function, integer values are truncated - from 64bit to 32bit. + In complex glyph shapes, the original logic was too simple to cater + for situations that would actually need something similar to PS Hint + masks. This fix should alleviate the worst cases. - * include/internal/ftcalc.h (FT_MulFix) [FT_MULFIX_ASSEMBLER]: Add - casts. + * src/autofit/aflatin.c (af_latin_hint_edges): Don't allow + complete disappearance of stems. -2014-11-15 Werner Lemberg +2016-02-25 Werner Lemberg - [sfnt] Fix Savannah bug #43597. + [autofit] Add blue-zone support for Tamil script. - * src/sfnt/pngshim.c (Load_SBit_Png): Protect against too large - bitmaps. + This essentially moves the Tamil script from the `Indic' hinter to + the `Latin' hinter. -2014-11-12 Werner Lemberg + * src/autofit/afblue.dat: Add blue zone data for Tamil. - [sfnt] Fix Savannah bug #43591. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Protect against addition - and multiplication overflow. + * src/autofit/afscript.h: Add Tamil standard character and move data + out of AF_CONFIG_OPTION_INDIC block. -2014-11-12 Werner Lemberg + * src/autofit/afranges.c: Move Tamil data out of + AF_CONFIG_OPTION_INDIC block. - [sfnt] Fix Savannah bug #43590. + * src/autofit/afstyles.h: Update Tamil data; in particular, use + AF_WRITING_SYSTEM_LATIN. - * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): - Protect against addition overflow. +2016-02-18 Werner Lemberg -2014-11-12 Werner Lemberg + [autofit] Add blue-zone support for Malayalam script. - [sfnt] Fix Savannah bug #43589. + This essentially moves the Malayalam script from the `Indic' hinter + to the `Latin' hinter. - * src/sfnt/sfobjs.c (woff_open_font): Protect against addition - overflow. + * src/autofit/afblue.dat: Add blue zone data for Malayalam. -2014-11-12 Werner Lemberg + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - [sfnt] Fix Savannah bug #43588. + * src/autofit/afscript.h: Add Malayalam standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. - * src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate, - tt_cmap12_validate, tt_cmap13_validate, tt_cmap14_validate): Protect - against overflow in additions and multiplications. + * src/autofit/afranges.c: Move Malayalam data out of + AF_CONFIG_OPTION_INDIC block. -2014-11-10 Alexei Podtelezhnikov + * src/autofit/afstyles.h: Update Malayalam data; in particular, use + AF_WRITING_SYSTEM_LATIN. - [base] CORDIC improvements. +2016-02-16 Alexei Podtelezhnikov - The scaling between the hypotenuse and its CORDIC approximation is - based on regression analysis. The smaller padding for `theta' is - justifed by its maximum error of less than 6. + [smooth] Fix integer overflow (#47114). - * src/base/fttrigon.c (ft_trig_downscale): Borrow code from - ./ftcalc.c (ft_multo64), change linear intercept. - (ft_trig_pseudo_polarize): Decrease `theta' padding. + * src/smooth/ftgrays.c (TArea): Make it unconditionally `long'. -2014-11-09 Werner Lemberg +2016-02-15 Werner Lemberg - * src/base/ftstroke.c (ft_stroker_inside): Fix border intersections. + * src/cff/cffparse.c (cff_parse_multiple_master): Improve tracing. - One more place to check whether `radius' is zero. +2016-02-15 Werner Lemberg - Problem reported by Marco Wertz . + [cff] Handle T2 operator only with old CFF engine (#47157). -2014-11-07 Werner Lemberg + * src/cff/cffparse.c (cff_parser_run) : Enclose with + #ifdef CFF_CONFIG_OPTION_OLD_ENGINE...#endif. - [bdf] Fix Savannah bug #43535. +2016-02-15 Werner Lemberg - * src/bdf/bdflib.c (_bdf_strncmp): New macro that checks one - character more than `strncmp'. - s/ft_strncmp/_bdf_strncmp/ everywhere. + [cff] Partially handle `load' and `store' ops in old CFF engine. -2014-11-06 Werner Lemberg + Now all glyphs of MM CFFs like `ITCGaramondMM-It.otf' can be + displayed. - [pcf] Fix Savannah bug #43548. + * src/cff/cffgload.c (cff_decoder_parse_charstrings) : Partially implement it. - * src/pcf/pcfread.c (pcf_get_encodings): Add sanity checks for row - and column values. + * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass + the number of Multiple Master axes. + Update all callers. + (cff_parse_multiple_master): Get number of axes. + (cff_parser_run) : Updated. + * src/cff/cffparse.h: Updated. + (CFF_ParserRec): Add `num_axes' field. -2014-11-06 Werner Lemberg + * src/cff/cffload.c: Updated. - [pcf] Fix Savannah bug #43547. + * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_axes' field. - * src/pcf/pcfread.c (pcf_read_TOC): Check `size' and `offset' - values. +2016-02-15 Werner Lemberg -2014-11-06 Werner Lemberg + [cff] Correctly trace SIDs that contain NULL bytes. - * src/pcf/pcfread.c (pcf_read_TOC): Avoid memory leak. + We need this to properly trace Multiple Master CFFs, which contain + two SIDs that are charstrings. -2014-11-03 Infinality + This commit makes FreeType also show the last SID, omitted + previously due to a bug. - * src/truetype/ttsubpix.c (COMPATIBILITY_MODE_Rules): Updated. + * src/cff/cfftypes.h (CFF_FontRec): Add `string_pool_size' field. - The previous commit deteriorates rendering of DejaVu and similar - fonts; this gets compensated with this rule. + * src/cff/cffload.c (cff_index_get_pointers): Add argument to return + the pool size. + Update all callers. -2014-11-03 Werner Lemberg + * src/cff/cffobjs.c (cff_face_init) [FT_DEBUG_LEVEL_TRACE]: Directly + access `cff->strings' to display the non-default strings. - * src/truetype/ttinterp.c (Ins_DELTAP): Fix subpixel hinting. +2016-02-14 Werner Lemberg - Before this patch, it was impossible to ever call DELTAP[123] in - subpixel hinting mode as described in the ClearType whitepaper; it - only worked if in `compatibility mode'. However, compatibility mode - essentially disables SHPIX, completely ruining hinting of - ttfautohint output, for example. + * src/base/fthash.c: Include FT_INTERNAL_MEMORY_H. - We now follow the whitepaper more closely so that DELTAP[123] - instructions for touched points in the non-subpixel direction are - executed. +2016-02-14 Werner Lemberg -2014-10-31 Alexei Podtelezhnikov + * src/cff/cffparse.c: Include `cffgload.h'. - [smooth] Improve code readability. + Problem reported by Colin Walters . - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code. +2016-02-14 Werner Lemberg -2014-10-31 Alexei Podtelezhnikov + [cff] Make old CFF engine show MM CFFs (without variations). - [smooth] Reduce outline translations during rendering. + The new code only displays the first master in the font. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Translate origin - virtually by modifying cbox, actually translate outline if cumulative - shift is not zero. + * src/cff/cffgload.c (cff_decode_parse_charstrings): Add new + parameter to allow function calls from dictionaries also. + : Partially implement it. + Update all callers. + * src/cff/cffgload.h: Updated. -2014-10-30 Alexei Podtelezhnikov + * src/cff/cffparse.c (cff_parser_init): Add new parameter to pass the + number of Multiple Master designs. + Update all callers. + (cff_parse_multiple_master): New function to rudimentarily parse + operator. + (cff_parser_run): Handle `T2' operator. + * src/cff/cffparse.h: Updated. + (CFF_ParserRec): Add `num_designs' field. - [smooth] Fix Savannah bug #35604 (cont'd). + * src/cff/cffload.c: Updated. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove checks and - casts that became unnecessary after the variable type upgrades. + * src/cff/cfftoken.h: Handle `MultipleMaster' operator. -2014-10-29 Alexei Podtelezhnikov + * src/cff/cfftypes.h (CFF_FontRecDictRec): Add `num_designs' field. - [smooth] Improve code readability. + * src/sfnt/sfobjs.c (sfnt_init_face): Don't handle `fvar' table for + MM CFFs. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code. +2016-02-09 Werner Lemberg -2014-10-29 Alexei Podtelezhnikov + [docmaker] Don't emit trailing newlines. - Unify hypotenuse approximations. + * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_code): + Use `rstrip'. - * include/internal/ftcalc.h (FT_HYPOT): Move macro from here... - * include/internal/ftobjs.h: ... to here, next to required `FT_ABS'. - * src/smooth/ftgrays.c (gray_render_cubic): Use it here. +2016-02-07 Werner Lemberg -2014-10-25 Werner Lemberg + * Version 2.6.3 released. + ========================= - [cff] Test valid darkening parameter macros in `ftoption.h'. - We no longer need an otherwise unused typedef that can cause a gcc - warning. - Problem reported by Alexei. + Tag sources with `VER-2-6-3'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.6.3. + + * 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.6.2/2.6.3/, s/262/263/. - * src/cff/cffobjs.c (cff_driver_init): Use - `CFF_CONFIG_OPTION_DARKENING_PARAMETER_XXX' macros directly. - (SET_DARKENING_PARAMETERS): Removed. - Compile time tests are now ... + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. - * devel/ftoption.h, include/config/ftoption.h: ... here. + * builds/unix/configure.raw (version_info): Set to 18:3:12. + * CMakeLists.txt (VERSION_PATCH): Set to 3. -2014-10-25 Alexei Podtelezhnikov + * docs/CHANGES: Updated. - Improve flat corner definition. +2016-02-07 Werner Lemberg - * include/internal/ftcalc.h (FT_HYPOT): Macro to approximate Euclidean - distance with the alpha max plus beta min algorithm. - * src/base/ftcalc.c (ft_corner_is_flat): Use it instead of Taxicab - metric. + Fix another runtime error found by clang's sanitizer (#47082). -2014-10-23 David Weiß + * src/base/ftstroke.c (ft_stroke_border_export): Properly handle + empty input buffer. - [build] Improve property file for vc2010. +2016-02-07 Werner Lemberg - User-defined properties should be empty by default to prevent linker - failures. + Fix runtime errors found by clang's sanitizer (#47082). - * builds/windows/vc2010/freetype.user.props, - builds/windows/vc2010/freetype.vcxproj: - s/OptionsDirectory/UserOptionDirectory/. - Comment out all user options. + * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c + (FT_Outline_Copy), src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): + Properly handle empty input buffer. -2014-10-23 Werner Lemberg +2016-02-07 Werner Lemberg - [cff] Work around bug in preprocessor of MSVC 2010. + [cff] Minor. - We have been hit by + * src/cff/cffgload.c (cff_decoder_parse_charstrings) : + Remove dead code. - https://connect.microsoft.com/VisualStudio/feedback/details/718976/msvc-pr +2016-02-07 Werner Lemberg - * devel/ftoption.h, include/config/ftoption.h: Replace - `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' with eight macros - `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}'. + [cff] Implement missing operators in new engine (except `random'). - * src/cff/cffobjs.c (SET_DARKENING_PARAMETERS): Removed. We no - longer need double expansion. - (SET_DARKENING_PARAMETERS_0): Renamed to ... - (SET_DARKENING_PARAMETERS): ... this. - Update call. + * src/cff/cf2font.h (CF2_STORAGE_SIZE): New macro. -2014-10-20 Werner Lemberg + * src/cff/cf2intrp.c (cf2_interpT2CharString): Implement the + following operators: abs, add, and, div, drop, dup, eq, exch, get, + ifelse, index, mul, neg, not, or, put, roll, sqrt, sub. - [sbit] Minor fixes. + * src/cff/cf2stack.h, src/cff/cf2stack.c (cf2_stack_roll): New + auxiliary function for `roll' operator. - * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]: - Accept overlay format also, but emit warning message in that case. - (tt_sbit_decoder_load_metrics): Add missing newline to error - message. - (tt_sbit_load_sbix_image): Add `rgbl' graphic type (as used on iOS - 7.1) to the list of unsupported formats. +2016-02-06 Werner Lemberg -2014-10-19 Alexei Podtelezhnikov + [cff] Fix some Type 2 operators in old CFF engine. - [truetype] Clean up bytecode rounding. + * src/cff/cffgload.c (cff_decoder_parse_charstrings): Fix `eq' + operator, add `not' and (unsupported) `blend' operators. - Zero distance does not have to be treated specially if you follow - specifications and check the sign as the very last step of rounding. +2016-02-05 Sebastian Rasmussen - * src/truetype/ttinterp.c (Round_None, Round_To_Grid, - Round_Down_To_Grid, Round_Up_To_Grid, Round_To_Double_Grid): Use - macros when available, do not check for non-zero distance. - (Round_To_Half_Grid, Round_Super, Round_Super_45): Ditto, return phase - if sign changed. + Make direct call of `make install' work (#47072). -2014-10-18 Alexei Podtelezhnikov + * builds/unix/unix-def.in (freetype-config): Make sure + `freetype-config' is generated for both make targets (`all' and + `install'). - [truetype] Unwrap engine compensation settings. +2016-02-05 Werner Lemberg - * src/truetype/ttobjs.c (tt_size_init_bytecode): Updated. + [base] Fix advance width loading for MM and GX fonts (#47064). -2014-10-18 David Weiß + * src/base/ftadvanc.c (LOAD_ADVANCE_FAST_CHECK): Return false for + MM and GX fonts. + Update callers. - [build] Add property file to vc2010 project. +2016-02-03 Werner Lemberg - This simplifies custom build configurations, especially for - automated build environments. + [cff] Fix handling of face_index == -1 for pure CFF. - * builds/windows/vc2010/freetype.user.props: New configuration file. + * src/cff/cffobjs.c (cff_face_init): Return correct number of faces. - * builds/windows/vc2010/freetype.vcxproj: Include - `freetype.user.props' and use its data fields. +2016-01-30 Werner Lemberg - * builds/windows/vc2010/index.html: Updated. + [autofit] Minor tracing improvement. -2014-10-18 Werner Lemberg + * src/autofit/afhints.c (af_glyph_hints_dump_points): Insert newline + at the start of a new contour. - [autofit] Add blue-zone support for Telugu. +2016-01-28 Nikolaus Waxweiler - This essentially moves the Telugu script from the `Indic' hinter to - the `Latin' hinter. + Remove unpatented hinter (3/3). + + * include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove. + + * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove + `ignore_unpatented_hinter' field. + Update users. + (FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove. + Update users. + + * include/freetype/internal/tttypes.h (TT_FaceRec): Remove + `unpatented_hinting' field. + Update users. + + * src/base/ftpatent.c (_tt_check_patents_in_range, + _tt_check_patents_in_table, _tt_face_check_patents): Remove. + (FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting): + Replace code with dummies. + + * src/truetype/ttobjs.c (tt_face_init): Remove now defunct code. + * src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis' + field. + +2016-01-28 Nikolaus Waxweiler + + Remove unpatented hinter (2/3). - Note that this is a first shot and quite certainly needs - refinements. + * devel/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove. - * src/autofit/afblue.dat: Add blue zone data for Telugu. +2016-01-28 Nikolaus Waxweiler + + Remove unpatented hinter (1/3). + + * src/truetype/ttinterp.c [TT_CONFIG_OPTION_UNPATENTED_HINTING]: + Remove all code related to this macro. + +2016-01-28 Werner Lemberg + + [autofit] Add blue-zone support for Kannada script. + + This essentially moves the Kannada script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Kannada. * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - * src/autofit/afscript.h: Add Telugu standard characters and move + * src/autofit/afscript.h: Add Kannada standard characters and move data out of AF_CONFIG_OPTION_INDIC block. - * src/autofit/afranges.c: Move Telugu data out of + * src/autofit/afranges.c: Move Kannada data out of AF_CONFIG_OPTION_INDIC block. - * src/autofit/afstyles.h: Update Telugu data; in particular, use + * src/autofit/afstyles.h: Update Kannada data; in particular, use AF_WRITING_SYSTEM_LATIN. -2014-10-18 David Wimsey +2016-01-22 Alexei Podtelezhnikov - [cmake] Add iOS build support. - From Savannah patch #8497. + Better access to 64-bit integers for C99 compilers. - * builds/cmake/iOS.cmake: New file. Universal binaries are built - with both 32 and 64 bit arm architectures. + * include/freetype/config/ftconfig.h [FT_LONG64]: Use + __STDC_VERSION__ to define 64-bit integers. + * builds/unix/ftconfig.in [FT_LONG64]: Ditto. + * builds/vms/ftconfig.h [FT_LONG64]: Ditto. - * CMakeLists.txt (IOS_PLATFORM): New variable for running the iOS - toolchain. Possible values are `OS' to build on iOS, or - `SIMULATOR' to build on APPLE. +2016-01-21 Werner Lemberg -2014-10-16 Behdad Esfahbod - Werner Lemberg + [gxvalid] Remove commented out code. - [cff] Add `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' config macro. + * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Do it. - * devel/ftoption.h, include/config/ftoption.h - (CFF_CONFIG_OPTION_DARKENING_PARAMETERS): New macro. +2016-01-20 Werner Lemberg - * src/cff/cffobjs.c (SET_DARKENING_PARAMETERS, - SET_DARKENING_PARAMETERS_0): New macros. - (cff_driver_init): Use new macros. + [autofit] Complete last autofit commit. -2014-10-14 Alexei Podtelezhnikov + Problem reported by Kostya Serebryany . - [truetype] Limit delta shift range. + * src/autofit/afshaper.c (af_shaper_get_coverage) + [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Update signature. - The valid range for delta shift is zero through six. Negative values - are invalid according to +2016-01-20 Werner Lemberg - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM04/Chap4.html#delta%20shift + Still handle `__FTERRORS_H__'. - * src/truetype/ttobjs.h (delta_shift, delta_base): Make unsigned. - * src/truetype/ttinterp.h (DO_SDS): Throw an error if `delta_shift' - is out of range. - (Ins_DELTAP, Ins_DELTAC): Optimize for valid `delta_shift'. + We need this for backwards compatibility. -2014-10-16 Werner Lemberg + Problem reported by John Emmas . - A better fix for Savannah bug #43392. - Suggested by Doug Felt . + * include/freetype/fterrors.h: Fix inclusion guard so that + undefining either `FTERRORS_H_' or `__FTERRORS_H__' works as + expected. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Set - `vertAdvance' to zero... +2016-01-19 Werner Lemberg - * src/truetype/ttgload.c (TT_Load_Glyph): ... and set here a default - value for `vertAdvance' based on `linearVertAdvance' in case - `vertAdvance' is zero. Note that the previous computed ad-hoc value - for `linearVertAdvance' was apparently not tested in a real-life - situation. + [autofit] Fix handling of default script. -2014-10-14 David Weiß + Patch taken from ttfautohint, commit + 071ae2c00e0d67f9d19418f4fade1c23d27dc185. - [build] Better optimization settings for vc2010 solution file. + There were two bugs. - * builds/windows/vc2010/freetype.sln, - builds/windows/vc2010/freetype.vcxproj: Updated. + - We now use non-standard script tags like `khms' for special + purposes. However, HarfBuzz maps such tags to `DFLT', and + without this commit the associated lookups were incorrectly + assigned to the non-standard tags. -2014-10-14 Werner Lemberg + - Let's assume we have a Bengali font, and the font's `DFLT' + script tag handles the necessary lookups for Bengali, too. + Without this commit, the `DFLT' lookups were assigned to + ttfautohint's default script (usually `latn') before the + standard lookups for Bengali were handled. - [autofit] Adjust Devenagari character range. + We now have the following order while searching for covered + glyph indices. - * src/autofit/afranges.c (af_deva_uniranges): Omit characters that - are common to all other Indic scripts. + special features of scripts (e.g. `sups' for Cyrillic) + Unicode mappings of scripts + remaining features of scripts (especially important for Indic + scripts) + default features of default script -2014-10-12 Werner Lemberg + * src/autofit/afshaper.c, src/autofit/afshaper.h + (af_shaper_get_coverage): Add boolean parameter to indicate default + script. + Update all callers. - [sfnt] Fix Savannah bug #43392. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Fix search order for coverages. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Don't let - vertical metrics uninitialized. +2016-01-19 Werner Lemberg -2014-10-11 Alexei Podtelezhnikov + Various minor clang fixes. - [base] Small bbox correction. + * src/autofit/afcjk.c (af_cjk_metrics_init_widths), + src/autofit/aflatin.c (af_latin_metrics_init_widths): Initialize + `ch'. - * src/base/ftbbox.c (FT_Outline_Get_BBox): Start from nonsense bbox - instead of initial point that could be `off' in conic outlines. + * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Add cast. -2014-10-08 Alexei Podtelezhnikov + * src/base/ftdbgmem.c (ft_mem_table_destroy): Add cast. - [base] Fix Savannah bug #43356. + * src/base/fthash.c (hash_num_lookup): Add cast. - * src/base/ftbbox.c (BBox_Move_To, BBox_Conic_To): Update bbox in case - of implicit `to'. - (BBox_Line_To): New emitter that does not update bbox. + * src/base/fttrigon.c (ft_trig_downscale) [FT_LONG64]: Fix cast. -2014-10-08 Alexei Podtelezhnikov + * src/gxvalid/gxvcommn.c (gxv_EntryTable_validate): Comment out + redundant code. - [base] Introduce and use new macro `FT_UPDATE_BBOX' + * src/type1/t1driver.c (t1_get_ps_font_value) : Add + cast. - * src/base/ftbbox.c (FT_UPDATE_BBOX): New macro. - (FT_Outline_Get_BBox): Use it here. + * src/type1/t1load.c (parse_subrs): Fix type of `count'. -2014-10-02 Alexei Podtelezhnikov +2016-01-19 Derek B. Noonburg - [base] Significant optimization of `ft_div64by32' + [truetype] Add another tricky font. - We shift as many bits as we can into the high register, perform - 32-bit division with modulo there, then work through the remaining - bits with long division. This optimization is especially noticeable - for smaller dividends that barely use the high register. + * src/truetype/ttobjs.c (TRICK_SFNT_IDS_NUM_FACES): Increase. + (sfnt_id): Add variant of `DFKaiShu'. - * src/base/ftcalc.c (ft_div64by32): Updated. +2016-01-14 Alexei Podtelezhnikov -2014-10-02 Dave Arnold + [base] Empower `FT_Library_SetLcdFilterWeights'. - [cff] Fix Savannah bug #43271. + * src/base/ftlcdfil.c (FT_Library_SetLcdFilterWeights): Enable filter + in addition to setting weights. + (FT_Library_SetLcdFilter): Clean out FT_FORCE_LIGHT_LCD_FILTER and + FT_FORCE_LEGACY_LCD_FILTER. + * include/freetype/ftlcdfil.h: Documentation update. - * src/cff/cf2font.c (cf2_computeDarkening): Change overflow - detection to use logarithms and clamp `scaledStem'. +2016-01-12 Werner Lemberg -2014-10-01 Alexei Podtelezhnikov + Don't use macro names that start with `_[A-Z]' [3/3]. - * src/base/ftcalc.c: Remove miscellaneous type casts. + Such macro names are reserved for both C and C++. -2014-10-01 Alexei Podtelezhnikov + * src/cache/ftccache.h: s/_FTC_FACE_ID_HASH/FTC_FACE_ID_HASH/. + Update all callers. + (FTC_CACHE_LOOKUP_CMP): Replace `_XXX' with `XXX_'. + * src/cache/ftcmru.c (FTC_MRULIST_LOOKUP_CMP): Ditto. - [base] Use more common `FT_MSB' implementation with masks. +2016-01-12 Werner Lemberg - * src/base/ftcalc.c (FT_MSB): Updated. + Don't use macro names that start with `_[A-Z]' [2/3]. -2014-09-30 Alexei Podtelezhnikov + Such macro names are reserved for both C and C++. - [base] Clean up. + * include/freetype/ftimage.h, src/raster/ftraster.c, + src/smooth/ftgrays.c, src/smooth/ftgrays.h: + s/_STANDALONE_/STANDALONE_/. - * src/base/ftcalc.c (FT_MOVE_SIGN): New macro for frequently used - code. +2016-01-12 Werner Lemberg -2014-09-25 Alexei Podtelezhnikov + Don't use macro names that start with `_[A-Z]' [1/3]. - [base] Avoid unnecessary long division. + Such macro names are reserved for both C and C++. - This applies to `FT_MulDiv' but not to `FT_DivFix', where overflows or - lack thereof are predicted accurately. + * src/bdf/bdflib.c: Replace macros of the form `_BDF_XXX' with + `BDF_XXX_'. - * src/base/ftcalc.c (ft_div64by32): Improve readability. - (FT_MulDiv, FT_MulDiv_No_Round) [!FT_LONG64]: Use straight division - when multiplication stayed within 32 bits. +2016-01-12 Werner Lemberg -2014-09-24 Werner Lemberg + Don't use macro names that contain `__' [2/2]. - [autofit] Minor clean-ups. + Such macro names are reserved for both C and C++. - * src/autofit/afhints.c (AF_FLAGS): Remove obsolete values. + * src/cache/*: s/__/_/. - * src/autofit/afhints.c (af_glyph_hints_dump_points, - af_glyph_hints_align_strong_points): Updated. +2016-01-12 Werner Lemberg - * src/autofit/aflatin.c (af_latin_hints_link_segments, - af_latin_hints_compute_segments), src/autofit/afcjk.c - (af_cjk_hints_link_segments), src/autofit/aflatin2.c - (af_latin2_hints_link_segments, af_latin2_hints_compute_segments): - There are no longer fake segments since more than 10 years... + Don't use macro names that contain `__' [1/2]. -2014-09-22 Werner Lemberg + Such macro names are reserved for both C and C++. - [autofit] Minor code streamlining. + * */*: Replace macros of the form `__XXX_H__' with `XXX_H_'. - * src/autofit/afhints.c (af_axis_hints_new_edge): Remove redundant - initialization. +2016-01-10 Jered Gray -2014-09-19 Alexei Podtelezhnikov + [cff] Fix usage of `|' operator. - * src/base/ftcalc.c: Harmonize code. + * src/cff/cf2intrp.c (cf2_interpT2CharString) [cf2_cmdEXTENDEDNMBR, + default]: `|' is not guaranteed to be processed from left to right + by the compiler. However, the code repeatedly calls + `cf2_buf_readByte' to get the arguments to `|' ... Fix this. -2014-09-15 Alexei Podtelezhnikov +2015-12-25 Werner Lemberg - [base] Tighten the overflow check in `FT_MulDiv'. + [autofit] Make top-to-bottom hinting work in latin auto-hinter. - * src/base/ftcalc.c (FT_MulDiv) [!FT_LONG64]: Updated. + This improves rendering of scripts like Bengali or Devanagari. -2014-09-08 Alexei Podtelezhnikov + * src/autofit/afhints.c (af_axis_hints_new_edge): Add parameter to + pass top-to-bottom hinting flag. This makes the function sort edges + in descending vertical position. - Fix Savannah bug #43153. + * src/autofit/afhints.c: Updated. - * src/psaux/psconv.c (PS_Conv_ToFixed): Add protection against - overflow in `divider'. + * src/autofit/aflatin.c (af_latin_hints_compute_edges, + af_latin_hint_edges): Use `top_to_bottom_hinting' flag. -2014-09-03 Alexei Podtelezhnikov + * src/autofit/afcjk.c (af_cjk_hints_compute_edges), + src/autofit/aflatin2.c (af_latin2_hints_compute_edges): Updated. - [base] Tighten the overflow check in `FT_DivFix'. +2015-12-24 Werner Lemberg - This fixes a 13-year old bug. The original overflow check should have - been updated when rounding was introduced into this function - (c2cd00443b). + [autofit] Add hinting direction to `AF_ScriptClassRec'. - * src/base/ftcalc.c (FT_DivFix) [!FT_LONG64]: Updated. - * include/freetype.h (FT_DivFix): Updated documentation. + Still unused. -2014-09-03 Alexei Podtelezhnikov + * src/autofit/afglobal.c (SCRIPT): Handle hinting direction. - [base] Tighten the overflow check in `FT_MulFix'. + * src/autofit/aftypes.h (AF_ScriptClassRec): Add + `top_to_bottom_hinting' field. + (AF_HINTING_BOTTOM_TO_TOP, AF_HINTING_TOP_TO_BOTTOM): New macros. + (AF_DEFINE_SCRIPT_CLASS): Updated. - * src/base/ftcalc.c (FT_MulFix) [!FT_LONG64]: Updated. +2015-12-23 Werner Lemberg -2014-09-02 Alexei Podtelezhnikov + [autofit] Start implementing hinting direction (up/down, down/up). - [truetype] Shortcut ppem calculations for square pixels. + Right now, it does nothing. - * src/truetype/ttinterp.h (TT_ExecContextRec): New field - `cur_ppem_func' with a function pointer. - * src/truetype/ttinterp.c (TT_RunIns): Initialize `cur_ppem_func' - depending on the pixel geometry to either... - (Current_Ppem_Stretched): ... this for stretched pixels. - (Current_Ppem): ... or this for square pixels. - (DO_MPPEM, DO_MPS, Ins_DELTAP, Ins_DELTAC): Use `cur_ppem_func'. + * src/autofit/afscript.h: Add another parameter to `SCRIPT', + specifying hinting direction. -2014-08-31 Behdad Esfahbod + * src/autofit/afglobal.c, src/autofit/afglobal.h, + src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/afshaper.c, + src/autofit/aftypes.h: Extend `SCRIPT' definitions. - Don't use `register' keyword. Fixes compiler warnings. +2015-12-22 Werner Lemberg - * src/base/ftcalc.c (FT_Add64) [!FT_LONG64]: Do it. - * src/gzip/inftrees.c (huft_build): Ditto. - * src/truetype/ttinterp.c (TT_MulFix14_arm): Ditto. + * src/type1/t1load.c (parse_subrs): Fix memory leak (#46744). -2014-08-24 Alexei Podtelezhnikov +2015-12-22 Werner Lemberg - [truetype] Optimize DELTAP and DELTAC. + [base] Make hash interface symmetric. - * src/truetype/ttinterp.c (Ins_DELTAP, Ins_DELTAC): Move ppem - calculations outside of the loop. + Use `num' and `str' infixes everywhere. -2014-08-21 Alexei Podtelezhnikov + * src/base/fthash.c (ft_hash_init): Renamed to... + (hash_init): ... This. + (ft_hash_str_init, ft_hash_num_init): New functions. + (ft_hash_free): Renamed to... + (ft_hash_str_free): ... This. - Fix Savannah bug #43033. + * include/freetype/internal/fthash.h: Updated. - * include/config/ftconfig.h, builds/unix/ftconfig.in, - builds/vms/ftconfig.h [FT_LONG64]: Do not disable the macro when - 64-bit type is `long'. + * src/bdf/bdflib.c, src/type1/t1load.c, src/type1/t1objs.c: Updated. -2014-08-20 Alexei Podtelezhnikov +2015-12-21 Werner Lemberg - [base] Small optimization of `FT_MulFix'. + [type1] Avoid shift of negative numbers (#46732). - * src/base/ftcalc.c (FT_MulFix): Loosen up the condition for direct - 32-bit calculations. + * src/type1/t1load.c (parse_subrs): Do it. -2014-08-19 Alexei Podtelezhnikov +2015-12-20 Werner Lemberg - [base] Use unsigned calculation in `FT_MulDiv'. + [type1, psaux] Handle large values of num_subrs correctly (#46692). - * src/base/ftcalc.c (FT_MulDiv): Updated to expand 32-bit range. + We now use a hash to map from subr indices to array elements holding + the subroutines, if necessary. -2014-08-18 Alexei Podtelezhnikov + * include/freetype/internal/t1types.h: Include FT_INTERNAL_HASH_H. + (T1_FontRec): Add `subrs_hash' field. - [base] Remove truncation in `FT_DivFix'. + * include/freetype/internal/psaux.h: Include FT_INTERNAL_HASH_H. + (T1_DecoderRec): Add `subrs_hash' field. - * src/base/ftcalc.c (FT_DivFix): Updated. + * src/type1/t1load.h (T1_LoaderRec): Add `subrs_hash' field. -2014-08-14 Alexei Podtelezhnikov + * src/type1/t1driver.c: Include FT_INTERNAL_HASH_H. + (t1_ps_get_font_value) [PS_DICT_SUBR]: Look up hash if necessary. - Minor refactoring. + * src/type1/t1load.c: Include FT_INTERNAL_HASH_H. + (parse_subrs): Use hash for subr indices that exceed the allocated + number of subr slots. + (t1_init_loader): Remove unnecessary code. + (t1_done_loader, T1_Open_Face): Updated. - * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Updated. + * src/type1/t1gload.c (T1_Compute_Max_Advance, T1_Get_Advances, + T1_Load_Glyph): Updated. -2014-08-14 Alexei Podtelezhnikov + * src/type1/t1objs.c (T1_Face_Done): Updated. - Turn FT_MSB into a macro when using gcc builtins. + * src/psaux/t1decode.c: Include FT_INTERNAL_HASH_H. + (t1_decoder_parse_charstrings) [op_callsubr]: Look up hash if + necessary. - * src/base/ftcalc.c, include/internal/ftcalc.h: Updated. + * src/cid/cidgload.c (cid_load_glyph): Updated. -2014-08-12 Alexei Podtelezhnikov +2015-12-20 Werner Lemberg - [base] Avoid undefined FT_MSB in `BBox_Cubic_Check'. + [base] Thinko: Remove free function pointer. - * src/base/ftbbox.c (BBox_Cubic_Check): Update. - (update_cubic_max): Repalce with... - (cubic_peak): ... this, which now handles upscaling. + We don't copy keys or values while hashing. -2014-08-11 Alexei Podtelezhnikov + * include/freetype/internal/fthash.h (FT_Hash_FreeFunc): Removed. + (FT_HashRec): Remove `free' field. - [base] Handle collapsed outlines to avoid undefined FT_MSB. + * src/base/fthash.c (hash_str_free): Removed. + (ft_hash_init, ft_hash_free): Updated. - * src/base/ftoutln.c (FT_Outline_Get_Orientation): Update. +2015-12-20 Werner Lemberg -2014-08-11 Alexei Podtelezhnikov + [base, bdf] Don't expose `FT_Hashnode' in hash functions. - [base] Restore FT_MulFix inlining. + * src/base/fthash.c (hash_lookup, ft_hash_str_lookup, + ft_hash_num_lookup): Return pointer to `size_t' instead of + `FT_Hashnode'. - * include/freetype.h (FT_MulFix): Unconditionally defined. + * include/freetype/internal/fthash.h: Updated. - * src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: Move code from here... + * src/bdf/bdflib.c (bdf_get_property, _bdf_add_property, + bdf_get_font_property): Updated. - * include/internal/ftcalc.h [FT_MULFIX_ASSEMBLER]: ... to here, - which conditionally replaces the function with an inline version - through the macro. +2015-12-20 Werner Lemberg -2014-08-08 Alexei Podtelezhnikov + [base, bdf] Add number hashing. - * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Refactor. + * src/base/fthash.c (hash_num_lookup, hash_num_compare): New + functions. + (ft_hash_init): Add argument to select between number and string + hashing. + (ft_hash_num_insert, ft_hash_num_lookup): New functions. -2014-07-26 Werner Lemberg + * include/freetype/internal/fthash.h: Updated. - [cff] Fix typo. + * src/bdf/bdflib.c (_bdf_parse_start): Updated. - * src/cff/cf2hints.c (cf2_glyphpath_computeOffset): Use correct - offsets in third quadrant. +2015-12-20 Werner Lemberg - Reported by maks . + [base] Introduce hash lookup, compare, and free function pointers. -2014-07-17 Werner Lemberg + * include/freetype/internal/fthash.c (FT_Hash_LookupFunc, + FT_Hash_CompareFunc, FT_Hash_FreeFunc): New typedefs. + (FT_HashRec): Add `lookup', `compare', and `free' fields. - Fix Savannah bug #42788. + * src/base/fthash.c (hash_str_lookup, hash_str_compare, + hash_str_free): New functions. + (ft_hash_init): Set function pointers. + (hash_bucket, ft_hash_free): Use them. - * src/pfr/pfrobjs.c: Include `ftcalc.h'. +2015-12-20 Werner Lemberg -2014-07-16 Alexei Podtelezhnikov + [base, bdf] Use a union as a hash key. - Replace `ft_highpow2' function. + We want to support both an integer and a string key later on. - * src/pfr/pfrobjs.c (pfr_face_get_kerning): Use `FT_MSB' instead of - `ft_highpow2'. + * include/freetype/internal/fthash.h (FT_Hashkey): New union. + (FT_HashnodeRec): Updated. + (ft_hash_insert, ft_hash_lookup): Renamed to ... + (ft_hash_str_insert, ft_hash_str_lookup): ... this. - * src/base/ftutil.c, include/internal/ftobjs.h (ft_highpow2): Remove - it. + * src/base/fthash.c (hash_bucket): Updated. + (ft_hash_insert, ft_hash_lookup): Renamed to ... + (hash_insert, hash_lookup): ... this. + (ft_hash_str_insert, ft_hash_str_lookup): New wrapper functions. -2014-07-15 Alexei Podtelezhnikov + * src/bdf/bdflib.c: Updated. - * src/base/ftcalc.c (FT_MSB): Utilize gcc builtins. +2015-12-19 Werner Lemberg -2014-07-15 Alexei Podtelezhnikov + [bdf] Use new hash functions. - [base] Move assembler code back in the source file. + * src/bdf/bdf.h: Include FT_INTERNAL_HASH_H. + (hashnode, hashtable): Removed. + (bdf_font_t): Use `FT_HashRec' type for `proptbl'. - FT_MulFix assembler used to reside in ftcalc.c before f47d263f1b. + * src/bdf/bdflib.c: Remove all hash functions. + Update code for new hash structure and function names. - * include/config/ftconfig.h, builds/unix/ftconfig.in, - builds/vms/ftconfig.h [FT_MULFIX_ASSEMBLER]: Move code from here... +2015-12-19 Werner Lemberg + + [bdf, base] Lift hash functions from bdf driver to base module. + + * src/base/fthash.c, include/freetype/internal/fthash.h: New files, + containing (massaged) code from `bdflib.c' and `bdf.h'. + + * include/freetype/internal/internal.h (FT_INTERNAL_HASH_H): New + macro. + + * src/base/ftbase.c: Include `fthash.c'. + + * src/base/Jamfile (_sources): Add `fthash'. + + * src/base/rules.mk (BASE_SRC): Add `fthash.c'. + + * docs/LICENSE.TXT: Updated. + +2015-12-15 Werner Lemberg + + [autofit] Add blue-zone support for Bengali script. + + This essentially moves the Bengali script from the `Indic' hinter to + the `Latin' hinter. + + * src/autofit/afblue.dat: Add blue zone data for Bengali. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Bengali standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Bengali data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Bengali data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2015-12-14 Ben Wagner + + [bdf] Remove dead code (#46625). + + The BDF specification only allows decimal numbers, no octal or + hexadecimal decoding is needed. + + * src/bdf/bdflib.c (_bdf_atoul, _bdf_atol, _bdf_atous, + _bdf_atos): Remove unused code and parameters. + Update all callers. + (odigits): Remove. + +2015-12-14 Werner Lemberg + + [base] Fix calls to `FT_Stream_Seek'. + + * src/base/ftobjs.c (Mac_Read_sfnt_Resource, FT_Open_Face): Set + `error'. + +2015-12-14 Ben Wagner + + [base] Check error when seeking to data supplied offset (#46635). + + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): + `ft_lookup_PS_in_sfnt_stream' returns offset and length from + user supplied data. Use of this these values must be checked. + +2015-12-13 Werner Lemberg + + [autofit] Add support for Myanmar script. + + * src/autofit/afblue.dat: Add blue zone data for Myanmar. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Myanmar standard characters. + + * src/autofit/afranges.c: Add Myanmar data. - * src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: ... to here. + * src/autofit/afstyles.h: Add Myanmar data. -2014-07-14 Alexei Podtelezhnikov +2015-12-12 Werner Lemberg - [base] Further clean up color bitmap conversion. + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Minor. - * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Stop - using FT_MulFix and FT_DivFix since all calculations fit into 32 bits. +2015-12-12 Werner Lemberg -2014-07-13 Werner Lemberg + * src/autofit/afscript.h: Avoid potential crash. - [truetype] Improve handling of buggy `prep' tables. +2015-12-10 Werner Lemberg - In case of an error in the `prep' table, no longer try to execute it - again and again. This makes FreeType handle endless loops in buggy - fonts much faster. + [autofit] Restore OpenType feature check. - * src/truetype/ttobjs.h (TT_SizeRec): The fields `bytecode_ready' - and `cvt_ready' are now negative if not initialized yet, otherwise - they indicate the error code of the last run. + This was removed while rewriting the HarfBuzz interface. - * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep, - tt_size_done_bytecode, tt_size_init_bytecode, - tt_size_ready_bytecode, tt_size_init, tt_size_done, tt_size_reset): + * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add `hb_buf' field to + hold internal HarfBuzz buffer, needed for feature comparison. + + * src/autofit/afglobal.c (af_face_globals_new, + af_face_globals_free): Initialize and destroy `hb_buf'. + + * src/autofit/afshaper.c (af_shaper_get_cluster): Compare character + (cluster) with and without applied feature. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix tracing + message. + +2015-12-10 Werner Lemberg + + [autofit] Remove redundant code. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths): Do it. + +2015-12-09 Werner Lemberg + + [autofit] Thinko. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Don't count + empty blue zones (bug introduced 2015-12-06). + +2015-12-09 Werner Lemberg + + [autofit] Introduce subscript top blue zones. + + This feature is mainly for Khmer: The idea is to avoid a clash + between the top of subscript glyphs and the bottom of normal + baseline glyphs. + + This only works for character clusters mapped to multiple glyphs. + + * src/autofit/afblue.dat: Add subscript top blue zone for Khmer. + + * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_SUB_TOP): New + macro. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/aflatin.h (AF_LATIN_IS_SUB_TOP_BLUE, + AF_LATIN_BLUE_SUB_TOP): New macros. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle new + blue zone property. + Update tracing messages. + (af_latin_metrics_scale_dim): Handle new blue zone property. + (af_latin_hints_compute_blue_edges): Updated. + +2015-12-09 Werner Lemberg + + [autofit] Fix tracing message. + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Display + inactive blue zones also. + +2015-12-06 Werner Lemberg + + * src/autofit/afblue.dat: Add more Khmer clusters. + + Some fonts have incorrect ligatures; we need more samples to get a + good mean value. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + +2015-12-06 Werner Lemberg + + [autofit] Typos. + + * src/autofit/afshaper.c (af_shaper_buf_create, af_shaper_get_elem) + [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Make it compile. + +2015-12-06 Werner Lemberg + + [autofit] Add support for Khmer script. + + We split Khmer into two auto-hinter scripts: `Khmer' (`khmr') and + `Khmer symbols' (`khms', U+19E0-U+19FF). + + * src/autofit/afblue.dat: Add blue zone data for Khmer. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Khmer standard characters. + + * src/autofit/afranges.c: Add Khmer data. + + * src/autofit/afstyles.h: Add Khmer data. + +2015-12-06 Werner Lemberg + + [autofit] Rewrite HarfBuzz interface to support character clusters. + + Scripts like Khmer have blue zones that can't be directly + represented by Unicode characters. Instead, it is necessary to let + HarfBuzz convert character clusters into proper glyph representation + forms, then deriving the blue zone information from the resulting + glyphs. + + * src/autofit/hbshim.c, src/autofit/hbshim.h: Replaced by... + * src/autofit/afshaper.c, src/autofit/afshaper.h: ... these two new + files, providing a new API to access HarfBuzz. + + The new API manages a HarfBuzz buffer with `af_shaper_buf_create' + and `af_shaper_buf_destroy'. The buffer receives a UTF8 encoded + string with function `af_shaper_get_cluster', and the resulting + glyph data (indices, advance widths, vertical offsets) can be + iteratively accessed with function `af_shaper_get_elem'. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths, + af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_metrics_init_blues, af_latin_metrics_check_digits): Updated. - * src/truetype/ttgload.c (tt_loader_init): Updated. - * src/truetype/ttinterp.c (TT_RunIns): Force reexecution of `fpgm' - and `prep' only if we are in the `glyf' table. + * include/freetype/internal/fttrace.h: s/afharfbuzz/afshaper/. + + * src/autofit/afglobal.c: s/hbshim.h/afshaper.h/. + (af_face_globals_compute_style_coverage): Updated. + + * src/autofit/afglobal.h: s/hbshim.h/afshaper.h/. + + * src/autofit/autofit.c: s/hbshim.c/afshaper.c/. + + * src/autofit/Jamfile, src/autofit/rules.mk (AUTOF_DRV_SRC): + Updated. + +2015-12-06 Werner Lemberg + + [autofit] Prepare forthcoming changes. + + This makes it easier to control the commits. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Add dummy + loop. No functional change. + +2015-12-06 Werner Lemberg + + [autofit] Use string of standard characters. + + This is more flexible; additionally, it would allow character + clusters. + + * src/autofit/aftypes.h (SCRIPT, AF_DEFINE_SCRIPT_CLASS): Updated. + (AF_ScriptClassRec): Replace `standard_char[123]' with + `standard_charstring'. + + * src/autofit/afscript.h: Replace last three character arguments + of the `SCRIPT' calls with a string parameter, holding the standard + characters (in UTF-8 encoding) separated with spaces. + + * src/autofit/afglobal.c, src/autofit/afglobal.h, + src/autofit/afpic.c, src/autofit/afranges.c, src/autofit/hbshim.c + (SCRIPT): Updated. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths), + src/autofit/aflatin.c (af_latin_metrics_init_widths): Updated. + +2015-12-05 Werner Lemberg + + * src/autofit/afblue.dat: Separate blue zone characters with spaces. + + Another preparation for character cluster support. + + * src/autofit/afblue.c, src/autofit.afblue.h: Regenerated. + +2015-12-05 Werner Lemberg + + * src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces. + + Instead, reduce multiple spaces to a single one. We need this later + for supporting character clusters in `afblue.dat'. + +2015-12-05 Werner Lemberg + + * src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'. + + * src/autofit/afblue.h: Regenerated. + +2015-12-05 Werner Lemberg + + * src/autofit/afwarp.c: s/INT_MIN/FT_INT_MIN/. + +2015-12-03 Werner Lemberg + + * builds/unix/install.mk (install): Remove stale `ft2build.h'. + +2015-12-01 Werner Lemberg + + [type1] Avoid dangling pointer (#46572). + + * src/type1/t1afm.c (T1_Read_Metrics): Properly reset + `face->afm_data'. + +2015-11-28 Alexei Podtelezhnikov + + * include/freetype/ftlcdfil.h: Documentation tweak. + +2015-11-28 Werner Lemberg + + * Version 2.6.2 released. + ========================= + + + Tag sources with `VER-2-6-2'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.6.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.6.1/2.6.2/, s/261/262/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. + + * builds/unix/configure.raw (version_info): Set to 18:2:12. + * CMakeLists.txt (VERSION_PATCH): Set to 2. + + * docs/CHANGES: Updated. + +2015-11-28 Werner Lemberg + + Fix C++ compilation. + + * src/autofit/afloader.c: Include FT_INTERNAL_CALC_H. + + * src/truetype/ttgload.c (load_truetype_glyph): Pacify compiler. + +2015-11-28 Nikolaus Waxweiler + + Change default LCD filter to be normalized and color-balanced. + + * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Update + `default_filter'. + +2015-11-28 Werner Lemberg + + [docmaker] Allow references to section names. + + In the reference, we show the section's title enclosed in single + quotes. + + * src/tools/docmaker/formatter.py (Formatter::__init__): Collect + section names as identifiers. + + * src/tools/docmaker/tohtml.py (section_title_header): Split into... + (section_title_header1, section_title_header2): ... these two + strings. + (HtmlFormatter::make_block_url, make_html_word, html_source_quote): + Handle sections. + (HtmlFormatter::section_enter): Updated to add `id' HTML attribute. + +2015-11-27 Tamas Kenez + + [cmake] Add script to test the config module. + + * builds/cmake/testbuild.sh: New file. + +2015-11-27 Tamas Kenez + + * CMakeLists.txt: Create `freetype-config.cmake' config module. + +2015-11-27 Tamas Kenez + + * CMakeLists.txt: Set CMAKE_DEBUG_POSTFIX to `d'. + +2015-11-27 Tamas Kenez + + [cmake] Add better control of library dependencies. + + * CMakeLists.txt: Add `WITH_*' variables to force/auto/omit + ZLIB/BZip2/PNG/HarfBuzz. + +2015-11-27 Tamas Kenez + + [cmake] Make `FindHarfBuzz' observe the REQUIRED option. + + * builds/cmake/FindHarfBuzz.cmake: Implement it. + +2015-11-27 Werner Lemberg + + [cmake] Collect files specific to cmake in `builds/cmake'. + + * builds/FindHarfBuzz.cmake: Move to ... + * builds/cmake/FindHarfBuzz.cmake: ... this place. + + * CMakeLists.txt (CMAKE_MODULE_PATH): Updated. + +2015-11-27 Alexander Bock + + CMakeLists.txt: Honour new command line flag `FREETYPE_NO_DIST'. + +2015-11-26 Werner Lemberg + + [docmaker] Allow `foo[bar]' as identifier. + + We need this to handle equally named properties in different + modules. + + * src/tools/docmaker/content.py (re_identifier), + src/tools/docmaker/sources.py (re_crossref): Allow `foo[bar]'. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word, + HtmlFormatter::index_exit, HtmlFormatter::section_enter, + HtmlFormatter::block_enter): Handle `foo[bar]'. + +2015-11-25 Werner Lemberg + + * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46480). + + (_bdf_parse_glyphs): Always reset `p->glyph_name' after moving its + contents. + +2015-11-21 Werner Lemberg + + * include/freetype/internal/ftcalc.h: Don't use `register' keyword. + + This fixes compiler warnings. + + Reported by Behdad. + +2015-11-20 Werner Lemberg + + Add `FT_LCD_FILTER_LEGACY1' enum value. + + This does the same as `FT_LCD_FILTER_LEGACY'. + + See + + https://bugs.freedesktop.org/show_bug.cgi?id=92981 + + for the reasoning. + + * include/freetype/ftlcdfil.h (FT_LcdFilter): New value + `FT_LCD_FILTER_LEGACY1'. + + * src/base/ftlcdfil.c (FT_Library_SetLcdFilter): Use it. + +2015-11-15 Werner Lemberg + + * src/autofit/afhints.c (af_get_segment_index): Fix it. + + The old code was too simple, returning invalid values in most cases + where a segment crosses the contour start. + +2015-11-15 Werner Lemberg + + * src/bdf/bdflib.c (bdf_load_font): Fix small memory leak (#46439). + +2015-11-11 Werner Lemberg + + [cff, autofit] Switch off stem darkening by default. -2014-07-12 Werner Lemberg + * src/autofit/afmodule.c (af_autofitter_init), src/cff/cffobjs.c + (cff_driver_init): Do it. + +2015-11-10 Jan Alexander Steffens (heftig) + + Allow native CFF hinter in FT_RENDER_MODE_LIGHT. + + Both the native CFF hinter and the auto-hinter now have a very + similar rendering style. + + * include/freetype/freetype.h: Mention that FT_LOAD_TARGET_LIGHT no + longer implies FT_LOAD_FORCE_AUTOHINT. + + * include/freetype/ftmodapi.h (FT_MODULE_DRIVER_HINTS_LIGHTLY): New + macro. + + * include/freetype/internal/ftobjs.h (FT_DRIVER_HINTS_LIGHTLY): New + macro. + + * src/cff/cffdrivr.c (cff_driver_class): Use it. + + * src/base/ftobjs.c (FT_Load_Glyph): Update auto-hinter selection + logic. + +2015-11-09 Werner Lemberg + + * src/cid/cidload.c (cid_face_open): Fix GDBytes guard (#46408). + +2015-11-09 Werner Lemberg + + [truetype] Remove integer to pointer conversion compiler warning. - * builds/vms/ftconfig.h: Synchronize. Problem reported by Alexei. -2014-07-11 Alexei Podtelezhnikov + * src/truetype/ttgload.c (load_truetype_glyph): Use a solution found + in the glib library to fix the issue. - [base] Clean up bitmap conversion. +2015-11-08 Behdad Esfahbod - * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use - appropriate FT_DivFix and remove superfluous upscaling. + [sfnt] Accept version 3 of `EBLC' and `CBLC' tables also. -2014-07-04 Alexei Podtelezhnikov + * src/sfnt/ttsbit.c (tt_face_load_sbit): Implement it. - [base] Small optimization of the ancient code. +2015-11-08 Philipp Knechtges - * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Loosen up the - condition for direct 32-bit calculations. + [autofit] Don't distort (latin) glyphs too much (#46195). -2014-06-27 Werner Lemberg + * src/autofit/aflatin.h (AF_LatinBlueRec): Add `ascender' and + `descender' fields. - Fix Apple standard glyph names. + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Collect + ascender and descender data for blue zones. + (af_latin_metrics_scale_dim): Reject vertical scaling values that + change the result by more than two pixels. - * src/sfnt/ttpost.c (tt_post_default_names): Synchronize with - `tools/glnames.py' +2015-11-05 Werner Lemberg - Problem reported by Adam Twardoch . + [sfnt] Ignore embedded bitmaps with zero size (#46379). + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bit_aligned): Implement + it. + +2015-11-04 Werner Lemberg + + [truetype] Catch infinite recursion in subglyphs (#46372). + + * include/freetype/internal/tttypes.h (TT_LoaderRec): New field + `composites'. + + * src/truetype/ttgload.c: Include FT_LIST_H. + (load_truetype_glyph): Add composite subglyph index to a list; + abort if index is already in list. + (tt_loader_init): Updated. + (tt_loader_done): New function. + (TT_Load_Glyph): Call `tt_loader_done'. + +2015-11-04 Werner Lemberg + + [truetype] Better tracing of composite glyphs. + + * src/truetype/ttgload.c (TT_Load_Composite_Glyph, + load_truetype_glyph): Implement it. + +2015-11-03 Werner Lemberg + + [sfnt] Protect against zero-size bitmaps (#46345). + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Check + `glyph_size'. + +2015-11-02 Nikolaus Waxweiler + + * src/autofit/afloader.c (af_loader_load_g): Implement emboldening. + +2015-11-02 Nikolaus Waxweiler + + [autofit] Implement darkening computation function. + + This is a crude adaption of the original `cf2_computeDarkening' + function. + + * src/autofit/afloader.c (af_intToFixed, af_fixedToInt, + af_floatToFixed): New macros, taken from `cf2fixed.h'. + (af_loader_compute_darkening): New function. + * src/autofit/afloader.h: Updated. + +2015-11-02 Nikolaus Waxweiler + + [autofit] Add functions to get standard widths for writing systems. + + We need the computed standard horizontal and vertical widths for the + emboldening calculation. This method provides a convenient way to + extract it from writing-system-specific metrics structures, which + all script definitions must implement. + + * src/autofit/aftypes.h (AF_WritingSystem_GetStdWidthsFunc): New + function type. + (AF_WritingSystemClassRec): New member `style_metrics_getstdw'. + (AF_DEFINE_WRITING_SYSTEM_CLASS): Updated. + + * src/autofit/afcjk.c (af_cjk_get_standard_width): New function. + (af_cjk_writing_system_class): Updated. + * src/autofit/afdummy.c (af_dummy_writing_system_class): Updated. + * src/autofit/afindic.c (af_cjk_get_standard_width): New function. + (af_indic_writing_system_class): Updated. + * src/autofit/aflatin.c (af_latin_get_standard_width): New function. + (af_indic_writing_system_class): Updated. + * src/autofit/aflatin.c (af_latin_get_standard_width): New function. + (af_indic_writing_system_class): Updated. + +2015-11-02 Nikolaus Waxweiler + + [autofit] Extend `AF_FaceGlobalsRec' to hold emboldening data. + + * src/autofit/afglobal.h (AF_FaceGlobalsRec): Add fields. + + * src/autofit/afglobal.c (af_face_globals_new): Initialize new + fields. + (af_face_globals_free): Reset new fields. + +2015-11-02 Nikolaus Waxweiler + + [autofit] Add stem-darkening properties. + + Actual code follows in a later commit. + + * include/freetype/ftautoh.h: Document `no-stem-darkening' and + `darkening-parameters'. + + * src/autofit/afmodule.h: New fields `no_stem_darkening' and + `darken_params'. + + * src/autofit/afmodule.c (af_property_set, af_property_get): + Handle them. + (af_autofitter_init): Initialize them. + +2015-11-02 Ben Wagner + + [ftfuzzer] Add support for multiple files (patch #8779). + + Currently, libFuzzer only supports mutation of a single file. We + circumvent this problem by using an uncompressed tar archive as + multiple-file input for the fuzzer. + + This patch enables tests of `FT_Attach_Stream' and AFM/PFM parsing; + a constructed tarball should contain a font file as the first + element, and files to be attached as further elements. + + * src/tools/ftfuzzer/ftfuzzer.cc: Include libarchive headers. + (archive_read_entry_data, parse_data): New functions. + (LLVMFuzzerTestOneInput): Updated. + + * src/tools/ftfuzzer/ftmutator.cc: New file, providing a custom + mutator for libFuzzer that can mutate tarballs in a sensible way. + +2015-10-31 Werner Lemberg + + [sfnt] Fix cmap 14 validation (#46346). -2014-06-17 Werner Lemberg + * src/sfnt/ttcmap.c (tt_cmap14_validate): Check limit before + accessing `numRanges' and `numMappings'. + Fix size check for non-default UVS table. - Partially revert commit from 2014-06-13. +2015-10-31 Werner Lemberg - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Move - declaration of `p_first' and `p_last' out of the loop. + [sfnt] Handle infinite recursion in bitmap strikes (#46344). -2014-06-17 Werner Lemberg + * src/sfnt/ttsbit.c (TT_SBitDecoder_LoadFunc, + tt_sbit_decoder_load_bitmap, tt_sbit_decoder_load_byte_aligned, + tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_png): Add + argument for recursion depth. + (tt_sbit_decoder_load_compound): Add argument for recursion depth. + Increase recursion counter for recursive call. + (tt_sbit_decoder_load_image): Add argument for recursion depth. + Check recurse depth. + (tt_face_load_sbit_image): Updated. - * builds/unix/freetype2.m4: s/AC_PATH_PROG/AC_PATH_TOOL/. +2015-10-29 Werner Lemberg - This simplifies cross-compiling. + * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor. -2014-06-13 Werner Lemberg +2015-10-29 Werner Lemberg - Fix more compiler warnings. - Reported by Wojciech Mamrak . + * CMakeLists.txt: Remove code to set MSVC's /FD compiler switch. - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): - Make integer constant unsigned. + Problem reported by David Capello ; see - * src/sfnt/ttsbit.c (tt_face_load_strike_metrics) - : Fix types. - (tt_sbit_decoder_load_compound, tt_face_load_sbix_image): Add proper - casts. + http://lists.nongnu.org/archive/html/freetype-devel/2015-10/msg00108.html -2014-06-13 Werner Lemberg + for details. - Fix compiler warnings. - Reported by Wojciech Mamrak . +2015-10-27 Werner Lemberg - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage), - src/autofit/afmodule.c (af_property_set): Fix `signed' vs. - `unsigned' issues. + [pfr] Add some safety guards (#46302). - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Make compiler - happy. + * src/pfr/pfrload.h (PFR_CHECK): Rename to... + (PFR_CHECK_SIZE): ... this. + (PFR_SIZE): [!PFR_CONFIG_NO_CHECKS]: Define to PFR_CHECK_SIZE. - * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Use only four elements - for `fir'. - Fix `signed' vs. `unsigned' issues. + * src/pfr/pfrload.c (pfr_log_font_count): Check `count'. + (pfr_extra_item_load_kerning_pairs): Remove tracing message. + (pfr_phy_font_load): Use PFR_CHECK_SIZE where appropriate. + Allocate `chars' after doing a size checks. - * src/sfnt/sfobjs.c (WRITE_BYTE): Removed, unused. - (WRITE_USHORT, WRITE_ULONG): Add proper casts. + * src/pfr/pfrsbit.c (pfr_load_bitmap_bits): Move test for invalid + bitmap format to... + (pfr_slot_load_bitmap): ... this function. + Check bitmap size. - * src/truetype/ttgload.c (TT_Get_VMetrics): Add proper casts. +2015-10-26 Werner Lemberg - * src/truetype/ttinterp.c (Ins_DELTAP): Add proper casts for `B1' - and `B2'. + [truetype] Fix sanitizing logic for `loca' (#46223). -2014-05-16 Alexey Petruchik + * src/truetype/ttpload.c (tt_face_load_loca): A thinko caused an + incorrect adjustment of the number of glyphs, most often using far + too large values. - [cmake] Add option to build OS X framework. +2015-10-25 Werner Lemberg - * CMakeLists.txt: Update accordingly. + [autofit] Improve tracing. - * builds/mac/freetype-Info.plist: New file. + * src/autofit/afhints.c (af_print_idx, af_get_segment_index, + af_get_edge_index): New functions. -2014-05-13 Pavel Koshevoy + (af_glyph_hints_dump_points): Remove unnecessary `|', `[', and `]'. + Add segment and edge index for each point. + Slightly change printing order of some elements. + Don't print `-1' but `--' for missing elements. - * CMakeLists.txt (BASE_SRCS): Add missing `ftbdf.c'. + (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Remove + unnecessary `|', `[', and `]'. + Don't print `-1' but `--' for missing elements. -2014-05-11 Werner Lemberg +2015-10-24 Werner Lemberg - [autofit] Fix variable initializations. + [sfnt] Sanitize bitmap strike glyph height. - * src/autofit/afhints.c (af_glyph_hints_reload): Assign default - values to `in_dir' and `out_dir' for all points. + Problem reported by Nikolay Sivov . -2014-05-11 Werner Lemberg + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Avoid zero value + for `metrics->height' by applying some heuristics. - [autofit] Fix crash with font `CabinSketch-Bold.ttf'. +2015-10-22 Werner Lemberg - Problem reported by Ralf S. Engelschall . + [sfnt, type42] Fix clang compiler warnings. - * src/autofit/afhints.c (af_glyph_hints_reload): Fix threshold for - finding first non-near point. - Properly initialize non-near point deltas. + * src/sfnt/sfobjs.c (sfnt_init_face): Initialize `offset'. -2014-05-01 Werner Lemberg + * src/type42/t42parse.c (t42_parse_sfnts): Use proper cast. - [autofit] Add blue-zone support for Devanagari. +2015-10-22 Dave Arnold + Werner Lemberg - This essentially moves the Devanagari script from the `Indic' hinter - to the `Latin' hinter. Thanks to Girish Dalvi - for guidance with blue zone characters! + [cff] Avoid overflow/module arithmetic. - * src/autofit/afblue.dat: Add blue zone data for Devanagari. + This modifies the addition of subroutine number to subroutine bias + from unsigned to signed, but does not change any results. - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + * src/cff/cf2ft.c (cf2_initGlobalRegionBuffer, + cf2_initLocalRegionBuffer): Change variable names from (unsigned) + `idx' to (signed) `subrNum', since it is not an index until after + the bias is added. + * src/cff/cf2ft.h: Updated. - * src/autofit/afscript.h: Add Devanagari standard characters and - move data out of AF_CONFIG_OPTION_INDIC block. + * src/cff/cf2intrp.c (cf2_interpT2CharString) : + Updated similarly. - * src/autofit/afranges.c: Move Devanagari data out of - AF_CONFIG_OPTION_INDIC block. - Move U+20B9, (new) Rupee sign, from Latin to Devanagari. +2015-10-22 Werner Lemberg - * src/autofit/afstyles.h: Update Devanagari data; in particular, use - AF_WRITING_SYSTEM_LATIN. + [cid] Better check of `SubrCount' dictionary entry (#46272). -2014-05-01 Werner Lemberg + * src/cid/cidload.c (cid_face_open): Add more sanity tests for + `fd_bytes', `gd_bytes', `sd_bytes', and `num_subrs'. - [autofit] Fix handling of neutral blue zones in stems. +2015-10-21 Werner Lemberg - * src/autofit/afhints.h (AF_Edge_Flags): New value - `AF_EDGE_NEUTRAL'. + [base] Pacify compiler (#46266). - * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Trace - neutral blue zones with AF_EDGE_NEUTRAL. - (af_latin_hint_edges): Skip neutral blue zones if necessary. + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Initialize `in' and + `anchor'. -2014-04-28 Werner Lemberg +2015-10-21 Werner Lemberg - [autofit] Introduce neutral blue zones to the latin module. + [type42] Fix heap buffer overflow (#46269). - Such blue zones match either the top or the bottom of a contour. We - need them for scripts where accent-like elements directly touch the - base character (for example, some vowel signs in Devanagari, cf. - U+0913 or U+0914). + * src/type42/t42parse.c (t42_parse_sfnts): Fix off-by-one error in + bounds checking. - * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_NEUTRAL): New - property. +2015-10-21 Dave Arnold - * src/autofit/afblue.h: Regenerated. + [cff] Fix limit in assert for max hints. - * src/autofit/aflatin.h (AF_LATIN_IS_NEUTRAL_BLUE): New macro. - (AF_LATIN_BLUE_NEUTRAL): New enumeration value. + * src/cff/cf2interp.c (cf2_hintmask_setAll): Allow mask equal to the + limit (96 bits). - * src/autofit/aflatin.c (af_latin_metrics_init_blues, - af_latin_hints_compute_blue_edges): Handle neutral blue zones. +2015-10-21 Dave Arnold -2014-04-25 Werner Lemberg + [cff] Remove an assert (#46107). - * src/autofit/hbshim.c: Partially revert commit from 2014-04-17. + * src/cff/cf2hints.c (cf2_hintmap_insertHint): Ignore paired edges + in wrong order. - Using input glyph coverage data is simply wrong. +2015-10-21 Werner Lemberg - Problem reported by Nikolaus Waxweiler and - Mantas Mikulėnas . + [sfnt] Avoid unnecessarily large allocation for WOFFs (#46257). -2014-04-23 Werner Lemberg + * src/sfnt/sfobjs.c (woff_open_font): Use WOFF's `totalSfntSize' + only after thorough checks. + Add tracing messages. - * src/raster/ftraster.c (Vertical_Sweep_Span): Use drop-out mode. +2015-10-21 Werner Lemberg - This spot has been missed while introducing support for various - drop-out modes years ago (including no drop-out mode, which this - commit fixes). + [type42] Better check invalid `sfnts' array data (#46255). - Problem reported by Patrick Thomas . + * src/type42/t42parse.c (t42_parse_sfnts): Table lengths must be + checked individually against available data size. -2014-04-22 Werner Lemberg +2015-10-20 Werner Lemberg - * src/sfnt/pngshim.c (error_callback): s/longjmp/ft_longjmp/. + [cid] Add a bunch of safety checks. -2014-04-20 Werner Lemberg + * src/cid/cidload.c (parse_fd_array): Check `num_dicts' against + stream size. + (cid_read_subrs): Check largest offset against stream size. + (cid_parse_dict): Move safety check to ... + (cid_face_open): ... this function. + Also test length of binary data and values of `SDBytes', + `SubrMapOffset', `SubrCount', `CIDMapOffset', and `CIDCount'. - [autofit] Fix Savannah bug #42148. +2015-10-20 Werner Lemberg - The adaptation of the cjk auto-hinter module to blue stringsets in - 2013-08-25 had three severe bugs. Mea culpa. + [cid] Avoid segfault with malformed input (#46250). - 1. Contrary to the latin auto-hinter, characters for reference and - overshoot values of a blue zone are specified separately. Due to - the screwed-up change it didn't work at all. + * src/cid/cidload.c (cid_read_subrs): Return a proper error code for + unsorted offsets. - 2. A boolean comparison was erroneously replaced with a cast, - causing invalid results with the `^' operator later on. The - visual artifact caused by this problem is the topic of the bug - report. +2015-10-20 StudioEtrange - 3. Two flag values were inverted, causing incorrect assignment of - reference and overshoot values. + * CMakeLists.txt: Enable shared library builds on MinGW (#46233). - * src/autofit/afblue.dat: Fix CJK bluestrings, introducing a new - syntax to have both reference and overshoot characters in a single - string. This is error #1. - Add extensive comments. +2015-10-20 Werner Lemberg - * src/autofit/afblue.hin (AF_BLUE_PROPERTY_CJK_FILL): Removed, no - longer used. - (AF_BLUE_PROPERTY_CJK_TOP, AF_BLUE_PROPERTY_CJK_HORIZ): Fix values. - This is error #3. + * src/type1/t1afm.c (T1_Read_Metrics): Fix memory leak (#46229). - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. +2015-10-19 Ben Wagner - * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Correct error #1. - Use character `|' to separate characters for reference and overshoot - values. - Improve tracing messages, synchronizing them with the latin - auto-hinter. - (af_cjk_hints_compute_blue_edges): Fix value of `is_top_right_blue'. - This is error #2. - (af_cjk_align_linked_edge): Add tracing message. + [cid] Better handle invalid glyph stream offsets (#46221). - * src/autofit/afcjk.h (AF_CJK_IS_FILLED_BLUE): Removed, no longer - used. + * src/cid/cidgload.c (cid_load_glyph): Check minimum size of glyph + length. -2014-04-17 Werner Lemberg +2015-10-18 Werner Lemberg - [autofit] More coverage fixes for complex scripts. + [psaux] Fix tracing of negative numbers. - * src/autofit/hbshim.c (af_get_coverage): Merge input glyph coverage - of GSUB lookups into output coverage. Otherwise, ligatures are not - handled properly. - Don't check blue zone characters for default coverage. + Due to incorrect casting negative numbers were shown as very large + (positive) integers on 64bit systems. -2014-04-17 Werner Lemberg + * src/psaux/t1decode.c (t1_decoder_parse_charstrings) : + Use division instead of shift. - Make `FT_Get_SubGlyph_Info' actually work. +2015-10-18 Werner Lemberg - * src/base/ftobjs.c (FT_Get_SubGlyph_Info): Return FT_Err_Ok - if there is no error. + [truetype] Improve TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46223). -2014-04-15 Werner Lemberg + * devel/ftoption.h, include/freetype/config/ftoption.h: Surround it + with #ifndef ... #endif, as suggested in the tracker issue. - [afblue.pl]: Minor improvements. +2015-10-18 Werner Lemberg - * src/tools/afblue.pl: Allow whitespace before comments. - Ignore whitespace in strings. + [truetype] Better protection against malformed `fpgm' (#46223). -2014-04-14 Werner Lemberg + * src/truetype/ttobjs.c (tt_size_init_bytecode): Don't execute a + malformed `fpgm' table more than once. - [autofit] Improve coverage handling. +2015-10-17 Werner Lemberg - * src/autofit/hbshim.c (af_get_coverage): Don't exclude glyphs - appearing in the GPOS table if we are processing the default - coverage. + * src/cid/cidgload.c (cid_load_glyph): Fix memory leak. -2014-04-13 David Weber + Reported by Kostya Serebryany . - [smooth] Fix stand-alone compilation. +2015-10-17 Werner Lemberg - * src/smooth/ftgrays.c (FT_BEGIN_STMNT, FT_END_STMNT): Define. + [bdf] Prevent memory leak (#46217). -2014-04-12 Werner Lemberg + * src/bdf/bdflib.c (_bdf_parse_glyphs) : Check + _BDF_GLYPH_BITS. - [autofit] Redesign the recognition algorithm of strong points. +2015-10-17 Werner Lemberg - In particular, local extrema without horizontal or vertical segments - are better recognized: + [bdf] Use stream size to adjust number of glyphs. - + A + D - \ / - \ / - \ / - \ / - \ + C - \ / - B +/ + * src/bdf/bdflib.c (ACMSG17): New message macro. + (_bdf_parse_t): Add member `size'. + (bdf_load_font): Set `size'. + (_bdf_parse_glyphs): Adjust `cnt' if necessary. - If the distances AB and CD are large, point B wasn't previously - detected as an extremum since the `ft_corner_is_flat' function - `swallowed' BC regardless of its direction, tagging point B as weak. - The next iteration started at B and made `ft_corner_is_flat' swallow - point C, tagging it as weak also, et voilà. +2015-10-17 Werner Lemberg - To improve that, another pass gets now performed before calling - `ft_corner_is_flat' to improve the `topology' of an outline: A - sequence of non-horizontal or non-vertical vectors that point into - the same quadrant are handled as a single, large vector. + * src/cid/cidload.c (cid_parse_dict): Check `[FG]DBytes' size. - Additionally, distances of near points are now accumulated, which - makes the auto-hinter handle them as if they were prepended to the - next non-near vector. +2015-10-17 Werner Lemberg - This generally improves the auto-hinter's rendering results. + * src/cid/cidgload.c (cid_glyph_load): Check file offsets (#46222). - * src/autofit/afhints.c (af_glyph_hints_reload): Implement it. +2015-10-17 Werner Lemberg - * src/autofit/afhints.h (AF_FLAGS): Remove no longer used flag - `AF_FLAG_NEAR'. + [psaux] Fix heap buffer overflow (#46221). -2014-04-05 Werner Lemberg + * src/psaux/t1decode.c (t1_decoder_parse_charstring) : + Fix limit check. - [autofit] Improve scoring algorithm for identifying stems. +2015-10-17 Werner Lemberg - Problem reported by Karsten Lücke . + * src/cid/cidload.c (cid_parse_dict): Handle invalid input (#46220). - The new algorithm takes care of the width of stems: If the distance - between two segments is larger than the largest stem width, the - demerits quickly increase for larger distances. This improves - hinting of slanted fonts (especially if the inner parts of serifs - have non-horizontal `shoulders'), avoiding false stem links. +2015-10-15 Kostya Serebryany - * src/autofit/aflatin.c (af_latin_hints_link_segments): Use largest - stem width (if available) to compute better demerits for distances - between stems. - (af_latin_hints_detect_features): Pass stem width array and array - size. - (af_latin_metrics_init_widths): Updated to use original algorithm. - (af_latin_hints_apply): Updated to use new algorithm. + [ftfuzzer] Add README. - * src/autofit/aflatin.h: Updated. - * src/autofit/afcjk.c: Updated. + * src/tools/ftfuzzer/README: New file. -2014-04-03 Werner Lemberg +2015-10-15 Ben Wagner - Don't require `gzip' module for `sfnt'. + [bdf] Fix memory leak (#46213). - Reported by Preet . + * src/bdf/bdflib.c (bdf_load_font): Always go to label `Fail' in + case of error. - * src/sfnt/sfobjs.c (woff_open_font): Guard use of - FT_Gzip_Uncompress with FT_CONFIG_OPTION_USE_ZLIB. +2015-10-15 Werner Lemberg -2014-03-27 Werner Lemberg + [truetype] Add TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES (#46208). - Fix Savannah bug #38235. + * devel/ftoption.h, include/freetype/config/ftoption.h + (TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES): New configuration macro. - Work around a bug in pkg-config version 0.28 and earlier: If a - variable value gets surrounded by doublequotes (in particular values - for the `prefix' variable), the prefix override mechanism fails. + * src/truetype/ttinterp.c (MAX_RUNNABLE_OPCODES): Removed. + (TT_RunIns): Updated. - * builds/unix/freetype2.in: Don't use doublequotes. - * builds/unix/unix-def.in (freetype.pc): Escape spaces in directory - names with backslashes. +2015-10-15 Werner Lemberg -2014-03-24 Werner Lemberg + * src/truetype/ttinterp.c (TT_RunIns): Fix bytecode stack tracing. - Fix Savannah bug #41946. + The used indices were off by 1. - Based on a patch from Marek Kašík . +2015-10-15 Ben Wagner + Werner Lemberg - * builds/unix/configure.raw (LIBS_CONFIG): Remove. - * builds/unix/freetype-config.in (libs): Hard-code value. - * builds/unix/unix-def.in: Updated. + * src/tools/ftfuzzer/ftfuzzer.cc: Handle fixed sizes (#46211). -2014-03-22 Werner Lemberg +2015-10-15 Werner Lemberg - Another revert for the change from 2014-03-18. + [base] Compute MD5 checksums only if explicitly requested. - Problem reported by Nikolaus Waxweiler . + This improves profiling accuracy. - * src/base/ftcalc.c (FT_MulFix): Ensure that an `FT_MulFix' symbol - gets always exported. + * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it. -2014-03-20 Werner Lemberg +2015-10-14 Werner Lemberg - CMakeLists.txt: Another fix for include directories. + [base] Use `FT_' namespace for MD5 functions (#42366). - Problem reported by Taylor Holberton . + * src/base/ftobjs.c (MD5_*): Define as `FT_MD5_*'. + Undefine HAVE_OPENSSL. -2014-03-19 Werner Lemberg +2015-10-13 Werner Lemberg - CMakeLists.txt: Fix include directories. + [type1] Correctly handle missing MM axis names (#46202). - Problem reported by Taylor Holberton . + * src/type1/t1load.c (T1_Get_MM_Var): Implement it. -2014-03-19 Werner Lemberg +2015-10-13 Werner Lemberg - Partially revert last commit. + [pcf] Quickly exit if font index < 0. - Found by Alexei. + Similar to other font formats, this commit makes the parser no + longer check the whole PCF file but only the header and the TOC if + we just want to get the number of available faces (and a proper + recognition of the font format). - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initializing - those variables is plain wrong, since we are in a loop. + * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated. + Exit quickly if face_index < 0. -2014-03-18 Sean McBride - Werner Lemberg + * src/pcfread.c (pcf_load_font): Add `face_index' argument. + Exit quickly if face_index < 0. - Fix clang warnings. + * src/pcf/pcf.h: Updated. - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initialize - some variables. +2015-10-13 Werner Lemberg - * src/base/ftcalc.c (FT_MulFix): Only use code if - `FT_MULFIX_INLINED' is not defined. + [ftfuzzer] Handle TTCs and MM/GX variations. - * src/bdf/bdfdrivr.c (bdf_cmap_class), src/cache/ftcbasic.c - (ftc_basic_image_family_class, ftc_basic_image_cache_class, - ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class), - src/cache/ftccmap.c (ftc_cmap_cache_class), src/cache/ftcmanag.c - (ftc_size_list_class, ftc_face_list_class), src/pcf/pcfdrivr.c - (pcf_cmap_class), src/pfr/pfrdrivr.c (pfr_metrics_service_rec): Make - function static. + This patch also contains various other improvements. - * src/type1/t1driver.c (t1_ps_get_font_value): Remove redundant - code. + * src/tools/ftfuzzer/ftfuzzer.cc: Add preprocessor guard to reject + pre-C++11 compilers. + (FT_Global): New class. Use it to provide a global constructor and + destructor for the `FT_Library' object. + (setIntermediateAxis): New function to select an (arbitrary) + instance. + (LLVMFuzzerTestOneInput): Loop over all faces and named instances. + Also call `FT_Set_Char_Size'. -2014-03-17 Werner Lemberg +2015-10-13 Werner Lemberg - Fix Savannah bug #41869. + [truetype] Refine some GX sanity tests. - This works around a problem with HarfBuzz (<= 0.9.26), which doesn't - validate glyph indices returned by - `hb_ot_layout_lookup_collect_glyphs'. + Use the `gvar' table size instead of the remaining bytes in the + stream. - * src/autofit/hbshim.c (af_get_coverage): Guard `idx'. + * src/truetype/ttgxvar.h (GX_BlendRec): New field `gvar_size'. - * docs/CHANGES: Updated. + * src/truetype/ttgxvar.c (ft_var_load_gvar): Set `gvar_size'. + (ft_var_readpackedpoints, ft_var_readpackeddeltas: New argument + `size'. + (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Updated. -2014-03-14 Werner Lemberg +2015-10-13 Werner Lemberg - * builds/unix/configure.raw: Don't show error messages of `which'. + [truetype] Another GX sanity test. -2014-03-09 Alan Coopersmith + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Check + `tupleCount'. + Add tracing message. - Fix cppcheck 1.64 warning. +2015-10-13 Werner Lemberg - * src/autofit/afglobal.c (af_face_globals_new): Catch NULL pointer - dereference in case of error. + [truetype] Fix memory leak for broken GX fonts (#46188). -2014-03-09 Sean McBride + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Fix scope of + deallocation. - * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove clang warning. +2015-10-13 Werner Lemberg -2014-03-06 Werner Lemberg + [truetype] Fix commit from 2015-10-10. - * Version 2.5.3 released. - ========================= + * src/truetype/ttgxvar.c (ft_var_load_gvar): Add missing error + handling body to condition. +2015-10-12 Werner Lemberg - Tag sources with `VER-2-5-3'. + [unix] Make MKDIR_P actually work. - * docs/VERSION.DLL: Update documentation and bump version number to - 2.5.3. + * builds/unix/configure.raw: Fix underquoting of `INSTALL' and + `MKDIR_P'. - * 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.2/2.5.3/, s/252/253/. + Problem reported by Dan Liddell . - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. +2015-10-11 Werner Lemberg - * builds/unix/configure.raw (version_info): Set to 17:2:11. - * CMakeLists.txt (VERSION_PATCH): Set to 3. - * docs/CHANGES: Updated. + [sfnt] Improve extraction of number of named instances. -2014-03-06 Werner Lemberg + * src/sfnt/sfobjs.c (sfnt_init_face) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Check number of instances against + `fvar' table size. - Fixes for compilation with C++. +2015-10-10 Alexei Podtelezhnikov - * src/autofit/hbshim.c (scripts): Change type to `hb_script_t'. - (af_get_coverage): Updated. - (COVERAGE): Add cast. + * src/base/ftoutln.c (FT_Outline_Get_Orientation): Fix overflow + (#46149). -2014-03-06 Sean McBride +2015-10-10 Werner Lemberg - Remove more clang analyzer warnings. + [sfnt] Fix infinite loops with broken cmaps (#46167). - * src/bdf/bdflib.c (_bdf_readstream), src/truetype/ttgload.c - (TT_Load_Glyph): Remove dead stores. + * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next): Take care + of border conditions (i.e., if the loops exit naturally). -2014-03-05 Werner Lemberg +2015-10-10 Werner Lemberg - * builds/unix/configure.raw: Simplify. + [truetype] More sanity tests for GX handling. -2014-03-05 suzuki toshiya + These tests should mainly help avoid unnecessarily large memory + allocations in case of malformed fonts. - Fix a bug in configure in library dependency setting - Reported in https://bugs.freedesktop.org/show_bug.cgi?id=75652. + * src/truetype/ttgxvar.c (ft_var_readpackedpoints, + ft_var_readpackeddeltas): Check number of points against stream + size. + (ft_var_load_avar): Check `pairCount' against table length. + (ft_var_load_gvar): Check `globalCoordCount' and `glyphCount' + against table length. + (tt_face_vary_cvt): Check `tupleCount' and `offsetToData'. + Fix trace. + (TT_Vary_Apply_Glyph_Deltas): Fix trace. + Free `sharedpoints' to avoid memory leak. - * builds/unix/configure.raw: Use `x"${xxx}" != xno' style. +2015-10-10 Werner Lemberg -2014-03-04 Werner Lemberg + [truetype] Better protection against malformed GX data (#46166). - Minor fix for `make devel'. + * src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Correctly + handle empty `localpoints' array. - * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Don't use - pkg-config for bzip2 since not all GNU/Linux distributions have - `bzip2.pc' (and the header file `bzlib.h' is located in /usr/include - normally). +2015-10-10 Werner Lemberg -2014-03-04 Sean McBride + * src/pcf/pcfread.c (pcf_read_TOC): Check stream size (#46162). - Fix several clang static analyzer dead store warnings. +2015-10-09 Werner Lemberg - * src/autofit/afhints.c (af_glyph_hints_reload, - af_glyph_hints_align_weak_points): Remove unnecessary assignments. + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use real stream size. - * src/bdf/bdflib.c (bdf_font_load): Ditto. +2015-10-08 Werner Lemberg - * src/pshinter/pshalgo.c (psh_glyph_compute_extrema, - psh_glyph_interpolate_other_points): Ditto. + [pcf] Protect against invalid number of TOC entries (#46159). - * src/type1/t1load.c (T1_Set_MM_Blend): Ditto. + * src/pcf/pcfread.c (pcf_read_TOC): Check number of TOC entries + against size of data stream. -2014-03-03 Werner Lemberg +2015-10-08 Werner Lemberg - Rewrite library option handling in `configure'. + [type42] Protect against invalid number of glyphs (#46159). - o Introduce `auto' value for `--with-XXX' library options; this is - now the default. + * src/type42/t42parse.c (t42_parse_charstrings): Check number of + `CharStrings' dictionary entries against size of data stream. - o First use `pkg-config' for library detection, then fall back to - other tests. +2015-10-08 Werner Lemberg - * builds/unix/configure.raw (--with-zlib, --with-bzip2, --with-png, - --with-harfbuzz): Rewrite. - Use new `xxx_reqpriv', `xxx_libpriv', and `xxx_libstaticconf' - variables to collect data for `freetype2.pc' and `freetype-config'. - (FT2_EXTRA_LIBS): Renamed to ... - (ft2_extra_libs): This since it gets no longer substituted. - (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBS_CONFIG, LIBSSTATIC_CONFIG): - New output variables, replacing `XXX_PKG' and `LIBXXX'. - Add notice at the end of `configure' showing the library - configuration. + [sfnt] Fix some signed overflows (#46149). - * builds/unix/freetype-config.in (--static): New command line - option. - (libs): Updated. - (staticlibs): New variable, to be used if `--static' is given. - * docs/freetype-config.1: Document `--static'. + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics) + : Use `FT_MulDiv'. - * builds/unix/freetype2.in, builds/unix/unix-def.in: Updated. +2015-10-08 Werner Lemberg -2014-03-01 Werner Lemberg + [type1] Protect against invalid number of subroutines (#46150). - Avoid `long long' warnings with older gcc compilers. - Problem reported by Hin-Tak Leung . + * src/type1/t1load.c (parse_subrs): Check number of + `Subrs' dictionary entries against size of data stream. - * builds/unix/configure.raw: Don't use gcc's `-pedantic' flag for - versions < 4.6. This is especially needed for Max OS X since this - OS runs a gcc variant (or emulation) based on version 4.2.1. +2015-10-07 Kostya Serebryany -2014-03-01 Werner Lemberg + [ftfuzzer] Add support for LLVM's LibFuzzer. - * docs/INSTALL.CROSS: Revised and updated. + * src/tools/ftfuzzer/ftfuzzer.cc, src/tools/runinput.cc: New files. -2014-03-01 Werner Lemberg +2015-10-06 Alexei Podtelezhnikov - Make `make clean' remove `freetype2.pc'. + [smooth] Faster alternative line renderer. - This is a generated file at build time, not configure time. + This implementation renders the entire line segment at once without + subdividing it into scanlines. The main speed improvement comes from + reducing the number of divisions to just two per line segment, which + is a bare minimum to calculate cell coverage in a smooth rasterizer. + Notably, the progression from cell to cell does not itself require any + divisions at all. The speed improvement is more noticeable at larger + sizes. - * builds/unix/unix-def.in (DISTCLEAN): Move `freetype2.pc' to ... - (CLEAN): This variable. + * src/smooth/ftgrays.c (gray_render_line): New implementation. -2014-03-01 Werner Lemberg +2015-10-06 Werner Lemberg - Use pkg-config for detecting libpng and libbz2 also. + [cff] Return correct PS names from pure CFF (#46130). - * builds/unix/configure.raw (HAVE_PKG): New variable. - Search for libbz2 using `pkg-config'; s/BZ2/BZIP2/. - Search for libpng using `pkg-config'. - Fix definition of `LIBHARFBUZZ' variable. - * builds/unix/freetype-config.in ($libs): Updated. - * builds/unix/freetype2.in: Add `URL' field. - Update `Requires.private' and `Libs.private'. - * builds/unix/unix-def.in: Updated. + * src/cff/cffdrivr.c (cff_get_ps_name): Use SFNT service only for + SFNT. -2014-03-01 Werner Lemberg +2015-10-04 Werner Lemberg - Add configure support for HarfBuzz. + [base] Replace left shifts with multiplication (#46118). - * builds/unix/pkg.m4: New file. - * builds/unix/configure.raw: Search for libharfbuzz using - `pkg-config'. - Add `--without-harfbuzz' option. - * builds/unix/freetype-config.in, builds/unix/freetype2.in, - builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle - HarfBuzz. + * src/base/ftglyph.c (ft_bitmap_glyph_bbox, FT_Get_Glyph): Do it. - * docs/INSTALL.UNIX: Document interdependency of Freetype with - HarfBuzz. +2015-10-04 Werner Lemberg -2014-02-28 Alexei Podtelezhnikov + * Version 2.6.1 released. + ========================= - [cff] Math simplifications. - * src/cf2blues.c (cf2_blues_init): Use `FT_MulDiv'. - * src/cf2ft.c (cf2_getScaleAndHintFlag): Use simple division. + Tag sources with `VER-2-6-1'. -2014-02-28 Dave Arnold + * docs/VERSION.DLL: Update documentation and bump version number to + 2.6.1. - [cff] Fix Savannah bug #41697, part 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.6/2.6.1/, s/26/261/. - * src/cff/cf2ft.c (cf2_initLocalRegionBuffer, - cf2_initGlobalRegionBuffer): It is possible for a charstring to call - a subroutine if no subroutines exist. This is an error but should - not trigger an assert. Split the assert to account for this. + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. -2014-02-28 Dave Arnold + * builds/unix/configure.raw (version_info): Set to 18:1:12. + * CMakeLists.txt (VERSION_PATCH): Set to 1. - [cff] Fix Savannah bug #41697, part 1. + * src/autofit/afmodule.c [AF_DEBUG_AUTOFIT]: Ensure C linking for + dumping functions. - * src/cff/cf2hints.c (cf2_hintmap_build): Return when `hintMask' is - invalid. In this case, it is not safe to use the length of - `hStemHintArray'; the exception has already been recorded in - `hintMask'. +2015-10-04 Werner Lemberg -2014-02-26 Werner Lemberg + [bzip2, gzip] Avoid access of uninitialized memory (#46109). - [sfnt] Fix Savannah bug #41696. + * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_input), src/gzip/ftgzip.c + (ft_gzip_file_fill_input): In case of an error, adjust the limit to + avoid copying uninitialized memory. - * src/sfnt/ttcmap.c (tt_cmap0_validate, tt_cmap2_validate, - tt_cmap4_validate, tt_cmap14_validate): Fix limit tests. +2015-10-03 Werner Lemberg -2014-02-26 Werner Lemberg + [bzip2, gzip] Avoid access of uninitialized memory (#46109). - [winfnt] Fix Savannah bug #41694. + * src/bzip2/ftbzip2.c (ft_bzip2_file_fill_output), src/gzip/ftgzip.c + (ft_gzip_file_fill_output): In case of an error, adjust the limit to + avoid copying uninitialized memory. - * src/winfonts/winfnt.c (FNT_Load_Glyph): Check glyph offset. +2015-10-01 Alexei Podtelezhnikov -2014-02-26 Werner Lemberg + [smooth] Clean up worker. - [cff] Fix Savannah bug #41693. + * src/smooth/ftgrays.c (gray_TWorker): Remove never used fields. - * src/cff/cffload.c (CFF_Load_FD_Select): Reject empty array. +2015-10-01 Werner Lemberg -2014-02-26 Werner Lemberg + [sfnt] Make `tt_cmap4_char_map_linear' more robust (#46078). - [bdf] Fix Savannah bug #41692. + * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Take care of + border conditions (i.e., if the loop exits naturally). - bdflib puts data from the input stream into a buffer in chunks of - 1024 bytes. The data itself gets then parsed line by line, simply - increasing the current pointer into the buffer; if the search for - the final newline character exceeds the buffer size, more data gets - read. +2015-10-01 Werner Lemberg - However, in case the current line's end is very near to the buffer - end, and the keyword to compare with is longer than the current - line's length, an out-of-bounds read might happen since `memcmp' - doesn't stop properly at the string end. + * src/autofit/afranges.c (af_deva_nonbase_uniranges): Fix ranges. + They should be a subset of `af_deva_uniranges'. - * src/bdf/bdflib.c: s/ft_memcmp/ft_strncmp/ to make comparisons - stop at string ends. +2015-10-01 Werner Lemberg -2014-02-17 suzuki toshiya + [sfnt] Make `tt_cmap4_char_map_linear' faster (#46078). - [autofit] Fix `make multi' compilation. + * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Use inner loop to + reject too large glyph indices. - * src/autofit/hbshim.c: Include `afglobal.h' and `aftypes.h'. +2015-09-30 Alexei Podtelezhnikov -2014-02-19 Werner Lemberg - Simon Bünzli + [smooth] Clean up worker. - Fix Savannah bug #32902. + * src/smooth/ftgrays.c (gray_TWorker): Remove lightly used `last_ey'. + (gray_start_cell, gray_render_line): Update. - Patch taken from +2015-09-30 Werner Lemberg - https://code.google.com/p/sumatrapdf/source/browse/trunk/ext/_patches/freetype2.patch?spec=svn8620&r=8620#87 + [autofit] Replace `no-base' with `non-base'. - with slight modifications. + * src/autofit/*: Do it. - * src/type1/t1parse.c (T1_Get_Private_Dict): Add heuristic test to - handle fonts that incorrectly use \r at the beginning of an eexec - block. +2015-09-30 Werner Lemberg -2014-02-19 Simon Bünzli + [sfnt] Rewrite `tt_cmap4_char_map_linear' (#46078). - Fix Savannah bug #41590. + * src/sfnt/ttcmap.c (tt_cmap4_char_map_linear): Add code to better + skip invalid segments. + If searching the next character, provide a more efficient logic to + speed up the code. - * src/type1/t1load.c (parse_encoding): Protect against invalid - number. +2015-09-30 Werner Lemberg -2014-02-12 Dave Arnold + [truetype] Adjust number of glyphs for malformed `loca' tables. - [cff] Optimize by using `FT_MulDiv'. - Suggested by Alexei. + * src/truetype/ttpload.c (tt_face_load_loca): Implement it. - * src/cff/cf2font.c (cf2_computeDarkening): Do it. +2015-09-29 Werner Lemberg -2014-02-12 Werner Lemberg + [pshinter] Avoid harmless overflow (#45984). - Fix Savannah bug #41465. + * src/pshinter/pshglob.c (psh_blues_set_zones): Fix it. - * builds/unix/unix-def.in (CLEAN): Add `freetype-config'. - (DISTCLEAN): Remove `freetype-config'. +2015-09-28 Werner Lemberg -2014-02-08 Sean McBride + [autofit] Add support for Lao script. - Fix clang static analyzer and compiler warnings. + Thanks to Danh Hong for guidance with blue zone + characters! - * src/autofit/afhints.c (af_glyph_hints_align_weak_points), - src/autofit/afloader (af_loader_load_g) , - src/base/ftcalc.c (FT_MSB), src/base/ftoutln.c - (FT_Outline_Decompose), src/bdf/bdfdrivr.c (bdf_interpret_style), - src/cff/cffparse.c (cff_parse_integer), src/cid/cidparse.c - (cid_parser_new), src/pfr/pfrload.c (pfr_phy_font_load), - src/raster/ftraster.c (Decompose_Curve), src/sfnt/sfdriver.c - (sfnt_get_ps_name), src/sfnt/ttcmap.c (tt_cmap12_next, - tt_cmap13_next), src/smooth/ftgrays.c (gray_hline): Remove dead - code. + * src/autofit/afblue.dat: Add blue zone data for Lao. - * src/autofit/afmodule.c (af_property_get_face_globals, - af_property_set, af_property_get), src/base/ftbitmap.c - (ft_gray_for_premultiplied_srgb_bgra): Make functions static. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - * src/base/ftobjs.c (ft_remove_renderer): Protect against - library == NULL. - (ft_property_do): Make function static. + * src/autofit/afscript.h: Add Lao standard characters. - * src/base/ftrfork.c: Include `ftbase.h'. + * src/autofit/afranges.c: Add Lao data. - * src/sfnt/ttsbit.c (tt_face_load_sbix_image) - [!FT_CONFIG_OPTION_USE_PNG], src/type1/t1gload.c - (T1_Compute_Max_Advance): Avoid compiler warning. + * src/autofit/afstyles.h: Add Lao data. - * src/truetype/ttinterp.c (TT_New_Context): Reduce scope of - variable. +2015-09-27 suzuki toshiya -2014-02-08 Werner Lemberg + [base] Fix a leak by broken sfnt-PS or resource fork (#46028). - Fix Windows build directories. + open_face_from_buffer() frees passed buffer if valid font + is not found. But if copying to the buffer is failed, + the allocated buffer should be freed within the caller. - The build target is now `windows' instead of `win32'. + * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Free + the buffer `sfnt_ps' if an error caused before calling + open_face_from_buffer(). + (Mac_Read_sfnt_Resource): Free the buffer `sfnt_data' if + an error caused before calling open_face_from_buffer(); - Problem reported by Nickolas George . +2015-09-27 suzuki toshiya - * builds/modules.mk: Don't use `win32' and `win16' (!) but - `windows'. + [mac] Fix buffer size calculation for LWFN font. - * builds/windows/detect.mk, builds/windows/win32-def.mk: - s/win32/windows/. + * src/base/ftmac.c (read_lwfn): Cast post_size to FT_ULong + to prevent confused copy by too large chunk size. -2014-02-08 Eugen Sawin +2015-09-26 Alexei Podtelezhnikov - Fix Savannah bug #41507. + * src/smooth/ftgrays.c (PIXEL_MASK): Remove unused macro. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) - [!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling. +2015-09-26 Werner Lemberg -2014-02-08 Dave Arnold + [autofit] Minor tracing improvement. - [cff] Fix minor performance bug. + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Don't emit + blue zones header line if there are no blue zones. - * src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone - calculations are now cached and not recomputed on each glyph. +2015-09-26 Werner Lemberg -2014-02-05 Werner Lemberg + [bzip2, gzip, lzw] Harmonize function signatures with prototype. - Fix problems with perl 5.8.8 as distributed with current MinGW. + Suggested by Hin-Tak Leung. - * src/tools/afblue.pl: Work-around for Perl bug #63402. - (string_re): Avoid `possessive quantifiers', which have been - introduced in Perl version 5.10. + * src/bzip2/ftbzip2.c (ft_bzip2_stream_io), src/gzip/ftgzip.c + (ft_gzip_stream_io), src/lzw/ftlzw.c (ft_lzw_stream_io): Do it. -2014-02-04 Werner Lemberg +2015-09-26 Hin-Tak Leung - Fix compilation with MinGW. + Add new FT_LOAD_COMPUTE_METRICS load flag. - Right now, compilation out of the box with latest MinGW is broken - due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode, - cf. + * include/freetype/freetype.h (FT_LOAD_COMPUTE_METRICS): New macro. + * src/truetype/ttgload.c (compute_glyph_metrics): Usage. - https://sourceforge.net/p/mingw/bugs/2024/ - https://sourceforge.net/p/mingw/bugs/2046/ +2015-09-26 Werner Lemberg - * builds/unix/configure.raw: Don't set `-ansi' flag for MinGW. + * src/base/ftobjs.c (Mac_Read_sfnt_Resource): Add cast. -2014-02-04 Werner Lemberg +2015-09-25 Werner Lemberg - [autofit] Minor fix. + [type1] Protect against invalid number of glyphs (#46029). - * src/autofit/afcjk.c (af_cjk_metrics_init_widths), - src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling - of alternative standard characters. - This also fixes a compilation warning in non-debug mode. + * src/type1/t1load.c (parse_charstrings): Check number of + `CharStrings' dictionary entries against size of data stream. -2014-02-03 Werner Lemberg +2015-09-23 Werner Lemberg - [cff] Fix Savannah bug #41363. + [sfnt] Better checks for invalid cmaps (2/2) (#46019). - * src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into - parameter check. - (cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if - we are scaling the outline. - (cf2_getPpemY): Remove problematic assertion. + While the current code in `FT_Get_Next_Char' correctly rejects + out-of-bounds glyph indices, it can be extremely slow for malformed + cmaps that use 32bit values. This commit tries to improve that. -2014-01-26 Werner Lemberg + * src/sfnt/ttcmap.c (tt_cmap8_char_next, tt_cmap12_next, + tt_cmap12_char_map_binary, tt_cmap13_next, + tt_cmap13_char_map_binary): Reject glyph indices larger than or + equal to the number of glyphs. - [autofit] Introduce two more slots for standard characters. +2015-09-23 Werner Lemberg - This is useful for OpenType features like `c2sc' (caps to small - caps) that don't have lowercase letters by definition, or other - features that mainly operate on numerals. + [base, sfnt] Better checks for invalid cmaps (1/2). - * src/autofit/afscript.h: Add more standard characters. + * src/base/ftobjs.c (FT_Get_Char_Index): Don't return out-of-bounds + glyph indices. + (FT_Get_First_Char): Updated. - * src/autofit/aftypes.h: Update use of `SCRIPT' macro. - (AF_ScriptClassRec): Add members to hold two more standard - characters. - (AF_DEFINE_SCRIPT_CLASS): Updated. + * src/sfnt/ttcmap.c (tt_cmap6_char_next): Don't return character + codes greater than 0xFFFF. - * src/autofit/afglobal.c, src/autofit/afglobal.h, - * src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c: - Update use of `SCRIPT' macro. + (tt_cmap8_char_index): Avoid integer overflow in computation of + glyph index. + (tt_cmap8_char_next): Avoid integer overflows in computation of + both next character code and glyph index. - * src/autofit/afcjk.c (af_cjk_metrics_init_widths), - src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more - standard characters. + (tt_cmap10_char_index): Fix unsigned integer logic. + (tt_cmap10_char_next): Avoid integer overflow in computation of + next character code. -2014-01-24 Werner Lemberg + (tt_cmap12_next): Avoid integer overflows in computation of both + next character code and glyph index. + (tt_cmap12_char_map_binary): Ditto. + (tt_cmap12_char_next): Simplify. - Fix Savannah bug #41320. + (tt_cmap13_char_map_binary): Avoid integer overflow in computation + of next character code. + (tt_cmap13_char_next): Simplify. - * src/autofit/aflatin.c (af_latin_metrics_init_blues) - : Avoid negative index of `last'. +2015-09-21 suzuki toshiya -2014-01-23 Werner Lemberg + [base] Check too long POST and sfnt resource (#45919). - Fix Savannah bug #41310. + * src/base/ftbase.h (FT_MAC_RFORK_MAX_LEN): Maximum length of the + resource fork for Mac OS. Resource forks larger than 16 MB can be + written but can't be handled correctly, at least in Carbon routine. + See https://support.microsoft.com/en-us/kb/130437. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) : - Don't check metrics, which this format doesn't have. - This is another correction to the commit from 2013-11-21. + * src/base/ftobjs.c (Mac_Read_POST_Resource): No need to use `0x' + prefix for `%p' formatter. -2014-01-23 Werner Lemberg + * src/base/ftbase.c (Mac_Read_POST_Resource): Check the fragment and + total size of the concatenated POST resource before buffer + allocation. + (Mac_Read_sfnt_Resource): Check the declared size of sfnt resource + before buffer allocation. - Fix Savannah bug #41309. + * src/base/ftmac.c (read_lwfn, FT_New_Face_From_SFNT): Check the + total resource size before buffer allocation. - * src/type1/t1load.c (t1_parse_font_matrix): Properly handle result - of `T1_ToFixedArray'. +2015-09-19 Werner Lemberg - * src/cid/cidload.c (cid_parse_font_matrix): Synchronize with - `t1_parse_font_matrix'. + [sfnt] Improve handling of invalid SFNT table entries (#45987). - * src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with - `t1_parse_font_matrix'. - (t42_parse_encoding): Synchronize with `t1_parse_encoding'. + This patch fixes weaknesses in function `tt_face_load_font_dir'. - * src/psaux/psobjs.c (ps_parser_load_field) , - : Properly handle result of `ps_tofixedarray'. + - It incorrectly assumed that valid tables are always at the + beginning. As a consequence, some valid tables after invalid + entries (which are ignored) were never seen. -2014-01-22 Werner Lemberg + - Duplicate table entries (this is, having the same tag) were not + rejected. - * src/autofit/hbshim.c (af_get_coverage): Fix memory leaks. + - The number of valid tables was sometimes too large, leading to + access of invalid tables. -2014-01-16 Werner Lemberg + * src/sfnt/ttload.c (check_table_dir): Add argument to return number + of valid tables. + Add another tracing message. + (tt_face_load_font_dir): Only allocate table array for valid + entries as returned by `check_table_dir'. + Reject duplicate tables and adjust number of valid tables + accordingly. - [autofit] Improve tracing of style coverages. +2015-09-19 Werner Lemberg - * include/internal/fttrace.h: Add `afglobal' for tracing style - coverages. + [pcf] Improve `FT_ABS' fix from 2015-09-17 (#45999). - * src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H. - (FT_COMPONENT): Define. - (af_face_globals_compute_style_coverage): Trace `gstyles' array - data. + * src/pcf/pcfread.c (pcf_load_font): Do first the cast to FT_Short, + then take the absolute value. + Also apply FT_ABS to `height'. -2014-01-09 Werner Lemberg +2015-09-17 Werner Lemberg - Fix Savannah bug #41158. + [type42] Fix memory leak (#45989). - * builds/unix/install.mk (install): Create man page directory. + * src/type42/t42parse.c (t42_parse_charstrings): Allow only a single + `CharStrings' array. -2014-01-08 Chongyu Zhu +2015-09-17 Werner Lemberg - [arm] Fix Savannah bug #41138, part 2. + [psaux] Fix memory leak (#45986). - * builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h - (FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix - preprocessor conditionals for `add.w'. + * src/psaux/psobjs.c (ps_parser_load_field) : + Free `temp' in case of error. -2014-01-08 Werner Lemberg +2015-09-17 Werner Lemberg - [autofit] Fix Savannah bug #41138, part 1. + [psaux] Improve tracing message. - * src/tools/afblue.pl : Produce correct auxiliary - enumeration names for generated `#else'. + * src/psaux/psobjs.c (ps_parser_load_field) : + Handle plural correctly. - * src/autofit/afblue.h: Regenerated. +2015-09-17 Werner Lemberg -2014-01-06 Werner Lemberg + [pcf] Fix integer overflows (#45985). - Add manual page for `freetype-config'. - Contributed by Nis Martensen . + * src/pcf/pcfread.c (pcf_load_font): Use FT_MulDiv. - * docs/freetype-config.1: New file. +2015-09-17 Werner Lemberg - * builds/unix/unix-def.in (mandir): Define. - * builds/unix/install.mk (install, uninstall): Handle manpage. + [pcf] Use FT_ABS for some property values (#45893). -2014-01-05 Werner Lemberg + * src/pcf/pcfread.c (pcf_load_font): Take absolute values for + AVERAGE_WIDTH, POINT_SIZE, PIXEL_SIZE, RESOLUTION_X, and + RESOLUTION_Y. In tracing mode, add warnings. - [autofit] Minor fixes for `afblue.pl'. +2015-09-16 Werner Lemberg - * src/tools/afblue.pl (aux_name): Don't use `reverse'. - : Use proper indentation for generated `#else'. + Minor fixes for some clang warnings. - * src/autofit/afblue.h: Regenerated. + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Cast, possible missing + initialization. -2014-01-04 Werner Lemberg + * src/truetype/ttgload.c (TT_Process_Composite_Component): Cast. - [autofit] Fix Indic scripts. +2015-09-15 Werner Lemberg - Split the single, incorrect Indic entry into separate scripts so - that the covered ranges are the same: Bengali, Devanagari, Gujarati, - Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese, - Syloti Nagri, Tamil, Telugu, and Tibetan. At the same time, remove - entries for Meetai Mayak and Sharada – the Unicode ranges were - incorrect (and nobody has complained about that), fonts are scarce - for those scripts, and the Indic auto-hinter support is rudimentary - anyways. + [type1, type42] Fix memory leaks (#45966). - * src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and - AF_CONFIG_OPTION_CJK. + * src/type1/t1load.c (parse_blend_axis_types): Handle multiple axis + names. + (parse_blend_design_map): Allow only a single design map. + (parse_encoding): Handle multiple encoding vectors. - * src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro. - Use it, together with AF_CONFIG_OPTION_INDIC and - AF_CONFIG_OPTION_CJK, to update. + * src/type42/t42parse.c (t42_parse_encoding): Handle multiple + encoding vectors. - * src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated. - [!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed. - Sort entries by tags. +2015-09-15 Werner Lemberg -2014-01-03 Werner Lemberg + [truetype] Fix integer type (#45965). - [autofit] Thinko. + * src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Implement it. - * src/autofit/hbshim.c (af_get_char_index): Similar to - `af_get_coverage', reject glyphs which are not substituted. +2015-09-15 Werner Lemberg -2014-01-03 Werner Lemberg + * src/pcf/pcfread.c (pcf_load_font): Fix integer overflow (#45964). - [autofit] Fix handling of default coverages. +2015-09-15 Werner Lemberg - With this commit, the implementation of coverage handling is - completed. + [type1, type42] Check encoding array size (#45961). - * src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to - do. - Reject coverages which don't contain appropriate glyphs for blue - zones. + * src/type1/t1load.c (parse_encoding), src/type42/t42parse.c + (t42_parse_encoding): Do it. -2014-01-03 Werner Lemberg +2015-09-14 Alexei Podtelezhnikov - [autofit] Fix handling of default coverages. + * src/base/ftcalc.c (FT_MulFix) [FT_LONG64]: Improve. - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): - First handle non-default coverages, then the default coverage of the - default script, and finally the other default coverages. +2015-09-14 Werner Lemberg -2014-01-03 Werner Lemberg + [type1] Fix another potential buffer overflow (#45955). - [autofit] Fix scaling of HarfBuzz shaping. + * src/type1/t1parse (T1_Get_Private_Dict): Assure that check for + `eexec' doesn't exceed `limit'. - * src/autofit/hbshim.c (af_get_char_index): Scale to units per EM. +2015-09-13 Werner Lemberg -2014-01-03 Werner Lemberg + Replace `mkinstalldirs' with AC_PROG_MKDIR_P. - [autofit] Better ftgrid support. + * builds/unix/mkinstalldirs: Removed, no longer needed. - * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add - parameters `is_blue' and `blue_offset'. + * builds/unix/configure.raw: Call `AC_PROG_MKDIR_P'. + Update pwd call for `$INSTALL'. -2014-01-01 Werner Lemberg + * builds/unix/unix-def.in (MKINSTALLDIRS): Use `@MKDIR_P@'. - [autofit] Remove some styles. + * autogen.sh: Updated. - * src/autofit/afcover.h: Remove coverages for alternative fractions, - denominators, numerators, and fractions. +2015-09-13 Werner Lemberg - * src/autofit/afstyles.h (META_STYLE_LATIN): Updated. + [winfonts] Check alignment shift count for resource data (#45938). -2014-01-01 Werner Lemberg + * src/winfonts/winfnt.c (fnt_face_get_dll_font): Implement it. - [autofit] Add more styles. +2015-09-13 Werner Lemberg - * src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New - auxiliary macros; use them to define styles for Cyrillic, Greek, and - Latin. + [type1] Fix potential buffer overflow (#45923). - * src/autofit/afcover.h: Remove coverage for oldstyle figures. - Since those digits are used in combination with ordinary letters, it - makes no sense to handle them separately. + * src/type1/t1parse.c (T1_Get_Private_Dict): Assure `cur' doesn't + point to end of file buffer. - * src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit - `options' parameter to 4 bits. +2015-09-13 Werner Lemberg -2014-01-01 Werner Lemberg + [gzip] Fix access of small compressed files (#45937). - [autofit] Fix style assignments to glyphs. + * src/gzip/ftgzip.c (ft_gzip_stream_close): Avoid memory leak. - * src/autofit/hbshim.c (af_get_coverage) - [FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also - so that we can skip glyphs that have both GSUB and GPOS data. + (ft_gzip_get_uncompressed_file): Correct byte order while reading + unsigned long value. Without this change, the whole optimization of + accessing small files in `FT_Stream_OpenGzip' is never executed! As + a consequence, access to PCF files in general (which are normally + small files) should be much improved now as originally intended. -2014-01-01 Werner Lemberg +2015-09-11 Werner Lemberg - * src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/. + [psaux] Fix potential buffer overflow (#45922). -2014-01-01 Werner Lemberg + * src/psaux/psobjs.c (ps_parser_skip_PS_token): If a token is + enclosed in balanced expressions, ensure that the cursor position + doesn't get larger than the current limit. - [autofit] Implement and use `af_get_char_index' with HarfBuzz. +2015-09-11 Werner Lemberg - * src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]: - Redefine to construct HarfBuzz features. - (af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten. + [base] Avoid crash while tracing `load_mac_face'. - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Use - `y_offset' to adjust `best_y'. + Reported in Savannah bug #45919. -2013-12-31 Werner Lemberg + * src/base/ftobjs.c (load_mac_face): Honour FT_OPEN_MEMORY while + tracing. - [autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i. +2015-09-11 Werner Lemberg -2013-12-31 Werner Lemberg + [type42] Fix endless loop (#45920). - [autofit] Fix interface of `af_get_char_index'. + * src/type42/t42parse.c (t42_parse_encoding): Synchronize with + type1's `parse_encoding'. - * src/autofit/hbshim.c (af_get_char_index): Return error value. - Add argument for y offset (to be used in a yet-to-come patch). +2015-09-10 Werner Lemberg - * src/autofit/hbshim.h, src/autofit/afcjk.c, - src/autofit/aflatin.c: Updated. + [docmaker] Allow `-' in bold and italic markup. -2013-12-30 Werner Lemberg + * src/tools/docmaker/sources.py (re_italic, re_bold): Adjust + accordingly. - [autofit] Don't combine multiple features into one set. +2015-09-09 Alexei Podtelezhnikov - Combining them, as originally envisioned, would lead to much more - complicated code, as investigations have shown meanwhile. The major - drawback is that we run out of available style slots much earlier. - However, this is only a theoretical issue since we don't support a - large number of scripts currently. + * src/base/ftcalc.c (FT_RoundFix): Improve. - * src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with - a single-element `COVERAGE' macro, sort the elements by the feature - tags, and add entry for `ruby'. +2015-09-09 Wojciech Mamrak - * src/autofit/aftypes.h: Updated. - * src/autofit/hbshim.c: Updated. + * src/base/ftcalc.c (FT_CeilFix, FT_FloorFix): Normalize. -2013-12-28 Werner Lemberg + This commit makes the functions behave as expected, this is, + rounding towards plus or minus infinity. - [autofit] Code shuffling to reduce use of cpp macros. +2015-09-07 Alexei Podtelezhnikov - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): - Call `af_get_coverage' unconditionally. + * src/smooth/ftgrays.c (gray_render_line): Simplify clipping. - * src/autofit/autofit.c: Include `hbshim.c' unconditionally. +2015-09-04 Alexei Podtelezhnikov - * src/autofit/hbshim.c (af_get_coverage) - [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function. + [raster,smooth] Microoptimizations. - * src/autofit/hbshim.h: Provide function declarations - unconditionally. + * src/raster/ftraster.c (Insert_Y_Turn, Finalize_Profile_Table, + Bezier_Up, ): Use do-while loops. -2013-12-28 Werner Lemberg + * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line, + gray_convert_glyph): Ditto. - [autofit] Add wrapper function for `FT_Get_Char_Index'. +2015-09-04 Werner Lemberg - Yet-to-come changes will provide HarfBuzz functionality for the new - function. + [autofit] Redesign code ranges (2/2). - * src/autofit/hbshim.c (af_get_char_index): New function. - * src/autofit/hbshim.h: Updated. + This commit adds two fallback scripts (`latb', `latp') and + implements support for the no-base character ranges introduced in + the previous commit. - * src/autofit/afcjk.c (af_cjk_metrics_init_widths, - af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated. + * src/autofit/aftypes.h (AF_ScriptClassRec): Add + `script_uni_nobase_ranges' field. + (AF_DEFINE_SCRIPT_CLASS): Updated. - * src/autofit/aflatin.c (af_latin_metrics_init_widths, - af_latin_metrics_init_blues, af_latin_metrics_check_digits): - Updated. + * src/autofit/afscript.h, src/autofit/afstyles.h: Add `latb' and + `latp' fallback scripts. -2013-12-28 Werner Lemberg + * src/autofit/afblue.dat: Add blue zones for Latin subscript and + superscript fallback scripts. - [autofit] Use `global' HarfBuzz font object. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - We now use `hb_font' instead of `hb_face' since yet-to-come changes - need this. + * src/autofit/afglobal.h (AF_NOBASE): New style flag for no-base + characters. + (AF_STYLE_MASK): Updated. - * src/autofit/afglobal.h: Include `hbshim.h'. - (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member - `hb_font'. + * src/autofit/afglobal.c (SCRIPT): Updated. + (af_face_globals_compute_style_coverage): Handle new style flag. - * src/autofit/afglobal.c (af_face_globals_new) - [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'. - (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy - `hb_font'. + * src/autofit/aflatin.c (af_latin_hints_apply): Handle new style + flag. - * src/autofit/hbshim.h: Include HarfBuzz headers. + * src/autofit/afranges.h (SCRIPT): Use it to export no-base ranges. - * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz - headers. - (af_get_coverage): Updated. +2015-09-04 Werner Lemberg -2013-12-27 Werner Lemberg + [autofit] Redesign code ranges (1/2). - [autofit] Handle `DFLT' OpenType script for coverages. + This patch introduces auxiliary code ranges that identify no-base + characters; they refer to glyphs of a script that should be hinted + without alignments to blue zones (mostly diacritics). - * include/ftautoh.h: Document new `default-script' property. + It also splits off ranges for fallback scripts that handle subscript + and superscript characters not covered by OpenType features. For + example, this greatly helps improve the hinting of various phonetic + alphabets, which contain a large amount characters that look like + superscript glyphs. - * src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for - type of first parameter. - (script_tags): Add one more element. - (af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag. + Finally, code ranges are updated to Unicode 8.0, and enclosed + characters are removed in general since they normally look better if + they stay unhinted. - * src/autofit/hbshim.h: Updated. + * src/autofit/afranges.c (af_latn_uniranges): Updated to Unicode + 8.0. + Split off superscript-like and subscript-like glyphs into... - * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): - Updated. + (af_latb_uniranges, af_latp_uniranges): ... these two new arrays. - * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro. + (af_xxxx_nobase_uniranges): New arrays that hold no-base characters + of the corresponding character ranges. - * src/autofit/afmodule.h (AF_ModuleRec): New `default_script' - member. +2015-09-03 Werner Lemberg - * src/autofit/afmodule.c (af_property_set, af_property_get): Handle - `default-script' property. - (af_autofitter_init): Updated. + [autofit] Pass glyph index to hinting function. -2013-12-27 suzuki toshiya + No functionality change yet. - [ftrfork] Fix the face order difference between POSIX and Carbon. + * src/autofit/aftypes.h (AF_WritingSystem_ApplyHintsFunc): Pass + glyph index. - The fragmented resources in Suitcase and .dfont should be reordered - when `POST' resource for Type1 is being restored, but reordering of - sfnt resources induces the different face order. Now the ordering - is restricted to `POST' resource only, to prevent the different - order issue (e.g. the face index in the fontconfig cache generated - with Carbon framework is incompatible with that by FreeType 2 - without Carbon framework.) Found by Khaled Hosny and Hin-Tak Leung. + * src/autofit/afcjk.c, src/autofit/afcjk.h (af_cjk_hints_apply), + src/autofit/afdummy.c (af_dummy_hints_apply), src/autofit/afindic.c + (af_indic_hints_apply), src/autofit/aflatin.c + (af_latin_hints_apply), src/autofit/aflatin2.c + (af_latin2_hints_apply), src/autofit/afloader.c (af_loader_load_g): + Updated. - http://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html - http://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html +2015-08-30 Werner Lemberg - * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch - `sort_by_res_id' to control the fragmented resource ordering. - * include/internal/ftrfork.h: Declare new switch. - * src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST' - resource, and disable the sorting for `sfnt' resource. + [autofit] Code clean-up. -2013-12-25 Werner Lemberg + * src/autofit/afglobal.h (AF_STYLE_MASK): New macro. + (AF_STYLE_UNASSIGNED): Use AF_STYLE_MASK for definition. - Fix Savannah bug #40997. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Updated. - * src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to - adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already - be set. - * src/cff/cffobjs.c (cff_face_init): Ditto. - * src/cid/cidobjs.c (cid_face_init): Ditto. - * src/pcf/pcfread.c (pcf_load_font): Ditto. - * src/pfr/pfrobjs.c (pfr_face_init): Ditto. - * src/type1/t1objs.c (T1_Face_Init): Ditto. - * src/type42/t42objs.c (T42_Face_Init): Ditto. - * src/winfonts/winfnt.c (FNT_Face_Init): Ditto. +2015-08-30 Werner Lemberg -2013-12-21 Werner Lemberg + [autofit] Make glyph style array use 16bit values. - [autofit] Introduce `coverages'. + * include/freetype/ftautoh.h (FT_Prop_GlyphToScriptMap): Use + `FT_UShort' for `map' field. - Coverages are the interface to the HarfBuzz library to acces - OpenType features for handling glyphs not addressable by the cmap. + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage, + af_face_globals_new), src/autofit/hbshim.c, src/autofit/hbshim.h + (af_get_coverage): Use FT_UShort for `glyph_styles' array. - Right now, compilation of HarfBuzz is only added to the development - build. A solution for standard build mode will be delayed until - HarfBuzz gets split into two libraries to avoid mutual dependencies - between FreeType and HarfBuzz. + * src/autofit/afglobal.h (AF_STYLE_UNASSIGNED, AF_DIGIT): Extend to + 16 bits. + (AF_FaceGlobalsRec): Use `FT_UShort' for `glyph_styles' field. - Note that this is only a first step in handling coverages, basically - providing the framework only. Code for handling selected OpenType - features (this is, actually using the data in `afcover.h') will - follow. +2015-08-26 Werner Lemberg - * devel/ftoption.h, include/config/ftoption.h - (FT_CONFIG_OPTION_USE_HARFBUZZ): New macro. + * builds/unix/configure.raw: Need harfbuzz >= 0.9.21 (#45828). - * src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h: - New files. +2015-08-25 Werner Lemberg - * src/autofit/afscript.h: Add HarfBuzz script name tags. + [base] Improve kerning tracing and documentation. - * src/autofit/afstyles.h: Add default coverage enumeration values. + * src/base/ftobjs.c (FT_Get_Kerning): Emit tracing message if + scaled-down kerning values differ. - * src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros. - (AF_Coverage): New enumeration (generated by `afcover.h'). - (AF_StyleClassRec): New member `coverage'. - (AF_DEFINE_STYLE_CLASS): Updated. +2015-08-18 Werner Lemberg - * include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage - data. + [raster] Remove last remnants of `raster5' driver. - * src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros. - (AF_SCRIPT_FALLBACK): Renamed to ... - (AF_STYLE_FALLBACK): ... this. + * src/raster/ftrend1.h (ft_raster5_renderer_class): Removed. - * src/autofit/afglobal.c: Include `hbshim.c'. - Update use of `SCRIPT' and `STYLE' macros. - (af_face_globals_compute_style_coverage) - [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'. - Update. + * src/raster/rastpic.c, src/raster/rastpic.h + (ft_raster5_renderer_class_pic_init, + ft_raster5_renderer_class_pic_free): Removed. - * src/autofit/afmodule.h (AF_ModuleRec): - s/fallback_script/fallback_style/. +2015-08-17 Alexei Podtelezhnikov - * src/autofit/afmodule.c (af_property_set): Adapt handling of - `fallback-script' property to set a fallback style. - (af_property_get, af_autofitter_init): Updated. + [base] Improve emboldener (#45596). - * src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros. + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Correct displacement + of zero-length segments. - * src/autofit/afranges.h: Update use of `SCRIPT' macro. +2015-08-16 Alexei Podtelezhnikov - * src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include - `hbshim.c'. + [base] Reoptimize arithmetic. - * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'. - (AUTOF_DRV_H): Add `afcover.h'. + * src/base/ftcalc.c (FT_MulDiv, FT_MulFix) [!FT_LONG64]: Remove + special cases that slow down the general use. - * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for - all libraries needed by FreeType. +2015-08-15 pazer -2013-12-21 Werner Lemberg + Fix C++ compilation (#45762). - Fix Savannah bug #40975 (sort of). + * src/base/ftstroke.c (ft_outline_glyph_class): Use + FT_CALLBACK_TABLE. - * src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType - behave the same as the Windows TrueType engine for the invalid case. +2015-08-14 Alexei Podtelezhnikov -2013-12-21 Werner Lemberg + [truetype] Clean up. - [autofit] Make PIC mode work actually. + * src/truetype/ttgload.c (TT_Process_Composite_Component): Use + `FT_Outline_Transform' and `FT_Outline_Translate'. + (translate_array): Dropped. - * src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the - enumeration values automatically generated by including `afscript.h' - and friends. +2015-08-14 Andreas Enge - * src/autofit/afpic.c (autofit_module_class_pic_init): Updated. + * builds/unix/detect.mk (CONFIG_SHELL): Don't handle it (#44261). -2013-12-21 Werner Lemberg +2015-08-13 Werner Lemberg - Fix PIC linking. + [truetype] Introduce named instance access to GX fonts. - * include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix - generated function name. + For functions querying a face, bits 16-30 of the face index can hold + the named instance index if we have a GX font. The indices start + with value 1; value 0 indicates font access without GX variation + data. - * src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename - to ... - (FT_Init_Table_ft_raccess_guess_table): ... this so that the - function name correctly corresponds to what the macro framework - expects. + * include/freetype/freetype.h (FT_FaceRec): Update documentation. + * include/freetype/internal/sfnt.h: Ditto. - * src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so - that PIC functions are compiled also. + * src/sfnt/sfobjs.c (sfnt_init_face) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Get number of named instances and + do argument checks. + (sfnt_load_face): Updated. -2013-12-21 Werner Lemberg + * src/truetype/ttobjs.c (tt_face_init) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Use named instance, overwriting + the style name. - [base] Add missing dependencies to Makefile. + * src/base/ftobjs.c (open_face_from_buffer, + open_face_PS_from_sfnt_stream): Updated. + * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated. + * src/cff/cffload.c (cff_font_load): Updated. - * src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'. - (BASE_H): Add `basepic.h'. + * src/cff/cffobjs.c (cff_face_init): Make function exit early for + pure CFF fonts if `font_index < 0'. + Updated. -2013-12-20 Werner Lemberg + * src/cid/cidobjs.c (cid_face_init): Updated. + * src/pcf/pcfdrivr.c (PCF_Face_Init): Updated. + * src/pfr/pfrobjs.c (pfr_face_init): Updated. + * src/type1/t1objs.c (T1_Face_Init): Updated. + * src/type42/t42objs.c (T42_Face_Init): Updated. + * src/winfonts/winfnt.c (fnt_face_get_dll_font, FNT_Face_Init): + Updated. - [autofit] Fix PIC compilation. + * docs/CHANGES: Updated. - * src/autofit/afcjk.c (af_cjk_metrics_init_widths), - src/autofit/aflatin.c (af_latin_metrics_init_widths) - [FT_CONFIG_OPTION_PIC]: Declare `globals'. +2015-08-12 Alexei Podtelezhnikov - * src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and - AF_DEFINE_STYLE_CLASS. + [type1,cff,cid] Streamline font matrix application. - * src/autofit/afpic.c: Include `afglobal.h'. - (autofit_module_class_pic_init): Typo. + * src/type1/t1gload.c (T1_Load_Glyph): Directly modify advances only + if font matrix is not trivial. + * src/cff/cffgload.c (cff_slot_load): Ditto. + * src/cid/cidgload.c (cid_slot_load_glyph): Ditto for advances and the + entire outline. - * src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS, - AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro - parameter and structure member. +2015-08-11 Werner Lemberg -2013-12-20 Werner Lemberg + [builds/unix] Minor. - [autofit] Introduce `styles'. + * builds/unix/configure.raw: + s/lib{priv,staticconf}/libs{priv,staticconf}/ for orthogonality with + similarly named uppercase variables. - This is the new top-level structure for handling glyph input data; - scripts are now defined separately. +2015-08-10 Alexei Podtelezhnikov - * src/autofit/aftypes.h (SCRIPT): Updated. - (AF_ScriptClassRec): Move `blue_stringset' and `writing_system' - members to ... - (AF_Style_ClassRec): ... this new structure. - (AF_Style): New enumeration. - (AF_StyleMetricsRec): Replace `script' enumeration with - `style_class' pointer. - (AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated. - (AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros. + [type1,cid,type42] Minor improvements. - * src/autofit/afstyles.h: New file, using data from `afscript.h'. - * src/autofit/afscript.h: Updated. + * src/type1/t1load.c (t1_parse_font_matrix): Scale units per EM only + when necessary. Refresh comments. + * src/cid/cidload.c (cid_parse_font_matrix): Ditto. + * src/type42/t42parse.c (t42_parse_font_matrix): Refresh comments. - * src/autofit/afcjk.c (af_cjk_metrics_init_widths, - af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated. +2015-08-08 Werner Lemberg - * src/autofit/afglobal.c (SCRIPT): Updated. - (STYLE): Redefine macro to load `afstyles.h'. - (af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with... - (af_style_names): ... this array. - (af_face_globals_compute_script_coverage): Renamed to... - (af_face_globals_compute_style_coverage): ... this. - Updated. - (af_face_globals_new, af_face_globals_free, - af_face_globals_get_metrics): Updated. + [type42] Fix glyph access. - * src/autofit/afglobal.h (SCRIPT): Updated. - (STYLE): Redefine macro to load `afstyles.h'. - (AF_SCRIPT_FALLBACK): Update definition. This will get more - refinements with later on. - (AF_SCRIPT_UNASSIGNED): Replace with... - (AF_STYLE_UNASSIGNED): ... this macro. - (AF_FaceGlobalsRec): Updated. + This is a severe bug: We've missed one level of indirection, as + described in the Type 42 specification. As a result, ftview + sometimes showed incorrect glyphs for given glyph names, and even + displayed `error 0x0006' (invalid argument!) in case the number of + glyph indices differed between the Type 42 font and the embedded + TTF. - * src/autofit/aflatin.c (af_latin_metrics_init_widths, - af_latin_metrics_init_blues, af_latin_metrics_scale_dim, - af_latin_hint_edges): Updated. + Apparently, noone ever noticed it; this shows how much Type 42 fonts + are in use... - * src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated. - (af_ltn2_uniranges): Removed. + * src/type42/t42objs.c (T42_GlyphSlot_Load): Map Type 42 glyph index + to embedded TTF's glyph index. - * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph): - Updated. +2015-08-08 Werner Lemberg - * src/autofit/afpic.c (autofit_module_class_pic_init): Updated. - * src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro. - (AFModulePIC): Add `af_style_classes' and `af_style_classes_rec' - members. + [type42] Minor clean-up. - * src/autofit/afranges.h: Updated. + * src/type42/t42parse.c (t42_parse_font_matrix): Remove unused + variable. - * src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'. +2015-08-06 Alexei Podtelezhnikov -2013-12-19 Werner Lemberg + [type42] Parse FontMatrix according to specifications. - [autofit] Factor scripts and uniranges out of writing system files. + * src/type42/t42parse.c (t42_parse_font_matrix): Type 42 FontMatrix + does not need scaling by 1000. Units_per_EM are taken from the + embedded TrueType. - * src/autofit/afranges.c, src/autofit/afranges.h: New files. +2015-08-06 Werner Lemberg - * src/autofit/afscript.h: Extend `SCRIPT' macro with more - parameters, taking data from the writing system files. + [autofit] Improve Arabic hinting. - * src/autofit/aftypes.h: Updated. + Problem reported by Titus Nemeth (by using + ttfautohint). - * src/autofit/afglobal.c: Include `afranges.h'. - Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS. - * src/autofit/afglobal.c: Include `afranges.h'. - Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS. + * src/autofit/afblue.dat: Add neutral blue zone for the tatweel + character. - * src/autofit/afcjk.c, src/autofit/afcjk.h: Updated. - * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated. - * src/autofit/afindic.c, src/autofit/afindic.h: Updated. - * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated. - * src/autofit/aflatn2.c, src/autofit/aflatn2.h: Updated. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - * src/autofit/afpic.c: Updated. +2015-08-05 Alexei Podtelezhnikov - * src/autofir/autofit.c: Include `afranges.c'. - * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'. + [truetype] Clean up types. -2013-12-18 Werner Lemberg + * src/truetype/ttobjs.c (TT_Size): Move declaration from here. + * include/freetype/internal/tttypes.h (TT_Size): ... to here. + (TT_LoaderRec): Switch to appropriate types for `face' and `size'. + * src/truetype/ttgload.c: Remove corresponding type casts. + * src/truetype/ttsubpix.c: Ditto. - [autofit] More code orthogonality. +2015-08-05 Werner Lemberg - * src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class' - pointer to an `AF_ScriptClass' structure with `script' index of type - `AF_Script'. - Move some code around. + [autofit] Improve recognition of flat vs. rounded segments. - * src/autofit/afcjk.c: Include `afpic.h'. - (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues, - af_cjk_hint_edges): Updated. + Lower the flatness threshold from upem/8 to upem/14, making the + auto-hinter accept shorter elements. - * src/autofit/aflatin.c: Include `afpic.h'. - (af_latin_metrics_init_widths, af_latin_metrics_init_blues, - af_latin_metrics_scale_dim, af_latin_hint_edges): Updated. + Synchronize flat/round stem selection algorithm with blue zone code. - * src/autofit/afglobal.c (af_face_globals_get_metrics): Updated. + * src/autofit/aflatin.c (FLAT_THRESHOLD): New macro. + (af_latin_metrics_init_blues): Use it. + (af_latin_hints_compute_segments): Collect information on maximum + and minimum coordinates of `on' points; use this to add a constraint + for the flat/round decision similar to + `af_latin_metrics_init_blues'. - * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph): - Updated. +2015-08-04 Werner Lemberg -2013-12-18 Werner Lemberg + Another left-shift bug (#45681). - [autofit] s/ScriptMetrics/StyleMetrics/. + * src/base/ftobjs.c (IsMacBinary): Only accept positive values for + `dlen'. -2013-12-18 Werner Lemberg +2015-08-03 Alexei Podtelezhnikov - [autofit] s/script_{metrics,hints}/style_{metrics,hints}/ + [base] Fix `ft_corner_orientation'. -2013-12-18 Werner Lemberg + Remove casting from `FT_Long' to `FT_Int' that might change the sign + of the return value and make it faster too. - [autofit] s/gscripts/gstyles/. + * src/base/ftcalc.c (ft_corner_orientation): On 32-bit systems, stay + with 32-bit arithmetic when safe. Use plain math on 64-bit systems. + * src/pshinter/pshalgo.c: Remove old unused code. -2013-12-18 Werner Lemberg +2015-08-03 Werner Lemberg - [autofit] s/glyph_scripts/glyph_styles/. + * src/truetype/ttgload.c (load_truetype_glyph) + [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix crash for composite glyphs + having a depth greater than 1. - This is the first commit of a series to create a new top-level - structure (a `style') for handling scripts, writing_systems, and - soon-to-be-added coverages. +2015-08-03 Werner Lemberg -2013-12-17 Werner Lemberg + Fix typo in clang bug from 2015-07-31 (#45678). - [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate. + * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Fix inequality. -2013-12-11 Infinality +2015-08-02 Werner Lemberg - [truetype] Simplify logic of rendering modes. + * CMakeLists.txt: Improve shared library support. - This patch unifies the subpixel and non-subpixel cases. + Based on a patch from John Cary . - * src/truetype/ttinterp.h (TT_ExecContextRec): Remove - `grayscale_hinting'; all code should refer to `grayscale' instead. - Remove unused `native_hinting' member. - Rename `subpixel_hinting' member to `subpixel. +2015-08-02 Werner Lemberg - * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated. - (tt_loader_init): Updated. + * builds/unix/freetype-config.in (enable_shared): Remove. Unused. - * src/truetype/ttinterp.c (Ins_GETINFO): Simplify. - Updated. +2015-08-02 Werner Lemberg -2013-12-11 Werner Lemberg + Fix more invalid left-shifts. - [documentation] Add section how to include FreeType header files. - Problem reported by David Kastrup . + * src/pfr/pfrgload.c (pfr_glyph_load_compound): Use multiplication, + not left-shift. - Surprisingly, a description how to do that was completely missing in - the API reference. + * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, + tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas): Use multiplication, + not left-shift. - * include/freetype.h, include/ftchapters.h: New documentation - section `header_inclusion'. +2015-07-31 Werner Lemberg -2013-12-10 Werner Lemberg + Fix some bugs found by clang's `-fsanitize=undefined' (#45661). - [autofit] s/DFLT/NONE/, s/dflt/none/. + * src/base/ftrfork.c (FT_Raccess_Get_HeaderInfo): Only accept + positive values from header. + Check overflow. -2013-12-10 Werner Lemberg + * src/base/ftoutln.c (SCALED): Correctly handle left-shift of + negative values. - [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/. + * src/bdf/bdf.h (_bdf_glyph_modified, _bdf_set_glyph_modified, + _bdf_clear_glyph_modified): Use unsigned long constant. -2013-12-10 Werner Lemberg + * src/bdf/bdfdrivr.c (BDF_Size_Select, BDF_Glyph_Load): Don't + left-shift values that can be negative. - [truetype] Fix scaling of vertical phantom points. + * src/pcf/pcfdrivr.c (PCF_Size_Select, PCF_Glyph_Load): Don't + left-shift values that can be negative. - * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and - pp4.x also. + * src/raster/ftraster.c (SCALED): Correctly handle left-shift of + negative values. -2013-12-10 Werner Lemberg + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics): Don't left-shift + values that can be negative. - [truetype] Fix positioning of composite glyphs. - Problem reported by Nigel Tao . + * src/truetype/ttgload.c (TT_Load_Composite_Glyph, + compute_glyph_metrics, load_sbit_image): Don't left-shift values + that can be negative. - * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts - the glyph (component) by a fractional value computed from the LSB - phantom point. This is wrong, since the horizontal phantom points - get rounded horizontally later on. +2015-07-31 Werner Lemberg -2013-12-08 Werner Lemberg + Define FT_LONG_MAX. - * Version 2.5.2 released. - ========================= + * include/freetype/config/ftstdlib.h (FT_LONG_MAX): New macro. + * src/cff/cf2arrst.c (cf2_arrstack_setNumElements): Use it. +2015-07-28 Alexei Podtelezhnikov - Tag sources with `VER-2-5-2'. + * src/base/ftcalc.c (FT_Vector_NormLen): Clarify. - * docs/VERSION.DLL: Update documentation and bump version number to - 2.5.2. +2015-07-27 Alexei Podtelezhnikov - * 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/. + * src/base/ftcalc.c (FT_Vector_NormLen): Explicate type conversions. - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 2. +2015-07-26 Matthias Clasen - * builds/unix/configure.raw (version_info): Set to 17:1:11. - * CMakeLists.txt (VERSION_PATCH): Set to 2. - * docs/CHANGES: Updated. + [cff] Don't use `hmtx' table for LSB (#45520). -2013-12-07 Werner Lemberg + * src/cff/cffgload.c (cff_slot_load): Use `htmx' table for advance + width only. Bug introduced 2015-04-10. - [truetype] Next round in phantom point handling. +2015-07-09 Werner Lemberg - Greg Hitchcock provided very interesting insights into the - complicated history of the horizontal positions of the TSB and BSB - phantom points. + Better support of user-supplied C++ namespaces. - * 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. + See -2013-12-05 Werner Lemberg + http://lists.nongnu.org/archive/html/freetype-devel/2015-07/msg00008.html - * builds/freetype.mk (FT_CC): Removed. Unused. + for a rationale. -2013-12-04 Werner Lemberg + * src/autofit/afpic.h, src/base/basepic.h, src/cff/cffpic.h, + src/pshinter/pshpic.h, src/psnames/pspic.h, src/raster/rastpic.h, + src/sfnt/sfntpic.h, src/smooth/ftspic.h, src/truetype/ttpic.h + (FT_BEGIN_HEADER, FT_END_HEADER): Move macro calls to not enclose + header files that contain FT_{BEGIN,END}_HEADER macros by + themselves. - [sfnt] Fix handling of embedded bitmap strikes. + * src/autofit/aftypes.h [FT_DEBUG_AUTOFIT]: Include + FT_CONFIG_STANDARD_LIBRARY_H earlier. - This corrects the commit from 2013-11-21. Problem reported by - Andrey Panov . + * src/truetype/ttpic.h: Include FT_INTERNAL_PIC_H. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to - detect excessive bytes for bit-aligned bitmaps. +2015-07-07 Werner Lemberg -2013-12-03 Werner Lemberg + [sfnt] Make `tt_face_get_name' member of the SFNT interface. - [truetype] Remove dead code. + * include/freetype/internal/sfnt.h (TT_Get_Name_Func): New + prototype. + (SFNT_Interface, FT_DEFINE_SFNT_INTERFACE): New member `get_name'. - Reported by Nigel Tao . + * src/sfnt/sfdriver.c (sfnt_interface): Updated. - * include/internal/tttypes.h (TT_LoaderRec): Remove unused - `preserve_pps' field. - * src/truetype/ttgload.c (TT_Hint_Glyph): Updated. + * src/sfnt/sfobjs.c (tt_face_get_name): Tag it with `LOCAL_DEF'. + * src/sfnt/sfobjs.h: Add prototype for it. -2013-12-03 Werner Lemberg +2015-06-30 Werner Lemberg - [truetype] Fix phantom point handling. + Fix some clang compiler warnings. - This is a further improvement to the changes from 2013-11-06. + * src/base/ftoutln.c (FT_Outline_EmboldenXY), src/cff/cf2intrp.c + (cf2_interpT2CharString), src/truetype/ttgload.c + (load_truetype_glyph), src/truetype/ttgxvar.c (tt_handle_deltas), + src/truetype/ttinterp.c (Ins_INSTCTRL): Fix signedness issues. - * 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. +2015-06-29 Alexei Podtelezhnikov -2013-12-02 Werner Lemberg + [truetype] Speed up bytecode interpreter. - [truetype] Fix change from 2013-11-20. + * src/truetype/ttinterp.c (Normalize): Use `FT_Vector_NormLen'. - Problem reported by Akira Kakuto . +2015-06-29 Alexei Podtelezhnikov - * 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. + [base] Speed up emboldening. -2013-11-27 Werner Lemberg + * src/base/ftoutln.c (FT_Outline_EmboldenXY): Use + `FT_Vector_NormLen'. - [autofit] Fix use of dumping functions in `ftgrid' demo program. +2015-06-29 Alexei Podtelezhnikov - * 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. + [base] Implement fast vector normalization. -2013-11-25 Werner Lemberg + The function uses Newton's iterations instead of dividing vector + components by its length, which needs a square root. This is, + literally, a bit less accurate but a lot faster. - * Version 2.5.1 released. - ========================= + * src/base/ftcalc.c (FT_Vector_NormLen): New function. +2015-06-28 Werner Lemberg - Tag sources with `VER-2-5-1'. + * CMakeLists.txt: Always create `ftconfig.h'. - * docs/VERSION.DLL: Update documentation and bump version number to - 2.5.1. + For non-UNIX builds, the file stays unmodified. However, it's + better to have the main configuration files at the same place + regardless of the OS. - * 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/. +2015-06-28 Werner Lemberg - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 1. + * CMakeLists.txt: Improve MSVC support (#43737). - * builds/unix/configure.raw (version_info): Set to 17:0:11. - * CMakeLists.txt (VERSION_PATCH): Set to 1. - * docs/CHANGES, docs/release: Updated. +2015-06-28 Werner Lemberg -2013-11-23 Werner Lemberg + [cmake] Check for libraries and create `ftoption.h'. - [truetype]: Add tricky font names `hkscsiic.ttf' and `iicore.ttf'. + * builds/FindHarfBuzz.cmake: New file, taken from - * src/truetype/ttobjs.c (TRICK_NAMES_MAX_CHARACTERS, - TRICK_NAMES_COUNT): Updated. - (trick_names): Add family name for the two fonts. + https://trac.webkit.org/browser/trunk/Source/cmake/FindHarfBuzz.cmake -2013-11-23 Werner Lemberg + * CMakeLists.Txt: Add path to local cmake modules. + Find dependencies for zlib, bzip2, libpng, and harfbuzz. + Create `ftoption.h' file. + Set up include and linker stuff for libraries. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo. +2015-06-28 Werner Lemberg -2013-11-21 Werner Lemberg + * CMakeLists.txt: Fix creation of `ftconfig.h'. + Check for UNIX header files using `check_include_file'. + Set up correct header include directories. - [sfnt] Typo. +2015-06-28 Werner Lemberg - Problem reported by Hin-Tak Leung . + * CMakeLists.txt: Disallow in-source builds. - * src/sfnt/sfobjs.c (sfnt_load_face): Return correct `bsize->width' - value if the font lacks an `OS/2' table. +2015-06-27 Werner Lemberg -2013-11-21 Werner Lemberg + * src/tools/docmaker/utils.py (check_output): Add missing `\n'. - [sfnt] Improve handling of buggy embedded bitmap strikes. +2015-06-26 Werner Lemberg - We are now able to successfully load `AppleMyoungJo.ttf'. - Problem reported by Hin-Tak Leung . + * CMakeLists.txt: Select platform-dependent `ftdebug.c'. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph - format. +2015-06-25 Werner Lemberg -2013-11-20 Werner Lemberg + * CMakeLists.txt: Use cmake functions for generating `ftconfig.h'. + Additionally, do this for UNIX only. - [truetype] Don't trust `maxp's `maxSizeOfInstructions'. +2015-06-25 Werner Lemberg - Problem reported by Hin-Tak Leung ; see + * CMakeLists.txt (BASE_SRCS): Use `ftbase.c' and `psnames.c'. - http://lists.nongnu.org/archive/html/freetype-devel/2013-08/msg00005.html +2015-06-25 Werner Lemberg - for details. + Another adjustment to header locations. - * src/base/ftobjs.c (FT_Load_Glyph): Check size of `fpgm' and `prep' - tables also for setting `autohint'. + This change is a result of a discussion thread on freetype-devel - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use code from - `TT_Process_Composite_Glyph' for handling unreliable values of - `maxSizeOfInstructions'. + http://lists.nongnu.org/archive/html/freetype-devel/2015-06/msg00041.html -2013-11-16 Werner Lemberg + Re-introduce the `freetype2' subdirectory for all FreeType header + files after installation, and rename the `freetype2' subdirectory in + the git repository to `freetype'. - [sfnt] Fix `OS/2' table version 5 support. + * include/freetype2: Renamed to... + * include/freetype: This. - We now follow the `official' announcement from Microsoft (on the - OpenType mailing list, which unfortunately hasn't a public archive). + * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS, + PRIVATE_HEADERS): Updated. + Update creation of `ftconfig.h'. + Install generated `ftconfig.h'. - * include/freetype/tttables.h (TT_OS2): - s/usLowerPointSize/usLowerOpticalPointSize/, - s/usUpperPointSize/usUpperOpticalPointSize/. + * Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated. - * src/sfnt/ttload.c (tt_face_load_os2): Update, and set correct - default values. + * builds/amiga/include/config/ftconfig.h, builds/freetype.mk + (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work), + builds/unix/freetype2.in: Updated. -2013-11-13 Werner Lemberg + * builds/unix/freetype-config.in: Updated. + * builds/unix/configure.raw: Don't check for `rmdir'. + * builds/unix/unix-def.in (DELDIR): Use `rm -rf', which is portable + according to the autoconf info manual. + * builds/unix/install.mk (install, uninstall, + distclean_project_unix): Update and simplify. - * builds/unix/ft2unix.h: Remove. No longer necessary. + * builds/wince/*, builds/windows/*: Updated. - * builds/unix/install.mk (install): Updated. + * devel/ft2build.h, include/ft2build.h: Updated. -2013-11-13 Werner Lemberg + * include/freetype2/config/ftheader.h, + include/freetype2/internal/ftserv.h, + include/freetype2/internal/internal.h: Update all header file + macros. - Simplify header file hierarchy. + * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated. - 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. + * docs/*: Updated. - 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 +2015-06-24 Alexei Podtelezhnikov - #include - #include FT_FREETYPE_H - ... + * src/bdf/bdflib.c (_bdf_parse_start): Disallow 0 bpp. - don't need any change to the source code. +2015-06-24 Alexei Podtelezhnikov - * include/freetype/*: Move up to... - * include/*: ... this directory. + * src/bdf/bdflib.c (_bdf_parse_start): Simplify bpp parsing. - * builds/amiga/include/freetype/*: Move up to... - * builds/amiga/include/*: ... this directory. +2015-06-23 Werner Lemberg - */*: Essentially do `s@/freetype/@/@' where appropriate. + s/TYPEOF/FT_TYPEOF/ (#45376). - * 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. + * builds/unix/ftconfig.in, builds/vms/ftconfig.in, + include/freetype2/config/ftconfig.h, + include/freetype2/internal/ftobjs.h, src/autofit/afwarp.h: Do it. -2013-11-12 Werner Lemberg +2015-06-22 Werner Lemberg - [truetype] Fix last `truetype' commit. + Fix Savannah bug #45097. - * src/truetype/ttgload.c (tt_get_metrics): Preserve stream position. - Return error value. - (load_truetype_glyph): Updated. + We no longer `pollute' the namespace of possible header file names; + instead we move `ft2build.h' up by one level so that it gets + installed in the default include directory (e.g., + /usr/local/include). After this commit, only `ft2build.h' stays in + the compiler's include path. -2013-11-10 Werner Lemberg + No visible changes for the user who follows the standard FreeType + header inclusion rules. - * docs/CMAKE: New dummy file. + * include/*: Move to ... + * include/freetype2/*: This directory, except `ft2build.h'. -2013-11-08 Dave Arnold + * CMakeLists.txt (PUBLIC_HEADERS, PUBLIC_CONFIG_HEADERS, + PRIVATE_HEADERS), Jamfile (HDRMACRO, RefDoc), autogen.sh: Updated. - [cff] Fix for hints that touch. + * builds/amiga/include/config/ftconfig.h, builds/freetype.mk + (PUBLIC_DIR), builds/symbian/bld.inf, builds/toplevel.mk (work), + builds/unix/install.mk (install, uninstall), + builds/unix/freetype2.in: Updated. - * src/cff/cf2hints.c (cf2_hintmap_insertHint): Fix condition for - finding index value of insertion point. + * builds/unix/freetype-config.in: Updated. + Emit -I directory only if it is not `/usr/include'. -2013-11-06 Werner Lemberg + * builds/wince/*, builds/windows/*: Updated. - [truetype] Fix handling of phantom points in composite glyphs. - Problem reported by Nigel Tao . + * devel/ft2build.h, include/ft2build.h: Updated. - This is a follow-up commit to the previous one. + * include/freetype2/config/ftheader.h, + include/freetype2/internal/ftserv.h, + include/freetype2/internal/internal.h: Update all header file + macros. - * src/truetype/ttgload.c (load_truetype_glyph): Call - `tt_get_metrics' after loading the glyph header. + * src/tools/chktrcmp.py (TRACE_DEF_FILES): Updated. -2013-11-06 Werner Lemberg +2015-06-21 Werner Lemberg - [truetype] Improve emulation of vertical metrics. + Make Jam support work again. - This commit also improves the start values of vertical phantom - points. Kudos to Greg Hitchcock for help. + This is just very basic stuff and just a little bit tested on + GNU/Linux only. I won't delve into this since I'm not a Jam user. - * 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'. + * Jamfile: Call `HDRMACRO' for `ftserv.h' also. + (DEFINES): Replace with... + (CCFLAGS): ... this. - * src/truetype/ttgload.h: Updated. + * src/Jamfile: Don't call `HDRMACRO' for `internal.h'; this is + already handled in the top-level Jamfile. - * src/truetype/ttdriver.c (tt_get_advances): Updated. + * src/autofit/Jamfile (DEFINES): Replace with... + (CCFLAGS): ... this. + (_sources): Add missing files. - * docs/CHANGES: Updated. + * src/cache/Jamfile: Don't call `HDRMACRO' for `ftcache.h'; it no + longer contains macro header definitions. -2013-11-05 Werner Lemberg + * src/base/Jamfile, src/cff/Jamfile, src/sfnt/Jamfile, + src/truetype/Jamfile (_sources): Add missing files. - * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/. - PlatformToolSet version 110 is for VC2012. +2015-06-16 Werner Lemberg - Problem reported (with solution) by Dave Arnold . + Fix Savannah bug #45326. -2013-11-05 Werner Lemberg + * src/sfnt/sfntpic.h (SFNT_SERVICES_GET): Remove duplicate + definitions. - [truetype] Correctly reset point tags for glyph components. - Problem reported by Nigel Tao . +2015-06-07 Werner Lemberg - * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop. + * Version 2.6 released. + ======================= -2013-11-02 Werner Lemberg - [truetype] Fix GETINFO opcode handling of subpixel hinting bits. + Tag sources with `VER-2-6'. - * src/truetype/ttinterp.c (Ins_GETINFO): Don't request bit 6 set to - get info on subpixel hinting. + * docs/VERSION.DLL: Update documentation and bump version number to + 2.6. - * docs/CHANGES: Updated. + * README, Jamfile (RefDoc), builds/windows/vc2005/freetype.vcproj, + builds/windows/vc2005/index.html, + builds/windows/vc2008/freetype.vcproj, + builds/windows/vc2008/index.html, + builds/windows/vc2010/freetype.vcxproj, + builds/windows/vc2010/index.html, + builds/windows/visualc/freetype.dsp, + builds/windows/visualc/freetype.vcproj, + builds/windows/visualc/index.html, + builds/windows/visualce/freetype.dsp, + builds/windows/visualce/freetype.vcproj, + builds/windows/visualce/index.html, + builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2005-ce/index.html, + builds/wince/vc2008-ce/freetype.vcproj, + builds/wince/vc2008-ce/index.html: s/2.5.5/2.6/, s/255/26/. -2013-11-02 Werner Lemberg + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 6. + (FREETYPE_PATCH): Set to 0. - Fix Savannah bug #40451. + * builds/unix/configure.raw (version_info): Set to 18:0:12. + * CMakeLists.txt (VERSION_MINOR): Set to 6. + (VERSION_PATCH): Set to 0. - Simply apply the patch from the bug report. + * src/autofit/afmodule.c [!FT_MAKE_OPTION_SINGLE_OBJECT]: Add + declarations for dumping functions. - * 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. + * src/truetype/ttinterp.c (TT_New_Context): Pacify compiler. -2013-11-01 Werner Lemberg + * builds/toplevel.mk: Use `freetype.mk's code to compute the version + string. + Don't include a zero patch level in version string. + * builds/freetype.mk: Remove code for computing the version string. - * docs/CHANGES: Updated. +2015-06-06 Ashish Azad -2013-11-01 Werner Lemberg + Fix Savannah bug #45260. - [truetype] Minor code refactoring. + * src/pfr/pfrdrivr.c (pfr_get_kerning): Fix typo. - Two benefits: The allocated FDEF (and IDEF) array gets slightly - smaller, and the `ttdebug' demo program has access to function - numbers without additional costs. +2015-06-03 Werner Lemberg - 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. + [truetype] Fix memory leak. - * src/truetype/ttinterp.h (TT_CallRec): Replace `Cur_Restart' and - `Cur_End' with a pointer to the corresponding `TT_DefRecord' - structure. + Problem reported by Grissiom ; in - * src/truetype/ttinterp.c (DO_JROT, DO_JMPR, DO_JROF, Ins_ENDF, - Ins_CALL, Ins_LOOPCALL, Ins_UNKNOWN, TT_RunIns ): - Updated. + http://lists.nongnu.org/archive/html/freetype/2015-05/msg00013.html -2013-10-27 Werner Lemberg + there is an example code to trigger the bug. - [sfnt] Implement support for `OS/2' table version 5. + * src/truetype/ttobjs.c (tt_size_init_bytecode): Free old `size' + data before allocating again. Bug most probably introduced four + years ago in version 2.4.3. - See +2015-06-02 Werner Lemberg - http://typedrawers.com/discussion/470/new-microsoft-size-specific-design-selection-mechanism + [raster] Add more tracing. - for the announcement. + * src/raster/ftraster.c (FT_TRACE7) [_STANDALONE_]: Define. + (Vertical_Sweep_Span, Vertical_Sweep_Drop, Horizontal_Sweep_Span, + Horizontal_Sweep_Drop, Render_Glyph): Add tracing calls. - * 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. +2015-06-01 Werner Lemberg - * src/sfnt/ttload.c (tt_face_load_os2): Implement it. + [truetype] While tracing opcodes, show code position and stack. - * docs/CHANGES: Updated. + * src/truetype/ttinterp.c: Change all existing TRACE7 calls to + TRACE6. + (opcode_name): Add string lengths. + (TT_RunIns): Implement display of code position and stack. -2013-10-24 Werner Lemberg +2015-05-31 Werner Lemberg - * README.git, docs/CHANGES, docs/INSTALL: Updated. + [truetype] In GX, make private point numbers work correctly. -2013-10-24 John Cary + This is completely missing in Apple's documentation: If a `gvar' + tuple uses private point numbers (this is, deltas are specified for + some points only), the uncovered points must be interpolated for + this tuple similar to the IUP bytecode instruction. Examples that + need this functionality are glyphs `Oslash' and `Q' in Skia.ttf. - Provide cmake support. + * src/truetype/ttgxvar.c (tt_delta_shift, tt_delta_interpolate, + tt_handle_deltas): New functions. + (TT_Vary_Get_Glyph_Deltas): Renamed to... + (TT_Vary_Apply_Glyph_Deltas): ... this; it directly processes the + points and does no longer return an array of deltas. + Add tracing information. + Call `tt_handle_deltas' to interpolate missing deltas. + Also fix a minor memory leak in case of error. - * CMakeLists.txt: New file. + * src/truetype/ttgxvar.h: Updated. -2013-10-23 Kenneth Miller - Werner Lemberg + * src/truetype/ttgload.c (TT_Process_Simple_Glyph, + load_truetype_glyph): Updated. - Provide support for x64 builds in Visual C++ project files. +2015-05-31 Werner Lemberg - * src/builds/win32: Renamed to... - * src/builds/windows: This. + [truetype] In GX, make intermediate tuplets work at extrema. - * src/builds/windows/vc2010/*: Updated to handle x64 target. + * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix range condition. - * src/builds/windows/*.mk, docs/INSTALL.GNU: s/win32/windows/ where - appropriate. +2015-05-31 Werner Lemberg -2013-10-22 Werner Lemberg + [truetype] Add tracing information to GX code. - * src/base/md5.c, src/base/md5.h: Updated to recent version. + * src/truetype/ttgxvar.c (ft_var_load_avar, ft_var_load_gvar, + ft_var_apply_tuple, TT_Get_MM_Var, TT_Set_MM_Blend, + TT_Set_Var_Design, tt_face_vary_cvt): Do it. - * src/base/ftobjs.c: Updated; `md5.c' no longer uses `free'. +2015-05-28 Werner Lemberg - The canonical URL to get updates for this file is + * src/tools/apinames.c (names_dump): Fix invalid reference. - http://cvsweb.openwall.com/cgi/cvsweb.cgi/Owl/packages/popa3d/popa3d/md5/ + Problem reported by Guzman Mosqueda, Jose R + . - as the author told me in private communication. +2015-05-24 Werner Lemberg -2013-10-19 Werner Lemberg + [truetype] Fix commit from 2015-05-22. - [autofit] s/SMALL_TOP/X_HEIGHT/. + * src/truetype/ttgload.c, src/truetype/ttinterp.c: Guard new code + with `TT_CONFIG_OPTION_SUBPIXEL_HINTING'. - * src/autofit/afblue.dat: Updated. + Problem reported by Nikolaus Waxweiler . - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. +2015-05-23 Werner Lemberg - * src/autofit/aflatin.c, src/autofit/aflatin.h, - src/autofit/atlatin2.c: Updated. + [truetype] Fix return values of GETINFO bytecode instruction. -2013-10-19 Werner Lemberg + * src/truetype/ttinterp.h (TT_ExecContextRec): New fields + `vertical_lcd' and `gray_cleartype'. - * src/autofit/afblue.dat: s/MINOR/DESCENDER/. + * src/truetype/ttgload.c (tt_loader_init): Initialize new fields. + Change `symmetrical smoothing' to TRUE, since FreeType produces + exactly this. - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + * src/truetype/ttinterp.c (Ins_GETINFO): Fix selector/return bit + values for symmetrical smoothing, namely 11/18. + Handle bits for vertical LCD subpixels (8/15) and Gray ClearType + (12/19). -2013-10-16 Werner Lemberg +2015-05-23 Werner Lemberg - [autofit] Add description strings to script entries. + [truetype] Minor. - Currently, this is unused. + * src/truetype/ttinterp.h (TT_ExecContext): + s/subpixel/subpixel_hinting. - * src/autofit/afscript.h: Do it. - * src/autofit/afglobal.c, src/autofit/afpic.c, - src/autofit/aftypes.h: Updated. + * src/truetype/ttgload.c, src/truetype/ttgload.h: Updated. -2013-10-16 Werner Lemberg +2015-05-22 Werner Lemberg - [autofit] Improve tracing message for extra light flag. + [truetype] Support selector index 3 of the INSTCTRL instruction. - * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it. + This flag activates `native ClearType hinting', disabling backwards + compatibility mode as described in Greg Hitchcocks whitepaper. In + other words, it enables unrestricted functionality of all TrueType + instructions in ClearType. -2013-10-15 Chongyu Zhu + * src/truetype/ttgload.c (tt_get_metrics): Call `sph_set_tweaks' + unconditionally. + (tt_loader_init): Unset `ignore_x_mode' flag if bit 2 of + `GS.instruct_control' is active. - [arm] Fix thumb2 inline assembly under LLVM. + * src/truetype/ttinterp.c (Ins_INSTCTRL): Handle selector index 3. + (Ins_GETINFO): Updated. - When using `ADD' with an immediate operand, the instruction is - actually `ADD Rd, Rn, #', that is, the maximum of the - immediate operand cannot exceed 4095. It will fail to compile with - LLVM. + * docs/CHANGES: Document it. - However, in GCC, due to some legacy compatibility considerations, - `ADD.W' will be automatically emitted when the immediate operand is - larger than 4095. +2015-05-20 Werner Lemberg - * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h - (FT_MulFix_arm) [__GNUC__]: Support clang compiler. + [truetype] Minor. - * src/truetype/ttinterp.c (TT_MulFix14_arm) [__GNUC__]: Ditto. + * src/truetype/ttinterp.h (SetSuperRound): Fix type of `GridPeriod' + argument. -2013-10-12 Werner Lemberg +2015-05-17 Werner Lemberg - [autofit] Improve tracing of `latin' hinter. + [truetype] Fix loading of composite glyphs. - * 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. + * src/truetype/ttgload.c (TT_Load_Composite_Glyph): If the + ARGS_ARE_XY_VALUES flag is not set, handle argument values as + unsigned. I trust `ttx' (which has exactly such code) that it does + the right thing here... -2013-10-03 Dave Arnold + The reason that noone has ever noticed this bug is probably the fact + that point-aligned subglyphs are rare, as are subglyphs with a + number of points in the range [128;255], which is quite large (or + even in the range [32768;65535], which is extremely unlikely). - * src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero. +2015-05-12 Chris Liddell - 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. + [cff] Make the `*curveto' operators more tolerant. -2013-10-02 Darrell Bellert + * src/cff/cf2intrp.c (cf2_interpT2CharString): The opcodes + `vvcurveto', `hhcurveto', `vhcurveto', and `hvcurveto' all iterate, + pulling values off the stack until the stack is exhausted. + Implicitly the stack must be a multiple (or for subtly different + behaviour) a multiple plus a specific number of extra values deep. + If that's not the case, enforce it (as the old code did). - * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'. +2015-05-12 Chris Liddell -2013-10-02 Dave Arnold + [cff] fix incremental interface with new cff code. - * src/cff/cf2font.c (cf2_computeDarkening): Initialize darkenAmount. + * src/cff/cf2ft.c (cf2_getSeacComponent): When using the incremental + interface to retrieve glyph data for a SEAC, it be left to the + incremental interface callback to apply the encoding to raw + character index (as it was in the previous code). - 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. +2015-04-29 Alexei Podtelezhnikov -2013-09-29 Dave Arnold + [autofit] Speed up IUP. - Fix Savannah bug #39295. + * src/autofit/afhints.c (af_iup_interp): Separate trivial snapping to + the same position from true interpolation, use `scale' to reduce + divisions. - 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. +2015-04-28 Werner Lemberg - 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. + [cff] Use `name' table for PS name if we have a SFNT-CFF. - 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. + This follows the OpenType 1.7 specification. See - Some glyphs in the bug report font (TexGyreHeros-Regular) that show - the change are: + http://tug.org/pipermail/tex-live/2015-April/036634.html - 25ppem S (98) - 24ppem eight (52) - 25.5ppem p (85) + for a discussion. - 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. + * src/cff/cffdrivr.c (cff_get_ps_name): Use the `sfnt' service if we + have an SFNT. - 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). +2015-04-27 Alexei Podtelezhnikov - * src/cff/cf2hints.h (CF2_GlyphPathRec): New element `pathIsClosing' - to indicate that we synthesize a closepath line. + [truetype] Speed up IUP. - * 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. + * src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial + snapping to the same position from true interpolation. -2013-09-25 Werner Lemberg +2015-04-21 Werner Lemberg - * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays. + [autofit] By default, enable warping code but switch off warping. -2013-09-25 suzuki toshiya + Suggested by Behdad. - [bdf, pcf] Refuse non-zero face_index. + * include/config/ftoption.h: Define AF_CONFIG_OPTION_USE_WARPER. - Suggested by Akira Tagoh, see + * src/autofit/afmodule.c (af_autofitter_init): Initialize `warping' + with `false'. - http://lists.gnu.org/archive/html/freetype/2013-09/msg00030.html +2015-04-21 Werner Lemberg - * 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. + * docs/CHANGES: Updated. - * src/type42/t42objs.c (T42_Face_Init): Remove unrequired FT_UNUSED - macro for `face_index' because it is validated later. +2015-04-21 Werner Lemberg -2013-09-23 Werner Lemberg + [autofit] Introduce `warping' property. - Fix Savannah bug #40090. + This code replaces the debugging hook from the previous commit with + a better, more generic solution. - * src/autofit/afcjk.c (af_cjk_metrics_scale): Revert commit - 306f8c5d (from 2013-08-25) affecting this function. + * include/ftautoh.h: Document it. -2013-09-22 Werner Lemberg + * src/autofit/afmodule.h (AF_ModuleRec) + [AF_CONFIG_OPTION_USE_WARPER]: Add `warping' field. - [autofit] Disunify Cyrillic and Greek handling from Latin. + * src/autofit/afmodule.c (_af_debug_disable_warper): Remove. + (af_property_set, af_property_get, af_autofitter_init) + [AF_CONFIG_OPTION_USE_WARPER]: Handle `warping' option. - * src/autofit/afscript.h: Add Cyrillic and Greek. + * src/autofit/afhints.h (AF_HINTS_DO_WARP): Remove use of the no + longer existing `_af_debug_disable_warper'. - * 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/afcjk.c (af_cjk_hints_init), src/autofit/aflatin.c + (af_latin_hints_init), src/autofit/aflatin2.c (af_latin2_hints_init) + [AF_CONFIG_OPTION_USE_WARPER]: Add `AF_SCALER_FLAG_NO_WARPER' to the + scaler flags if warping is off. - * 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. + * src/autofit/aftypes.h: Updated. -2013-09-20 Werner Lemberg +2015-04-16 Werner Lemberg - * docs/CHANGES: Updated. + [autofit] Add debugging hook to disable warper. -2013-09-20 Behdad Esfahbod + * src/autofit/afmodule.c (_af_debug_disable_warper) + [FT_DEBUG_AUTOFIT]: New global variable. - Fix vertical size of emboldened glyphs. + * src/autofit/aftypes.h: Updated. + (AF_SCALER_FLAG_NO_WARPER): New macro (not actively used yet). - Cf. https://bugzilla.gnome.org/show_bug.cgi?id=686709 + * src/autofit/afhints.h (AF_HINTS_DO_WARP): New macro. - * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Adjust `horiBearingY' - also. + * src/autofit/aflatin.c (af_latin_hints_apply) + [AF_CONFIG_OPTION_USE_WARPER]: Use `AF_HINTS_DO_WARP' to control use + of warper. -2013-09-11 Alexei Podtelezhnikov + * src/autofit/afcjk.c (af_cjk_hints_init, af_cjk_hints_apply) + [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'. - * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation - algorithm description. + * src/autofit/aflatin2.c (af_latin2_hints_apply) + [AF_CONFIG_OPTION_USE_WARPER]: Synchronize with `aflatin.c'. -2013-09-11 Werner Lemberg +2015-04-10 Werner Lemberg - [autofit] Improve Hebrew rendering. + [cff] Update advance width handling to OpenType 1.7. - This change introduces a new blue zone property - `AF_BLUE_PROPERTY_LATIN_LONG' to make the auto-hinter ignore short - top segments. + Problem reported by Behdad. - * src/autofit/afblue.dat: Fix Hebrew blue strings. - Use AF_BLUE_PROPERTY_LATIN_LONG for AF_BLUE_STRING_HEBREW_TOP. + * src/cff/cffdrivr.c (cff_get_advances): Handle SFNT case + separately. - * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_LONG): New macro. + * src/cff/cffgload.c (cff_slot_load): Use advance width and side + bearing values from `hmtx' table if present. - * src/autofit/afblue.c, src/autofit/afblue.h: Updated. +2015-04-03 Alexei Podtelezhnikov - * src/autofit/aflatin.c (af_latin_metrics_init_blues): Handle - `AF_LATIN_IS_LONG_BLUE'. + * src/autofit/afhints.c (af_glyph_hints_reload): Use do-while loop. - * src/autofit/aflatin.h (AF_LATIN_IS_LONG_BLUE): New macro. +2015-04-02 Alexei Podtelezhnikov -2013-08-28 Behdad Esfahbod + * src/autofit/aflatin.c (af_latin_hint_edges): Reduce logic. - [sfnt] Fix frame access while reading WOFF table directory. +2015-04-01 Alexei Podtelezhnikov - * src/sfnt/sfobjs.c (woff_open_font): Using single memory frame - while reading the directory entries for the whole loop. + [autofit] Finish the thought. -2013-08-29 Werner Lemberg - Behdad Esfahbod + * src/autofit/afhints.c (af_direction_compute): make sure the long arm + is never negative so that its `FT_ABS' is not necessary. - Implement support for WOFF containers. +2015-04-01 Werner Lemberg - We simply synthesize a SFNT from the WOFF, create a memory stream - for the new data, and load the SFNT as usual. + [autofit] Call dumper functions for tracing. - Does NOT add any API to access WOFF metadata or private blocks. + * src/autofit/afcjk.c (af_cjk_hints_apply): Remove dead code. + * src/autofit/afhints.c (af_glyph_hints_dump_points): Minor + improvement. + * src/autofit/afmodule.c (af_autofitter_load_glyph): Implement it. - * include/freetype/internal/tttypes.h (WOFF_HeaderRec, - WOFF_TableRec): New structures. +2015-04-01 Werner Lemberg - * include/freetype/tttags.h (TTAG_wOFF): New macro. + [autofit] Make debugging stuff work again. - * src/base/ftobjs.c (FT_Open_Face): Set `stream' after calling - `open_face'. + The interface to ftgrid was broken in the series of commits starting + with - * 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'. + [autofit] Allocate AF_Loader on the stack instead of AF_Module. - * src/truetype/ttobjs.c (tt_face_init): Set `stream' after calling - `sfnt->init_face'. + from 2015-01-14. - * src/base/ftobjs.c (open_face): Use a pointer to FT_Stream as an - argument so that a changed stream survives. - Update callers. + * src/autofit/afmodule.c (_af_debug_hints_rec) [FT_DEBUG_AUTOFIT]: + Use a global AF_GlyphHintsRec object for debugging. + (af_autofitter_done, af_autofitter_load_glyph): Updated. -2013-08-28 Werner Lemberg + * src/autofit/afloader.c (af_loader_init, af_loader_done): Updated. - [gzip] New function `FT_Gzip_Uncompress'. +2015-04-01 Werner Lemberg - This is modeled after zlib's `uncompress' function. We need this - for WOFF support. + * src/autofit/afhints.c (af_glyph_hints_done): Fix minor thinko. - * include/freetype/ftgzip.h, src/gzip/ftgzip.c (FT_Gzip_Uncompress): - New function. +2015-03-29 Werner Lemberg - * src/gzip/rules.mk: Rewrite to better reflect dependencies. + [cff] Fix Savannah bug #44629. -2013-08-28 Werner Lemberg + * src/cff/cf2font.h (CF2_MAX_SUBR), src/cff/cffgload.h + (CFF_MAX_SUBRS_CALLS): Set to 16. - [autofit] Fix `make multi' compilation. +2015-03-29 Werner Lemberg - * 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'. + [type1, truetype] Make the MM API more flexible w.r.t. `num_coords'. -2013-08-28 Werner Lemberg + This commit allows `num_coords' to be larger or smaller than the + number of available axes while selecting a design instance, either + ignoring excess data or using defaults if data is missing. - [autofit] Fix C++ compilation. + * src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design): + Implement it. - * 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. + * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design, + T1_Set_Var_Design): Ditto. -2013-08-27 Behdad Esfahbod +2015-03-29 Werner Lemberg - * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos. + [type1] Minor. -2013-08-27 Behdad Esfahbod + * src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_Design): Use + FT_THROW. + (T1_Set_Var_Design): Use T1_MAX_MM_AXIS and FT_THROW. - FT_Open_Face: Improve external stream handling. +2015-03-27 Werner Lemberg - 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. + [cff] Trace charstring nesting levels. - * src/base/ftobjs.c (FT_Open_Face): Move code to set - FT_FACE_FLAG_EXTERNAL_STREAM to... - (open_face): This function. + * src/cff/cf2intrp.c (cf2_interpT2CharString) : Implement it. -2013-08-27 Werner Lemberg + * src/cff/cffgload.c (cff_decoder_parse_charstrings) + : Ditto. - Remove `FT_SqrtFixed' function. +2015-03-21 Alexei Podtelezhnikov - It's no longer used. + [base] Optimize `FT_Angle_Diff'. - * include/freetype/internal/ftcalc.h, src/base/ftcalc.c: Do it. + Under normal circumstances we are usually close to the desired range + of angle values, so that the remainder is not really necessary. -2013-08-27 Werner Lemberg + * src/base/fttrigon.c (FT_Angle_Diff): Use loops instead of remainder. - [autofit] While tracing, report script names instead of ID values. + * src/autofit/aftypes.h (AF_ANGLE_DIFF): Ditto in the unused macro. - * src/autofit/afglobal.c (af_script_names) [FT_DEBUG_LEVEL_TRACE]: - New array. - * src/autofit/afglobal.h: Updated. +2015-03-21 Werner Lemberg - * 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. + [truetype] Improve `gvar' handling. -2013-08-26 Werner Lemberg + * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Correctly handle + single-element runs. Cf. glyph `Q' in Skia.ttf with weights larger + than the default. - [autofit] Report used script while hinting a glyph. +2015-03-20 Alexei Podtelezhnikov - * src/autofit/afcjk.c (af_cjk_hint_edges), src/autofit/aflatin.c - (af_latin_hint_edges): Implement it. + * src/base/fttrigon.c (FT_Vector_Rotate): Minor refactoring. -2013-08-26 Werner Lemberg +2015-03-17 Alexei Podtelezhnikov - [autofit] Add support for Hebrew script. + Fix Savannah bug #44412 (part 2). - * src/autofit/afblue.dat: Add blue strings for Hebrew. - * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + * src/base/fttrigon.c (FT_Sin, FT_Cos, FT_Tan): Call `FT_Vector_Unit'. - * src/autofit/aflatin.c (af_hebr_uniranges): New array. - (af_hebr_script_class): New script. - * src/autofit/aflatin.h, src/autofit/afscript.h: Updated. +2015-03-11 Werner Lemberg -2013-08-26 Werner Lemberg + [autofit] Add support for Arabic script. - [autofit] Improve tracing messages. + Thanks to Titus Nemeth for guidance! - * 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/afblue.dat: Add blue zone data for Arabic. - * 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. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. -2013-08-26 Werner Lemberg + * src/autofit/afscript.h: Add Arabic standard characters. - Better tracing of loaded glyphs. + * src/autofit/afranges.c: Add Arabic data. - 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/autofit/afstyles.h: Add Arabic data. - * 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. + * docs/CHANGES: Document it. -2013-08-26 Werner Lemberg +2015-03-11 Werner Lemberg - [autofit] Fix script selection. + Rename `svxf86nm.h' to `svfntfmt.h'; update related symbols. - * src/autofit/afglobal.c (af_face_globals_get_metrics): Use - `AF_SCRIPT_DFLT', not value 0. - Simplify code. + * include/internal/ftserv.h (FT_SERVICE_XFREE86_NAME_H): Renamed + to... + (FT_SERVICE_FONT_FORMAT_H): This. - * src/autofit/afscript.h: Sort by script name. + * include/internal/services/svfntfmt.h (FT_XF86_FORMAT_*): Renamed + to ... + (FT_FONT_FORMAT_*): This. -2013-08-26 Werner Lemberg + src/base/ftfntfmt.c, src/bdf/bdfdrivr.c, src/cff/cffdrivr.c, + src/cid/cidriver.c, src/pcf/pcfdrivr.c, src/pfr/pfrdrivr.c, + src/truetype/ttdriver.c, src/type1/t1driver.c, + src/type42/t42drivr.c, src/winfonts/winfnt.c: Updated. - [autofit] Make `dummy' hinter work as expected. +2015-03-11 Werner Lemberg - * src/autofit/afdummy.c (af_dummy_hints_init): Properly set scaling - information. - (af_dummy_hints_apply): Scale the glyphs. + [base] Rename `FT_XFREE86_H' to `FT_FONT_FORMATS_H'. -2013-08-25 Werner Lemberg + * include/config/ftheader.h: Implement it. + * src/base/ftfntfmt.c, docs/CHANGES: Updated. - [autofit] Make `cjk' module use blue stringsets. +2015-03-11 Werner Lemberg - * 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. + [base] Rename `FT_Get_X11_Font_Format' to `FT_Get_Font_Format'. - * 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. + * include/ftfntfmt.h, src/base/ftfntfmt.c: Implement it. -2013-08-25 Werner Lemberg + * docs/CHANGES: Updated. - [autofit] Typo. +2015-03-11 Werner Lemberg - * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use - cast. + Fix automatic copyright updating. -2013-08-25 Werner Lemberg + * src/tools/update-copyright: Make scanning of `no-copyright' + actually work. - [autofit] Synchronize `cjk' with `latin' module (and vice versa). + * src/tools/no-copyright: Don't include README in general. - * 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. +2015-03-11 Werner Lemberg - * src/autofit/aflatin.c (af_latin_metrics_init_widths, - af_latin_metrics_init_blues): Improve and add tracing messages. + Rename `ftxf86.[ch]' to `ftfntfmt.[ch]'. -2013-08-25 Werner Lemberg + CMakeLists.txt, builds/amiga/makefile, builds/amiga/makefile.os4, + builds/amiga/smakefile, builds/mac/FreeType.m68k_cfm.make.txt, + builds/mac/FreeType.m68k_far.make.txt, + builds/mac/FreeType.ppc_carbon.make.txt, + builds/mac/FreeType.ppc_classic.make.txt, builds/symbian/bld.inf, + builds/symbian/freetype.mmp, builds/wince/vc2005-ce/freetype.vcproj, + builds/wince/vc2008-ce/freetype.vcproj, + builds/windows/vc2005/freetype.vcproj, + builds/windows/vc2008/freetype.vcproj, + builds/windows/vc2010/freetype.vcxproj, + builds/windows/vc2010/freetype.vcxproj.filters, + builds/windows/visualc/freetype.dsp, + builds/windows/visualc/freetype.vcproj, + builds/windows/visualce/freetype.dsp, + builds/windows/visualce/freetype.vcproj, docs/INSTALL.ANY, + include/config/ftheader.h, include/ftfntfmt.h, modules.cfg, + src/base/ftfntfmt.c, vms_make.com: Updated. - [autofit] Make `latin' module use blue stringsets. +2015-03-10 Alexei Podtelezhnikov - * 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. + Fix Savannah bug #44412 (part 1). - * 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. + * src/base/ftstroke.c (ft_stroker_inside): Handle near U-turns. -2013-08-25 Werner Lemberg +2015-03-10 Werner Lemberg - [autofit] Add blue stringsets. + [base] Rename `FT_Bitmap_New' to `FT_Bitmap_Init'. - * src/autofit/aftypes.h: Include `afblue.h'. - (AF_ScriptClassRec): Add `blue_stringset' field. - (AF_DEFINE_SCRIPT_CLASS): Updated. + * include/ftbitmap.h, src/base/ftbitmap.c: Implement it. + Update all callers. - * src/autofit/autofit.c: Include `afblue.c'. + * docs/CHANGES: Updated. - * 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. +2015-03-06 Werner Lemberg - * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afblue.c'. + * src/sfnt/ttload.c (tt_face_load_font_dir): Fix compiler warning. -2013-08-25 Werner Lemberg + Found by Alexei. - [autofit] Introduce data file for blue strings. +2015-03-05 Alexei Podtelezhnikov - 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: + * src/base/ftstroke.c: Simplify. - . The data file should be easily readable. We use UTF-8 encoding - which then gets converted to single bytes. +2015-03-04 Werner Lemberg - . 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. + [truetype] Some fixes and code refactoring in `ttgxvar.c'. - This commit only adds files without changing any functionality. + * src/truetype/ttgxvar.c (ft_var_readpackedpoints): Fix return value + of `point_cnt' if two bytes are read. + Use a more vertical coding style. + (ft_var_readpackeddeltas): Use FT_UInt for `delta_cnt' parameter. + Use a more vertical coding style. - * src/autofit/afblue.dat: New data file. - * src/tools/afblue.pl: New Perl script for processing `afblue.dat'. +2015-03-03 Werner Lemberg - * 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. + [autofit] Fix Savannah bug #44241. -2013-08-19 Alexei Podtelezhnikov + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Reject glyphs + with less than 3 points. - [base] Enable new algorithm for `BBox_Cubic_Check'. +2015-03-02 Werner Lemberg - * src/base/ftbbox.c: Enable new BBox_Cubic_Check algorithm, remove - the old one. - Improve comments. + Simplify `TYPEOF' macro. -2013-08-18 Werner Lemberg + No need for two arguments. - * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit. + * include/config/ftconfig.h, builds/unix/ftconfig.in, + builds/vms/ftconfig.h (TYPEOF): Updated. -2013-08-18 Werner Lemberg + * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR), + src/autofit/afwarp.h (AF_WARPER_FLOOR): Updated. - Fix Savannah bug #39804. +2015-03-01 Werner Lemberg - * builds/unix/configure.raw (LIBPNG): Define and export. - * builds/unix/freetype-config.in, builds/unix/freetype2.in: Handle - libpng. + Various compiler warning fixes for `make multi'. -2013-08-17 Alexei Podtelezhnikov + * src/autofit/afcjk.c (af_cjk_hints_compute_blue_edges), + src/autofit/aflatin.c (af_latin_hint_compute_blue_edges, + af_latin_hint_edges), src/autofit/aflatin2.c + (af_latin2_hints_compute_blue_edges, af_latin2_hint_edges): Declare + as `static'. - [base] Clean up BBox_Conic_Check. + * src/cache/ftccmap.c (FTC_CMAP_QUERY_HASH, FTC_CMAP_NODE_HASH): + Removed. Unused. + * src/cache/ftcimage.c: Include FT_INTERNAL_OBJECTS_H. + * src/cache/ftcmanag.c (FTC_LRU_GET_MANAGER): Removed. Unused. - * 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. + * src/cff/cf2intrp.c: Include `cf2intrp.h'. + * src/cff/cffdrivr.c (PAIR_TAG): Removed. Unused. -2013-08-15 Alexei Podtelezhnikov + * src/gzip/ftgzip.c (NO_DUMMY_DECL): Removed. Unused. - [base] Finish experimental (disabled) BBox_Cubic_Check implementation. + * src/psaux/afmparse.c (afm_parser_read_int): Declare as `static'. - * src/base/ftbbox.c (BBox_Cubic_Check): Scale arguments to improve - accuracy and avoid overflows. + * src/pshinter/pshalgo.c (STRONGER, PSH_ZONE_MIN, PSH_ZONE_MAX): + Removed. Unused. -2013-08-13 Alexei Podtelezhnikov + * src/raster/ftraster.c (Render_Glyph): Declare as `static'. - [base] Refactor experimental (disabled) BBox_Cubic_Check. + * src/sfnt/ttpost.c (load_format_20): Fix signedness warning. - * 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. + * src/truetype/ttdriver.c (PAIR_TAG): Removed. Unused. + * src/truetype/ttsubpix.c (is_member_of_family_class, + is_member_of_style_class): Declare as `static'. -2013-08-06 John Tytgat + * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Declare + as `static'. + * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): Declare as + `static'. + (T1_FIELD_COUNT): Removed. Unused. + * src/type1/t1parse.h (T1_Done_Table): Removed. Unused. - Fix Savannah bug #39702. + * src/type42/t42parse.c (T1_Done_Table): Removed. Unused. - * 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. +2015-02-25 Werner Lemberg -2013-08-05 Werner Lemberg + [psaux] Signedness fixes. - Fix gcc pragmas, part 2. + * include/internal/psaux.h, src/psaux/afmparse.c, + src/psaux/afmparse.h, src/psaux/psconv.c, src/psaux/psobjs.c, + src/psaux/t1cmap.c, src/psaux/t1decode.c: Apply. - * 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. +2015-02-25 Werner Lemberg -2013-08-05 Werner Lemberg + [otvalid] Signedness fixes. - Fix gcc pragmas. + * src/otvalid/otvcommn.c, src/otvalid/otvgdef.c, + src/otvalid/otvgpos.c, src/otvalid/otvgsub.c, src/otvalid/otvmath.c: + Apply. - * src/truetype/ttinterp.c (TT_MulFix14_long_long, - TT_DotFix14_long_long): Older gcc versions don't accept diagnostic - pragmas within a function body. +2015-02-25 Werner Lemberg -2013-08-05 Werner Lemberg + * src/bzip2/ftbzip2.c (ft_bzip2_alloc): Signedness fix. - Fix Savannah bug #39700. +2015-02-25 Werner Lemberg - * builds/unix/ftconfig.h: Synchronize with - `include/freetype/config/ftconfig.h'. + [lzw] Signedness fixes. - * builds/vms/ftconfig.h: Ditto. - Make the differences to the master `ftconfig.h' file as small as - possible for easier maintainance. + * src/lzw/ftzopen.c, src/lzw/ftzopen.h: Apply. -2013-08-05 Werner Lemberg +2015-02-25 Werner Lemberg - [autofit] Improve handling of `near' points. + [gxvalid] Signedness fixes. - 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. + * src/gxvalid/gxvbsln.c, src/gxvalid/gxvcommn.c, + src/gxvalid/gxvcommn.h, src/gxvalid/gxvjust.c, + src/gxvalid/gxvkern.c, src/gxvalid/gxvlcar.c, src/gxvalid/gxvmort.c, + src/gxvalid/gxvmort1.c, src/gxvalid/gxvmort2.c, + src/gxvalid/gxvmorx.c, src/gxvalid/gxvmorx1.c, + src/gxvalid/gxvmorx2.c, src/gxvalid/gxvopbd.c, + src/gxvalid/gxvprop.c, src/gxvalid/gxvtrak.c: Apply. - For example, this fixes the rendering of glyph `Oslash' in - `Roboto-Thin.ttf'. +2015-02-25 Werner Lemberg - * src/autofit/afhints.h (AF_Flags): New value `AF_FLAGS_NEAR'. + [cache] Signedness fixes. - * 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. + * src/cache/ftcbasic.c, src/cache/ftccmap.c, src/cache/ftcimage.c, + src/cache/ftcmanag.c, src/cache/ftcsbits.c: Apply. -2013-08-02 Werner Lemberg +2015-02-25 Werner Lemberg - * 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. + Change dimension fields in `FTC_ImageTypeRec' to unsigned type. -2013-08-02 Werner Lemberg + This doesn't break ABI. - [autofit] Move declaration of scripts into separate file. + * include/ftcache.h (FTC_ImageTypeRec): Use unsigned types for + `width' and `height'. - This has the benefit that we don't need to duplicate the data at - different places. + * docs/CHANGES: Document it. - * src/autofit/afscript.h: New file. +2015-02-25 Werner Lemberg - * src/autofit/aftypes.h (AF_Script): Include `afscript.h' to define - the enumeration values. + [cache] Don't use `labs'. - * src/autofit/afglobal.c: Include `afscript.h' to get the script - specific header files. - (af_script_classes): Include `afscript.h' to fill this array. + This is the only place in FreeType where this function was used. - * 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. + * include/config/ftstdlib.h (ft_labs): Remove. - * src/autofit/rules.mk (AUTOF_DRV_H): Updated. + * src/cache/ftcimage.c (ftc_inode_weight): Replace `ft_labs' with + `FT_ABS'. -2013-08-02 Werner Lemberg +2015-02-23 Werner Lemberg - [autofit] Move declaration of writing systems into separate file. + [cache] Replace `FT_PtrDist' with `FT_Offset'. - This has the benefit that we don't need to duplicate the data at - different places. + * src/cache/ftccache.h (FTC_NodeRec): `FT_Offset' (a.k.a. `size_t') + is a better choice for `hash' to hold a pointer than `FT_PtrDist' + (a.k.a. `ptrdiff_t'), especially since the latter is signed, + causing zillions of signedness warnings. [Note that `hash' was of + type `FT_UInt32' before the change to `FT_PtrDist'.] + Update all users. - * src/autofit/afwrtsys.h: New file. + * src/cache/ftcbasic.c, src/cache/ftccache.c, src/cache/ftccmap.c, + src/cache/ftcglyph.c, src/cache/ftcglyph.h: Updated. - * src/autofit/aftypes.h (AF_WritingSystem): Include `afwrtsys.h' to - define the enumeration values. +2015-02-23 Werner Lemberg - * 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. + [smooth, raster] Re-enable standalone compilation. - * 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. + * src/raster/ftraster.c (FT_RENDER_POOL_SIZE, FT_MAX) + [_STANDALONE_]: Define macros. -2013-08-02 Werner Lemberg + * src/smooth/ftgrays.c (FT_RENDER_POOL_SIZE, FT_MAX, FT_ABS, + FT_HYPOT) [_STANDALONE_]: Define macros. - [sfnt] Fix compilation with g++. +2015-02-22 Werner Lemberg - * src/sfnt/pngshim.c (error_callback, read_data_from_FT_stream): Use - cast. - (Load_SBit_Png): Pacify compiler. + [smooth] Signedness fixes. -2013-08-02 suzuki toshiya - Werner Lemberg + * src/smooth/ftgrays.c, src/smooth/ftsmooth.c: Apply. - [autofit] Fix `make multi'. +2015-02-22 Werner Lemberg - * include/freetype/config/ftconfig.h (FT_LOCAL_ARRAY, - FT_LOCAL_ARRAY_DEF): New macros. + * src/raster/ftraster.c: Use the file's typedefs everywhere. - * 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'. +2015-02-22 Werner Lemberg -2013-08-01 Werner Lemberg + * src/sfnt/ttpost.c (load_format_20): Fix error tracing message. - Another round of cppcheck nitpicks. + Bug introduced 6 commits earlier. - The call was (from the top-level of the FreeType tree): +2015-02-22 Werner Lemberg - 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 + [pshinter] Fix thinko. - using cppcheck git commit f7e93f99. + * src/pshinter/pshalgo.c (psh_glyph_find_strong_points): Correctly + check `count'. + Bug introduced two commits earlier. - Note that cppcheck still can't handle `#include FOO' (with `FOO' a - macro). +2015-02-22 Werner Lemberg - */* Improve variable scopes. - */* Remove redundant initializations which get overwritten. + [raster] Signedness fixes. - * src/gxvalid/*: Comment out redundant code or guard it with - FT_DEBUG_LEVEL_TRACE. + * src/raster/ftraster.c, src/raster/ftrend1.c: Apply. -2013-07-30 Werner Lemberg +2015-02-22 Werner Lemberg - [autofit] Introduce `writing systems'. + [pshinter] Signedness fixes. - This patch adds a new top level to the auto-hinter's script class - hierarchy. It defines `writing systems' which can contain multiple - scripts. + * src/pshinter/pshalgo.c, src/pshinter/pshglob.c, + src/pshinter/pshrec.c: Apply. - 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. +2015-02-22 Werner Lemberg - Scripts are now named using four-letter OpenType tags. + [pshinter] Use macros for (unsigned) flags, not enumerations. - * 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/pshinter/pshalgo.h (PSH_Hint_Flags): Replace with macros. + Updated. + * src/pshinter/pshrec.h (PS_Hint_Flags): Replace with macros. - * 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. +2015-02-22 Werner Lemberg - * src/autofit/afglobal.h (AF_SCRIPT_FALLBACK) - [!AF_CONFIG_OPTION_CJK]: Handle this case. + * src/pshinter/pshrec.c: Simplify. + (ps_hints_open, ps_hints_stem): Remove switch statement. - * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph): - Updated. +2015-02-22 Werner Lemberg - * 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 - - [autofit] Variable renaming. - - * src/autofit/aftypes.h (AF_ScriptMetricsRec): - s/clazz/script_class/. - Update all users. + [sfnt] Signedness fixes. -2013-07-30 suzuki toshiya + * src/sfnt/pngshim.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap.c, + src/sfnt/ttkern.c, src/sfnt/ttload.c, src/sfnt/ttpost.c, + src/sfnt/ttsbit.c: Apply. + * src/sfnt/sfdriver.c: Apply. + (sfnt_get_ps_name): Simplify. - Ignore libpng-config under cross-building configuration, - because it will return the flags for the hosting environment. +2015-02-22 Werner Lemberg - * builds/unix/configure.raw: Ignore libpng-config when - `cross_compiling' == yes. + [bdf] Signedness fixes. -2013-07-30 Behdad Esfahbod + * src/bdf/bdf.h, src/bdf/bdfdrivr.c, src/bdf/bdfdrivr.h, + src/bdf/bdflib.c: Apply. - Prevent division by zero by a transparent color. +2015-02-22 Werner Lemberg - * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): - Return 0 immediately, when alpha channel is zero. + * src/bdf/bdflib.c (_bdf_atous): New function. + (_bdf_parse_glyphs, _bdf_parse_start): Use it. -2013-07-25 Behdad Esfahbod +2015-02-22 Werner Lemberg - Add FT_FACE_FLAG_COLOR and FT_HAS_COLOR. + [pcf] Signedness fixes. - Also disambiguate Google's color bitmap tables. + * src/pcf/pcf.h, src/pcf/pcfdrivr.c: Apply. + * src/pcf/pcfread.c: Apply. + (pcf_get_encodings): Ignore invalid negative encoding offsets. - * include/freetype/freetype.h (FT_FACE_FLAG_COLOR, FT_HAS_COLOR): - New macros. +2015-02-21 Werner Lemberg - * include/freetype/internal/tttypes.h (TT_SbitTableType): Add - TT_SBIT_TABLE_TYPE_CBLC. + * src/winfonts/winfnt.c: Signedness fixes. - * src/sfnt/sfobjs.c (sfnt_load_face): Handle FT_FACE_FLAG_COLOR. +2015-02-21 Werner Lemberg - * src/sfnt/ttsbit.c (tt_face_load_sbit, - tt_face_load_strike_metrics, tt_face_load_sbit_image): Handle - TT_SBIT_TABLE_TYPE_CBLC. + [type42] Signedness fixes. -2013-07-24 suzuki toshiya + * src/type42/t42parse.c, src/type42/t42parse.h, + src/type42/t42types.h: Apply. - [sfnt] Fix for `make multi' target. +2015-02-21 Werner Lemberg - * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF(). + [pfr] Signedness fixes. -2013-07-20 Werner Lemberg + * src/pfr/pfrdrivr.c, src/pfr/pfrgload.c, src/pfr/pfrload.c, + src/pfr/pfrload.h, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c, + src/pfr/pfrtypes.h: Apply. - * docs/INSTALL.GNU: Updated. +2015-02-21 Werner Lemberg -2013-07-20 Behdad Esfahbod + [cff] Minor signedness fixes related to last commit. - [sfnt] Fix `sbix' table version handling. + * src/cff/cf2ft.c, src/cff/cf2intrp.c, src/cff/cffgload.c: Apply. - * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]: - USHORT version numbers are to be considered as `minor'. +2015-02-20 Werner Lemberg -2013-07-19 Werner Lemberg + [cff] Thinkos in bias handling. - [autofit] Fix segment classification for blue zones. + Only the final result is always positive. - The old code (essentially unchanged since the very beginning) - incorrectly handled this configuration + Bug introduced three commits earlier. - x -o- x - / \ - / \ - / \ - o o + * src/cff/cffgload.c, src/cff/cffgload.h: Apply. - as flat and this +2015-02-20 Werner Lemberg - o o - / / - x| x| - | | - o---------------o + [cid] Fix signedness issues and emit some better error codes. - as round. (`o' and `x' are on and off points, respectively). + * src/cid/cidgload.c, src/cid/cidload.h, src/cid/cidobjs.c, + src/cid/cidparse.h: Apply. + * src/cid/cidload.c: Apply. + (parse_fd_array): Reject negative values for number of dictionaries. + * src/cid/cidparse.c: Apply. + (cid_parser_new): Reject negative values for hex data length. - 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. +2015-02-20 Werner Lemberg - * 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. + [cff] Signedness fixes for new engine. -2013-07-19 Behdad Esfahbod + * src/cff/cf2arrst.c, src/cff/cf2fixed.h, src/cff/cf2ft.c, + src/cff/cf2ft.h, src/cff/cf2hints.c, src/cff/cf2intrp.c: Apply. - [sfnt] `sbix' fix-ups. +2015-02-20 Werner Lemberg - * 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. + [cff] Signedness fixes for basic infrastructure and old engine. - * 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. + * include/internal/pshints.h, src/cff/cffdrivr.c, + src/cff/cffgload.c, src/cff/cffgload.h, src/cff/cffload.c, + src/cff/cffobjs.c, src/cff/cffparse.c, src/pshinter/pshrec.c: Apply. -2013-07-18 Behdad Esfahbod +2015-02-19 Werner Lemberg - [sfnt] Add support for Apple's `sbix' color bitmap table. + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Ignore `countSizePairs'. - * 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. + This is hard-coded to value 2 in `fvar' version 1.0 (and no newer + version exists), but some fonts set it incorrectly. - * include/freetype/tttags.h (TTAG_sbix): New macro. + Problem reported by Adam Twardoch . - * 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. +2015-02-19 Werner Lemberg - * 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. + [cff] Emit better error code for invalid private dict size. - * src/sfnt/pngshim.h: Updated. - * src/sfnt/ttsbit.h: Updated. - * src/sfnt/sfdriver.c: Updated. + * src/cff/cffparse.c (cff_parse_private_dict): Reject negative + values for size and offset. -2013-07-18 Werner Lemberg +2015-02-19 Werner Lemberg - [sfnt] Ignore invalid magic number in `head' or `bhed'. + [autofit] Fix signedness issues. - Other font engines seem to ignore it also. Problem reported by - Hin-Tak Leung . + * src/autofit/afangles.c, src/autofit/afcjk.c, + src/autofit/afglobal.c, src/autofit/afhints.c, + src/autofit/aflatin.c, src/autofit/aflatin2.c, src/autofit/afwarp.c, + src/autofit/hbshim.c: Apply. - * src/sfnt/ttload.c (check_table_dir): Don't abort but warn only if - we have an invalid magic number. +2015-02-19 Werner Lemberg -2013-07-16 Werner Lemberg + [autofit] Use macros for (unsigned) flags, not enumerations. - [smooth] Fix segfault caused by previous commit. + This harmonizes with other code in FreeType (and reduces the number + of necessary casts to avoid compiler warnings). - * src/smooth/ftgrays.c (gray_set_cell): Always compute - `ras.invalid'. + * src/autofit/afblue.hin: Make flag macros unsigned. + * src/autofit/afblue.h: Regenerated. -2013-07-16 David Turner + * src/autofit/afcjk.h: Replace flag enumeration with macros. + * src/autofit/afcjk.c: Updated. - [smooth] Improve performance. + * src/autofit/afhints.h (AF_Flags, AF_Edge_Flags): Replace with + macros. + * src/autofit/afhints.c: Updated. - Provide a work-around for an ARM-specific performance bug in GCC. - This speeds up the rasterizer by more than 5%. + * src/autofit/aflatin.h: Replace flag enumerations with macros. + * src/autofit/aflatin.c, src/autofit/aflatin2.c: Updated. - Also slightly optimize `set_gray_cell' and `gray_record_cell' (which - also improves performance on other platforms by a tiny bit (<1%). + * src/autofit/aftypes.h (AF_ScalerFlags): Replace with macros. - * src/smooth/ftgrays.c (FT_DIV_MOD): New macro. - Use it where appropriate. +2015-02-18 Werner Lemberg - (gray_record_cell, gray_set_cell, gray_move_to, - gray_convert_glyph_inner): Streamline condition handling. + [type1] Fix signedness issues. -2013-07-16 David Turner + * include/internal/psaux.h, include/internal/t1types.h, + src/psaux/psobjs.c, src/psaux/psobjs.h, src/psaux/t1decode.c, + src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1parse.c: Apply. - [truetype] Add assembler code for TT_MulFix14 and TT_DotFix14. +2015-02-18 Werner Lemberg - This patch provides slightly optimized versions for ARM, x86, and - x86_64 CPUs if built with GCC. + [psaux, type1] Fix minor AFM issues. - Also remove some dead code. + * include/internal/t1types.h (AFM_KernPairRec): Make indices + unsigned. + Update users. + (AFM_FontInfoRec): Make element counters unsigned. + Update users. + * src/psaux/afmparse.h (AFM_ValueRec): Add union member for unsigned + int. - * src/truetype/ttinterp.c (TT_MulFix14_arm, TT_MulFix14_long_long, - TT_DotFix14_long_long): New functions. + * src/psaux/afmparse.c (afm_parse_track_kern, afm_parse_kern_pairs): + Reject negative values for number of kerning elements. -2013-07-16 David Turner + * src/type1/t1afm.c, src/tools/test_afm.c: Updated. - Optimize FT_MulFix for x86_64 GCC builds. +2015-02-18 Werner Lemberg - This patch provides an optimized `FT_MulFix' implementation for - x86_64 machines when FreeType is built with GCC, or compatible - compilers like Clang. + Don't use `FT_PtrDist' for lengths. - Example: - bin/ftbench -p -t 5 -s 14 -f 0008 Arial.ttf + Use FT_UInt instead. - Before: + * include/internal/psaux.h (PS_Table_FuncsRec, PS_TableRec, + T1_DecoderRec): Do it. - 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 + * include/internal/t1types.h (T1_FontRec): Ditto. - After: + * src/cid/cidload.c (cid_parse_dict): Updated. + * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Ditto. + * src/psaux/psobjs.c (ps_table_add), src/psaux/psobjs.h: Ditto. + * src/type1/t1load.c (parse_blend_axis_types, parse_encoding, + parse_charstrings, parse_dict): Ditto. + * src/type42/t42parse.c (t42_parse_encoding, t42_parse_charstrings, + t42_parse_dict): Ditto. - 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 +2015-02-18 Werner Lemberg - * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h - (FT_MulFix_x86_64): New function. + * src/type1/t1driver.c (t1_ps_get_font_value): Clean up. + This handles negative values better, avoiding many casts. -2013-07-16 David Turner +2015-02-17 Werner Lemberg - Speed up ARMv7 support. + [base] Fix Savannah bug #44284. - When building for ARMv7 with thumb2 instructions, the optimized - `FT_MulFix_arm' assembly routine was not being used. + * src/base/ftcalc.c (FT_MulFix): Typos. - The reason for this is in the `ftconfig.h' header, namely: +2015-02-17 Werner Lemberg - - 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. + [truetype] Finish compiler warning fixes for signedness issues. - - 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. + * src/truetype/ttgxvar.c, src/truetype/ttsubpix.c, + src/truetype/ttsubpix.h: Apply. - - When compiling in Thumb-2 mode, the compiler will define both - `__thumb__' and `__thumb2__'. +2015-02-17 Werner Lemberg - By checking for `(__thumb2__ || !__thumb__)', we ensure that the - assembly routine is only avoided when generating Thumb-1 code. + * src/truetype/ttsubpix.c: Adding missing `static' keywords. - Given that this is performance-sensitive function, this improves - `ftbench' as follows on a Galaxy Nexus: +2015-02-17 Werner Lemberg - Before (us/op) After (us/op) + [truetype] More signedness fixes. - - loading Arial.ttf glyphs at 14 ppem [1] + * include/internal/tttypes.h, src/truetype/ttinterp.h, + src/truetype/ttobjs.h, src/truetype/ttinterp.c, + src/truetype/ttobjs.c: Apply. - Load 34.285 33.098 +2015-02-17 Werner Lemberg - - same operation with the light auto-hinter [2] + [truetype] Various signedness fixes. - Load 31.317 29.590 + * include/internal/ftgloadr.h, src/truetype/ttpload.c: Apply. - - same operation without hinting [3] + * src/truetype/ttgload.c: Apply. + (TT_Get_VMetrics): Protect against invalid ascenders and descenders + while constructing advance height. - Load 6.143 5.376 +2015-02-16 Werner Lemberg - - loading Arial.ttf advances at 14 ppem [4] + [base] Finish compiler warning fixes for signedness issues. - Load_Advances (normal) 34.216 33.016 - Load_Advances (fast) 0.176 0.176 + * src/base/ftglyph.c, src/base/ftlcdfil.c, src/base/ftstroke.c: + Apply. - [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 +2015-02-16 Werner Lemberg - * builds/unix/ftconfig.in, include/freetype/config/ftconfig.h - (FT_MULFIX_ASSEMBLER): Fix handling for ARMv7. + * include/tttables.h (TT_OS2): `fsType' must be FT_UShort. -2013-06-28 Werner Lemberg +2015-02-16 Werner Lemberg - * docs/CHANGES: Updated. + More minor signedness warning fixes. -2013-06-27 Werner Lemberg + * src/base/ftbbox.c, src/base/ftbitmap.c, src/base/fttrigon.c, + src/base/ftutil.c: Apply. - * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard. +2015-02-16 Werner Lemberg -2013-06-25 Werner Lemberg + Next round of minor compiler warning fixes. - [cff] Add darkening limit to `darkening-parameters'. + * include/internal/ftrfork.h (FT_RFork_Ref): Change `offset' member + type to `FT_Long'. + (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Add `static' keyword. - * src/cff/cffdrivr.c (cff_property_set): Add check. + * include/internal/ftstream.h (FT_Stream_Pos): Return `FT_ULong'. -2013-06-25 Werner Lemberg + * src/base/ftoutln.c, src/base/ftrfork.c, src/base/ftstream.c: + Signedness fixes. - [cff] Add `darkening-parameters' property. +2015-02-16 Werner Lemberg - * include/freetype/ftcffdrv.h: Document it. + Various minor signedness fixes. - * src/cff/cffdrivr.c (cff_property_set, cff_property_get): Handle - `darkening-parameters' property. + * include/ftadvanc.h, include/internal/ftobjs.h, + src/base/ftgloadr.c, src/base/ftobjs.c: Apply. - * src/cff/cf2font.h (CF2_FontRec): Add `darkenParams' array. +2015-02-16 Werner Lemberg - * src/cff/cf2font.c (cf2_computeDarkening): Add `darkenParams' - argument and use it. - Update all callers. + New `TYPEOF' macro. - * src/cff/cf2ft.c (cf2_decoder_parse_charstrings): Copy - `darken_params' values. + This helps suppress signedness warnings, avoiding issues with + implicit conversion changes. - * src/cff/cffobjs.h (CFF_DriverRec): Add `darken_params' array. + * include/config/ftconfig.h, builds/unix/ftconfig.in, + builds/vms/ftconfig.h (TYPEOF): Define. - * src/cff/cffobjs.c (cff_driver_init): Set default values for - `darken_params'. + * include/internal/ftobjs.h (FT_PAD_FLOOR, FT_PIX_FLOOR), + src/autofit/afwarp.h (AF_WARPER_FLOOR): Use it. -2013-06-25 Werner Lemberg +2015-02-16 Werner Lemberg - [docmaker] Code shuffling. + * src/base/ftsystem.c: Use casts in standard C function wrappers. + (ft_alloc, ft_realloc, ft_ansi_stream_io, FT_Stream_Open): Do it. - * src/tools/docmaker/tohtml.py (re_url): Move regexp... - * src/tools/docmaker/sources.py: ... to this file. +2015-02-16 Werner Lemberg -2013-06-25 Werner Lemberg + Fix Savannah bug #44261. - [docmaker] Remove unused functions. + * builds/unix/detect.mk (setup) [unix]: Set `CONFIG_SHELL' in the + environment also while calling the configure script. - * 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. +2015-02-16 Werner Lemberg -2013-06-25 Werner Lemberg + * include/internal/ftmemory.h: Add some `FT_Offset' casts. + (FT_MEM_SET, FT_MEM_COPY, FT_MEM_MOVE, FT_ARRAY_ZERO, FT_ARRAY_COPY, + FT_MEM_MOVE): Do it. - * builds/freetype.mk (dll): Remove target. +2015-02-15 Werner Lemberg - Problem reported by Jörg Günnewig . + [base] Clean up signedness issues in `ftdbgmem.c'. -2013-06-25 Werner Lemberg + Also fix other minor issues. - [docmaker] Recognise URLs. + * src/base/ftdbgmem.c (FT_MemTableRec): Replace all FT_ULong types + with FT_Long for consistency. + (ft_mem_primes): Change type to `FT_Int'. + (ft_mem_closest_prime, ft_mem_table_set): Updated. - * src/tools/docmaker/tohtml.py (re_url): New regular expression. - (make_html_para): Use it. + (ft_mem_debug_panic, ft_mem_debug_alloc, ft_mem_debug_free, + ft_mem_debug_realloc): Use `static' keyword and fix signedness + warnings where necessary. -2013-06-19 Werner Lemberg + (ft_mem_table_resize, ft_mem_table_new, ft_mem_table_destroy, + ft_mem_table_get_nodep, ft_mem_debug_init, FT_DumpMemory): Fix types + and add or remove casts to avoid signedness warnings. - * Version 2.5.0.1 released. - =========================== +2015-02-15 Werner Lemberg + [base] Clean up signedness in arithmetic functions. - Tag sources with `VER-2-5-0-1'. + This makes the code more readable and reduces compiler warnings. - * include/freetype/config/ftoption.h: Undefine - CFF_CONFIG_OPTION_OLD_ENGINE. - * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE. + * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round, FT_MulFix, + FT_DivFix): Convert input parameters to unsigned, do the + computation, then convert the result back to signed. + (ft_corner_orientation): Fix casts. -2013-06-19 Werner Lemberg +2015-02-07 Werner Lemberg - * builds/unix/install.mk (install): Don't create `cache' directory. + [sfnt] Fix Savannah bug #44184. - Found by Peter Breitenlohner . + * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): No + longer reject `htmx' and `vmtx' tables with invalid length but + sanitize them. -2013-06-19 Werner Lemberg +2015-02-06 Jon Anderson - * Version 2.5.0 released. - ========================= + [truetype] Fix regression in the incremental glyph loader. + * src/truetype/ttgload.c (load_truetype_glyph): For incremental + fonts, the glyph index may be greater than the number of glyphs + indicated, so guard the check with a preprocessor conditional. - Tag sources with `VER-2-5-0'. +2015-02-06 Werner Lemberg - * docs/VERSION.DLL: Update documentation and bump version number to - 2.5.0. - - * README, Jamfile (RefDoc), - builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, - builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, - builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, - builds/win32/visualc/freetype.dsp, - builds/win32/visualc/freetype.vcproj, - builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, - builds/win32/visualce/freetype.vcproj, - builds/win32/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.4.12/2.5.0/, s/2412/250/. + [autofit] Fix potential memory leak. - * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5. - (FREETYPE_PATCH): Set to 0. + While this doesn't show up with FreeType, exactly the same code + leaks with ttfautohint's modified auto-hinter code (which gets used + in a slightly different way). - * builds/unix/configure.raw (version_info): Set to 16:2:10. + It certainly doesn't harm since it is similar to already existing + checks in the code for embedded arrays. - * src/base/ftobjs.c (FT_Open_Face): Pacify compiler. - * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto. + * src/autofit/afhints.c (af_glyph_hints_reload): Set `max_contours' + and `max_points' for all cases. -2013-06-18 Werner Lemberg +2015-01-31 Werner Lemberg - Fix Savannah bug #39269. + [autofit] Add support for Thai script. - * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in - case of reacollocation failures. + Thanks to Ben Mitchell for guidance with blue + zone characters! -2013-06-18 Andrew Church + * src/autofit/afblue.dat: Add blue zone data for Thai. - Fix Savannah bug #39266. + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. - If memory allocations fail at certain points while opening a font, - FreeType can either crash due to a NULL dereference or leak memory. + * src/autofit/afscript.h: Add Thai standard characters. - * include/freetype/internal/ftobjs.c (FT_Face_InternalRec, - FT_LibraryRec): Make `refcount' a signed integer. If, for example, - FT_Open_Face() fails in a memory allocation before the face's - reference count is set to 1, a subsequent `FT_Done_Library' call - would otherwise loop over `FT_Done_Face' 2^32 times before freeing - the face. + * src/autofit/afranges.c: Add Thai data. - * src/base/ftobjs.c (open_face): Initialize `stream' and friends - earlier. - (FT_Open_Face) : Behave correctly if `node' is NULL. - (FT_Destroy_Module) : Check that `renderer_clazz' is valid. + * src/autofit/afstyles.h: Add Thai data. -2013-06-14 Werner Lemberg +2015-01-23 Behdad Esfahbod - * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC. + [raster] Handle `FT_RASTER_FLAG_AA' correctly. -2013-06-06 Dave Arnold - Werner Lemberg + This fixes a breakage caused by the commit `[raster] Remove + 5-level gray AA mode from monochrome rasterizer.'. - [cff] Add code to Adobe's engine to handle ppem > 2000. + Problem reported by Markus Trippelsdorf . - * src/cff/cffgload.c (cff_slot_load): If we get - FT_Err_Glyph_Too_Big, retry unhinted and scale up later on. + * src/raster/ftraster.c (ft_black_render): Handle + `FT_RASTER_FLAG_AA'. -2013-06-12 Werner Lemberg + * src/raster/ftrend1.c (ft_raster1_render): Remove gray AA mode + remnants. - Another try on pragmas. +2015-01-18 Werner Lemberg - * include/freetype/internal/ftdebug.h: Move pragmas to... - * include/freetype/internal/internal.h: ... this file since it gets - included by all source files. - * include/freetype/internal/ftserv.h: Remove pragma which has no - effect. + * src/base/ftobjs.c (FT_New_Library): Fix compiler warning. -2013-06-12 Werner Lemberg +2015-01-18 Chris Liddell - * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127. + [raster] Fix Savannah bug #44022. - This partially undoes commit 3f6e0e0c. + Add fallback for glyphs with degenerate bounding boxes. -2013-06-12 Werner Lemberg + If a glyph has only one very narrow feature, the bbox can end up + with either the width or height of the bbox being 0, in which case + no raster memory is allocated and no attempt is made to render the + glyph. This is less than ideal when the drop-out compensation in + the rendering code would actually result in the glyph being + rendered. - More compiler warning fixes. + This problem can be observed with the `I' glyph (gid 47) in the + Autodesk RomanS TrueType font. - */*: Use cast to `FT_Bool' (or `Bool') where appropriate. + * src/raster/ftrend1.c (ft_raster1_render): Add a fallback if either + dimension is zero to explicitly round up/down (instead of simply + round). -2013-06-10 Werner Lemberg +2015-01-17 Werner Lemberg - [truetype] Improve handling of broken sbit advance widths. + Add some tools to handle yearly copyright notice updates. - * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled) - `linearHoriAdvance' if the sbit's `horiAdvance' value is zero. + We are now following the GNU guidelines: A new release automatically + means that the copyright year of all affected files gets updated; it + is no longer used to track years of modification changes. - Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem. + * src/tools/update-copyright-year: New Perl script. + * src/tools/update-copyright: New shell script that calls + `update-copyright-year' on all files. + * src/tools/no-copyright: Exceptions that should not be handled by + `update-copyright' -2013-06-10 Werner Lemberg +2015-01-14 Werner Lemberg - [sfnt] Improve embedded bitmap tracing. + * docs/CHANGES: Updated, using a description from Behdad. - * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding - bitmap strike match to... - (FT_Match_Size): This function. +2015-01-14 Behdad Esfahbod - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics, - 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): Decorate with tracing messages. + * src/autofit/afmodule.c (af_autofitter_done): Fix compiler warning. -2013-06-10 Werner Lemberg +2015-01-14 Behdad Esfahbod - Fix Savannah bug #39160. + [autofit] Add embedded array of segments and edges. - * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too - for the degenerate case. + Avoids multiple mallocs per typical glyphs. -2013-06-09 David Turner + With this and recent changes to avoid mallocs, the thread-safe + stack-based loader is now as fast as the previous model that had one + cached singleton. - * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush. + * src/autofit/afhints.h (AF_SEGMENTS_EMBEDDED, AF_EDGES_EMBEDDED): + New macros. + (AF_AxisHintsRec): Add two arrays for segments and edges. - This code, present since eight(!) years in the unused `CACHE' - branch, has been forgotten to apply to the master branch. It's - really amazing that noone has ever complained since - `FTC_Manager_Reset' is pretty useless without flushing the cache. + * src/autofit/afhints.c (af_axis_hints_new_segment): Only allocate + data if number of segments exceeds given threshold value. + (af_axis_hints_new_edge): Only allocate data if number of edges + exceeds given threshold value. + (af_glyph_hints_done): Updated. -2013-06-07 Werner Lemberg +2015-01-14 Behdad Esfahbod - Add and improve pragmas for MSVC compiler. + [autofit] Add embedded arrays for points and contours. - * include/freetype/internal/ftdebug.h: Remove pragmas. - * include/freetype/internal/ftserv.h: Use push and pop for pragmas. - * include/freetype/internal/ftvalid.h: Handle warning C4324. - * src/base/ftobjs.c: Use push and pop for pragmas. - * src/gzip/ftgzip.c: Handle warning C4244. + This avoids at least two malloc calls for typical glyphs. -2013-06-07 Werner Lemberg + * src/autofit/afhints.h (AF_POINTS_EMBEDDED, AF_CONTOURS_EMBEDDED): + New macros. + (AF_GlyphHintsRec): Add two arrays for contours and points. - [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/. + * src/autofit/afhints.c (af_glyph_hints_init, af_glyph_hints_done): + Updated. + (af_glyph_hints_reload): Only allocate data if number of contours or + points exceeds given threshold values. - * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it. +2015-01-14 Behdad Esfahbod -2013-06-06 Dave Arnold + [autofit] Allocate hints object on the stack. - [cff] Add early exit feature for width-only calls. + This avoids one malloc per load. - This is for `FT_Get_Advance'. + * src/autofit/afloader.h (AF_LoaderRec): Change type of `hints' to + `AF_GlyphHints'. + Update prototype. - There are 7 places where the spec says the width can be defined: + * src/autofit/afloader.c (af_loader_init): Use `AF_GlyphHints' + parameter instead of `FT_Memory'. + (af_loader_done): Directly reset `load_hints'. + (af_loader_load_g): Updated. - hstem/hstemhm - vstem/vstemhm - cntrmask/hintmask - hmoveto - vmoveto - rmoveto - endchar + * src/autofit/afmodule.c (af_autofitter_load_glyph): Use local + `hints' object. - * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls, - if possible. +2015-01-14 Behdad Esfahbod - (cf2_interpT2CharString) , , - , , , - , : Exit early for width-only calls. + [autofit] Reuse slot glyph loader. -2013-06-06 Werner Lemberg + No need to create a new glyph loader; we can reuse the one from + `slot->internal->loader'. It's hard to tell why it was written that + way originally, but new code looks sound and correct to me, and + avoids lots of allocations. - Next round of compiler fixes. + * src/autofit/afloader.c (af_loader_init): Change return type to + `void'. + Don't call `FT_GlyphLoader_New'. + (af_loader_reset): Don't call `FT_GlyphLoader_Rewind'. + (af_loader_load_g): Update code to use `internal->loader', which + doesn't need copying of data. - * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init): - Add proper cast. + * src/autofit/afloader.h (AF_LoaderRec): Remove `gloader' member. + Update prototype. - * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix - cast. - * include/freetype/internal/ftstream.h: Decorate stream and frame - macros with `FT_Long' and `FT_ULong' as appropriate. + * src/autofit/afmodule.c (af_autofitter_load_glyph): Updated. - * src/base/ftrfork.c (raccess_guess_darwin_hfsplus, - raccess_guess_darwin_newvfs): Use cast. +2015-01-14 Behdad Esfahbod - * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast. + [autofit] Remove (unused) support for composite glyphs. - * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast. - * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto. + We never have to deal with composite glyphs in the autohinter, as + those will be loaded into FORMAT_OUTLINE by the recursed + `FT_Load_Glyph' function. - * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast. - * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto. - * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto. + In the rare cases that FT_LOAD_NO_RECURSE is set, it will imply + FT_LOAD_NO_SCALE as per `FT_Load_Glyph', which then implies + FT_LOAD_NO_HINTING: - * src/cid/cidparse.c (cid_parser_new): Use cast. + /* resolve load flags dependencies */ - * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast. + if ( load_flags & FT_LOAD_NO_RECURSE ) + load_flags |= FT_LOAD_NO_SCALE | + FT_LOAD_IGNORE_TRANSFORM; - * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type. + if ( load_flags & FT_LOAD_NO_SCALE ) + { + load_flags |= FT_LOAD_NO_HINTING | + FT_LOAD_NO_BITMAP; - * src/raster/ftraster.c (ft_black_reset): Use cast. + load_flags &= ~FT_LOAD_RENDER; + } - * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast. - (ALL_POINTS): Fix cast. + and as such the auto-hinter is never called. Thus, the recursion in + `af_loader_load_g' never actually happens. So remove the depth + counter as well. - * src/type1/t1driver.c (t1_ps_get_font_value): Add casts. - * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast. + * src/autofit/afloader.c (af_loader_load_g): Remove `depth' + parameter. + : Remove associated code. + (af_loader_load_glyph): Updated. -2013-06-05 Dave Arnold +2015-01-14 Behdad Esfahbod - Fix more MSVC Win32 compiler warnings. + [raster] Fix uninitialized memory access. - * src/base/ftobjs.c: Fix typo in MS pragma. + Apparently `ras.cProfile' might be uninitialized. This will be the + case if `ras.top == ras.cProfile->offset', as can be seen in + `End_Profile'. The overshoot code introduced in a change `Fix B/W + rasterization of subglyphs with different drop-out modes.' (from + 2009-06-18) violated this, accessing `ras.cProfile->flags' + unconditionally just before calling `End_Profile' (which then + detected that `cProfile' is uninitialized and didn't touch it). - * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property): - `lineno' is only used in debug mode. + This was harmless, and was not detected by valgrind before because + the objects were allocated on the `raster_pool', which was always + initialized. With recent change to allocate raster buffers on the + stack, valgrind now reported this invalid access. - * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in - debug mode. + * src/raster/ftraster.c (Convert_Glyph): Don't access an + uninitialized `cProfile'. -2013-06-05 Werner Lemberg +2015-01-14 Behdad Esfahbod - Fix compiler warnings. + [smooth] Fix uninitialized memory access. - * include/freetype/internal/ftmemory.h: Decorate memory allocation - macros with `FT_Long' where appropriate. - Remove duplicate of FT_MEM_QRENEW_ARRAY definition. + Looks like `ras.span_y' could always be used without initialization. + This was never detected by valgrind before because the library-wide + `raster_pool' was used for the worker object and `raster_pool' was + originally zero'ed. But subsequent reuses of it were using `span_y' + uninitialized. With the recent change to not use `render_pool' and + allocate worker and buffer on the stack, valgrind now detects this + uninitialized access. - * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use - cast. + * src/smooth/ftgrays.c (gray_raster_render): Initialize + `ras.span_y'. - * src/base/ftobjs.c: Add warning disabling pragma for MSVC while - including `md5.c'. +2015-01-14 Behdad Esfahbod - * src/cff/cf2intrp.c (cf2_interpT2CharString) : Add - cast. + [base] Don't initialize unused `driver->glyph_loader'. - * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts. - (tt_sbit_decoder_load_bitmap): Beautification. + * src/base/ftobjs.c (Destroy_Driver): Don't call + `FT_GlyphLoader_Done'. + (FT_Add_Module): Don't call `FT_GlyphLoader_New'. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize - variables (earlier). +2015-01-14 Behdad Esfahbod - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler. + [base] Don't allocate `library->raster_pool' anymore. - * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants - where appropriate. + It's unused after the following commits: - * src/type1/t1load.c (T1_Get_MM_Var): Ditto. + [raster] Allocate render pool for mono rasterizer on the stack. + [raster] Remove 5-level gray AA mode from monochrome rasterizer. -2013-06-04 Werner Lemberg + The value of FT_RENDER_POOL_SIZE still serves the purpose it used to + serve, which is, to adjust the pool size. But the pool is now + allocated on the stack on demand. - * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'. + * src/base/ftobjs.c (FT_New_Library, FT_Done_Library): Implement. - Problem reported by Ingmar Sittl . +2015-01-14 Behdad Esfahbod -2013-06-04 Werner Lemberg + [base] Do not reorder library->renderers upon use. - Apply fixes for cppcheck nitpicks. + Instead of keeping `library->renderers' in a MRU order, just leave + it as-is. The MRU machinery wasn't thread-safe. - http://cppcheck.sourceforge.net/ + With this patch, rasterizing glyphs from different faces from + different threads doesn't fail choosing rasterizer + (FT_Err_Cannot_Render_Glyph). - The call was (from the top-level of the FreeType tree): + Easiest to see that crash was to add a `printf' (or otherwise let + thread yield in FT_Throw with debugging enabled). - cppcheck --force \ - --enable=all \ - -I include \ - -I include/freetype/ \ - -I include/freetype/config/ \ - -I include/freetype/internal/ \ - . &> cppcheck.log + * src/base/ftobjs.c (FT_Render_Glyph_Internal), src/base/ftoutln.c + (FT_Outline_Render): Don't call `FT_Set_Renderer'. - Note that the current version heavily chokes on FreeType, delivering - many wrong results. I will report those issues to the cppcheck team - so that a newer version gives improved results hopefully. +2015-01-14 Behdad Esfahbod - */* Improve variable scopes. - */* Remove redundant initializations which get overwritten. + [raster] Allocate render pool for mono rasterizer on the stack. - * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable): - Remove unused variable. + Instead of using the `render_pool' member of `FT_Library' that is + provided down to the rasterizer, completely ignore that and allocate + needed objects on the stack instead. - * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero. + With this patch, rasterizing glyphs from different faces from + different threads doesn't crash in the monochrome rasterizer. - * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate): - Remove functionless code. + * src/raster/ftraster.c (black_TRaster): Remove `buffer', + `buffer_size', and `worker' members. - * src/tools/ftrandom.c (main): Fix memory leak. + (ft_black_render): Create `buffer' locally. + (ft_black_reset): Updated. -2013-06-03 Werner Lemberg +2015-01-14 Behdad Esfahbod - Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option. + [raster] Remove 5-level gray AA mode from monochrome rasterizer. - This controls whether the old FreeType CFF engine gets compiled into - FreeType. It is now disabled by default. + It was off by default and couldn't be turned on at runtime. And the + smooth rasterizer superceded it over ten years ago. No point in + keeping. Comments suggested that it was there for compatibility + with FreeType 1. - * devel/ftoption.h, include/freetype/config/ftoption.h - (CFF_CONFIG_OPTION_OLD_ENGINE): New macro. + 550 lines down. - * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c - (CFF_Operator, cff_argument_counts, cff_builder_add_point, - cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load), - src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use - CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code. + * src/raster/ftraster.c (FT_RASTER_OPTION_ANTI_ALIASING, + RASTER_GRAY_LINES): Remove macros and all associated code. - * docs/CHANGES: Updated. + (black_TWorker): Remove `gray_min_x' and `gray_max_x'. + (black_TRaster): Remove `grays' and `gray_width'. -2013-06-02 Werner Lemberg + (Vertical_Sweep_Init, Vertical_Sweep_Span, Vertical_Sweep_Drop, + ft_black_render): Updated. - Fix PNG library handling. + * src/raster/ftrend1.c (ft_raster1_render): Simplify code. + (ft_raster5_renderer_class): Removed. - * builds/unix/configure.raw: Don't use LIBPNG_LIBS but - LIBPNG_LDFLAGS. +2015-01-14 Behdad Esfahbod -2013-05-23 Behdad Esfahbod + [smooth] Allocate render pool for smooth rasterizer on the stack. - Add support for color embedded bitmaps (eg. color emoji). + Instead of using the `render_pool' member of `FT_Library' that is + provided down to the rasterizer, completely ignore that and allocate + needed objects on the stack instead. - A new load flag, FT_LOAD_COLOR, makes FreeType load color - embedded-bitmaps, following this draft specification + With this patch, rasterizing glyphs from different faces from + different threads doesn't crash in the smooth rasterizer. - https://color-emoji.googlecode.com/git/specification/v1.html + Bugs: - which defines two new SFNT tables, `CBDT' and `CBLC' (named and - modeled after `EBDT' and `EBLC', respectively). The color bitmaps - are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA - pre-multiplied sRGB images. If PNG support is available, PNG color - images as defined in the same proposed specification are supported - also. + https://bugzilla.redhat.com/show_bug.cgi?id=678397 + https://bugzilla.redhat.com/show_bug.cgi?id=1004315 + https://bugzilla.redhat.com/show_bug.cgi?id=1165471 + https://bugs.freedesktop.org/show_bug.cgi?id=69034 - Note that color bitmaps are converted to grayscale if client didn't - ask for color. + * src/smooth/ftgrays.c (gray_TRaster): Remove `buffer', + `buffer_size', `band_size', and `worker' members. - * builds/unix/configure.raw: Search for libpng. - Add `--without-png' option. + (gray_raster_render): Create `buffer', `buffer_size', and + `band_size' locally. + (gray_raster_reset): Updated. - * devel/ftoption.h, include/freetype/config/ftoption.h - (FT_CONFIG_OPTION_USE_PNG): New macro. +2015-01-14 Behdad Esfahbod - * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag. + [truetype] Allocate TT_ExecContext in TT_Size instead of TT_Driver. - * include/freetype/ftimage.h (FT_Pixel_Mode): Add - `FT_PIXEL_MODE_BGRA'. + Previously the code had stipulation for using a per-TT_Size exec + context if `size->debug' was true. But there was no way that + `size->debug' could *ever* be true. As such, the code was always + using the singleton `TT_ExecContext' that was stored in `TT_Driver'. + This was, clearly, not threadsafe. - * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags. + With this patch, loading glyphs from different faces from different + threads doesn't crash in the bytecode loader code. - * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated. - (ft_gray_for_premultiplied_srgb_bgra): New function. - (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA. + * src/truetype/ttobjs.h (TT_SizeRec): Remove `debug' member. + (TT_DriverRec): Remove `context' member. - * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files. + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Remove + `TT_ExecContext' code related to a global `TT_Driver' object. - * src/sfnt/sfnt.c: Include `pngshim.c'. + (tt_driver_done): Don't remove `TT_ExecContext' object here but ... + (tt_size_done_bytecode): ... here. - * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h' - (tt_face_load_eblc): Load `CBLC'. - (tt_sbit_decoder_init): Load `CBDT'. - (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between - color and grayscale bitmaps. - Set `num_grays'. This is used by `ftview' to choose the blending - algorithm. - (tt_sbit_decoder_load_byte_aligned, - tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound, - tt_sbit_decoder_load_image): Pass load flag. - s/write/pwrite/. - Don't call `tt_sbit_decoder_alloc_bitmap'. - Updated. - (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function. - (tt_sbit_decoder_load_bitmap): Pass load flag. - Handle new glyph formats 17, 18, and 19. - Call `tt_sbit_decoder_alloc_bitmap'. - Flatten color bitmaps if necessary. - (tt_face_load_sbit_image): Updated. + (tt_driver_init): Don't create `TT_ExecContext' object here but ... + (tt_size_init_bytecode): ... here, only on demand. - * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'. + * src/truetype/ttinterp.c (TT_Run_Context): Remove defunct debug + code. + (TT_New_Context): Remove `TT_ExecContext' code related to a global + `TT_Driver' object. - * docs/CHANGES: Updated. + * src/truetype/ttinterp.h: Updated. -2013-05-24 Guenter + * src/truetype/ttgload.c (TT_Hint_Glyph, tt_loader_init): Updated. - Apply Savannah patch #8055. +2015-01-14 Behdad Esfahbod - Make `apinames' create an import file for NetWare. + [autofit] Allocate AF_Loader on the stack instead of AF_Module. - * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2. - (OutputFormat): Add `OUTPUT_NETWARE_IMP'. - (names_dump): Handle it. - (usage): Updated. - (main): Handle new command line flag `-wN'. + Stop sharing a global `AF_Loader'. Allocate one on the stack during + glyph load. -2013-05-23 Behdad Esfahbod + Right now this results in about 25% slowdown, to be fixed in a + following commit. - Compilation fix. + With this patch loading glyphs from different faces from different + threads doesn't immediately crash in the autohinting loader code. - * src/truetype/ttinterp.c (TT_RunIns) - [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work. + Bugs: -2013-05-22 Infinality + https://bugzilla.redhat.com/show_bug.cgi?id=1164941 - [truetype] Formatting and an additional subpixel tweak. + * src/autofit/afloader.c (af_loader_init): Pass + `AF_Loader' and `FT_Memory' instead of `AF_Module' as arguments. + (af_loader_reset, af_loader_load_glyph): Also pass `loader' as + argument. + (af_loader_done): Use `AF_Loader' instead of `AF_Module' as + argument. - * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix. - * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): - Revert previous modification for Verdana clones. + * src/autofit/afmodule.c (af_autofitter_init): Don't call + `af_loader_init'. + (af_autofitter_done): Don't call `af_loader_done'. + (af_autofitter_load_glyph): Use a local `AF_Loader' object. -2013-05-22 Infinality + * src/autofit/afloader.h: Include `afmodule.h'. + Update prototypes. + Move typedef for `AF_Module' to... - [truetype] Adjust subpixel zp2 moves and tweak rules. + * src/autofit/afmodule.h: ... this place. + No longer include `afloader.h'. - These modifications fix thin diagonal stems in some legacy fonts. +2015-01-14 Behdad Esfahbod - * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro. - (Move_Zp2_Point): Don't always disable x moves for subpixel rendering. - (Ins_SHP): Disable x moves here for subpixel rendering. - (Ins_SHPIX): Only disable x moves in compatibility mode. - Split out zp2 move reversals and reorder conditional respectively. + * src/type42/t42objs.h (T42_DriverRec): Remove unused member. - * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight. - Only adjust Verdana clones for 17 ppem. - (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New. - (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'. +2015-01-12 Werner Lemberg -2013-05-20 Infinality + Fix Savannah bug #43976. - [truetype] Simplify and improve subpixel function detection. + Assure that FreeType's internal include directories are found before + `CPPFLAGS' (which might be set by the user in the environment), and + `CPPFLAGS' before `CFLAGS'. - Some small enhancements have allowed the removal of many macros and - the simplification of existing rules in `ttsubpix.c'. + * builds/freetype.mk (FT_CFLAGS): Don't add `INCLUDE_FLAGS'. + (FT_COMPILE): Make this a special variable for compiling only the + files handled in `freetype.mk'. + (.c.$O): Removed, unused. - * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX, - SPH_TWEAK_ALLOW_X_MOVE_ZP2, - SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES, - SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed. - (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro. + * src/*/rules.mk (*_COMPILE): Fix order of include directories. - * src/truetype/ttsubpix.c: Updated affected rules. +2015-01-11 Werner Lemberg - * src/truetype/ttinterp.c (Direct_Move_X): Updated. - (INS_FDEF): Add additional function detection. - (INS_ENDF): Set runtime flag. - (Ins_CALL): Skip the call under certain conditions. - Remove bad code. - (Ins_LOOPCALL): Skip the call under certain conditions. - Remove bad code. - (Move_Zp2_Point): Updated. - (Ins_SHPIX): Updated. - Skip the move under some situations. - (Ins_MIAP): Improve conditions. - (Ins_MIRP): Updated. - (Ins_DELTAP): Skip move under certain conditions. - Simplify conditions. - (TT_RunIns): Updated. - Add code to handle new function detection. - Trace messages. + [truetype] Prettifying. -2013-05-17 Werner Lemberg + * src/truetype/ttinterp.c (project, dualproj, fast_project, + fast_dualproj): Rename to... + (PROJECT, DUALPROJ, FAST_PROJECT, FAST_DUALPROJ): ... this. - Update more FT_Err_XXX macros using FT_ERR and FT_THROW; +2015-01-11 Werner Lemberg - * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c, - builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it. + * src/truetype/ttinterp.c (Ins_JROT, Ins_JROF): Simplify. -2013-05-15 Werner Lemberg + Based on a patch from Behdad. - [truetype] Add `interpreter-version' property. +2015-01-11 Werner Lemberg - This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable - at runtime. + * src/truetype/ttinterp.c (Ins_SxVTL): Simplify function call. - * include/freetype/ftttdrv.h: New file. +2015-01-11 Werner Lemberg - * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New - macro. + * src/truetype/ttinterp.c (Normalize): Remove unused argument. - * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H. - (tt_property_set, tt_property_get): Fill templates. +2015-01-11 Werner Lemberg - * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version' - member. - Remove unused `extension_component' member. + [truetype] More macro expansions. - * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H. - (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph, - compute_glyph_metrics, tt_loader_init): Use `interpreter_version'. + * src/truetype/ttinterp.c (FT_UNUSED_EXEC): Remove macro by + expansion. - * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H. - (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag. - Update all affected functions to use it. - Use TT_INTERPRETER_VERSION_XXX where appropriate. +2015-01-11 Werner Lemberg - * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H. - (tt_driver_init): Initialize `interpreter_version'. + [truetype] More macro expansions. - * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H. - Use TT_INTERPRETER_VERSION_XXX where appropriate. + * src/truetype/ttinterp.c (INS_ARG): Remove macro by expansion, + adjusting function calls where necessary. + (FT_UNUSED_ARG): Removed, no longer needed. -2013-05-13 Werner Lemberg +2015-01-10 Werner Lemberg - [truetype] Avoid empty source file. + [truetype] More macro expansions. - * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: - Provide dummy typedef. + Based on a patch from Behdad. -2013-05-13 Werner Lemberg + * src/truetype/ttinterp.c (DO_*): Expand macros into corresponding + `Ins_*' functions. + (TT_RunIns): Replace `DO_*' macros with `Ins_*' function calls. + (ARRAY_BOUND_ERROR): Remove second definition, which is no longer + needed. + (Ins_SVTCA, Ins_SPVTCA, Ins_SFVTCA): Replaced with... + (Ins_SxyTCA): New function. - * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable. +2015-01-10 Werner Lemberg - Fix suggested by Vaibhav Nagarnaik . + [truetype] Remove TT_CONFIG_OPTION_INTERPRETER_SWITCH. -2013-05-13 Brian Nixon + Behdad suggested this code simplification, and nobody objected... - Fix Savannah bug #38970. + * include/config/ftoption.h, devel/ftoption.h + (TT_CONFIG_OPTION_INTERPRETER_SWITCH): Remove. - * src/base/ftdebug.c, builds/win32/ftdebug.c, - builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c - (ft_debug_init): Don't read past the environment variable FT2_DEBUG. + * src/truetype/ttinterp.c [TT_CONFIG_OPTION_INTERPRETER_SWITCH]: + Remove related code. + (ARRAY_BOUND_ERROR): Use do-while loop. -2013-05-12 Werner Lemberg +2015-01-10 Werner Lemberg - [truetype] Add framework for TrueType properties. + [truetype] More macro expansions. - * src/truetype/ttdrivr.c: Include FT_SERVICE_PROPERTIES_H. - (tt_property_set, tt_property_get): New functions, still empty. - Define `tt_service_properties' service. - Update `tt_services'. + * src/truetype/ttinterp.c, src/truetype/ttinterp.h (EXEC_ARG_, + EXEC_ARG): Remove by replacing with expansion. - * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H. - (TT_SERVICE_PROPERTIES_GET): New macro. - (TTModulePIC): Add `tt_service_properties'. +2015-01-10 Werner Lemberg -2013-05-12 Werner Lemberg + [truetype] More macro expansions. - Fix Savannah bug #38967. + Based on a patch from Behdad. - * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast. + * src/truetype/ttinterp.c (SKIP_Code, GET_ShortIns, NORMalize, + SET_SuperRound, ROUND_None, INS_Goto_CodeRange, CUR_Func_move, + CUR_Func_move_orig, CUR_Func_round, CUR_Func_cur_ppem, + CUR_Func_read_cvt, CUR_Func_write_cvt, CUR_Func_move_cvt, + CURRENT_Ratio, INS_SxVTL, COMPUTE_Funcs, COMPUTE_Round, + COMPUTE_Point_Displacement, MOVE_Zp2_Point): Remove by replacing + with expansion. -2013-05-12 Werner Lemberg + (Cur_Func_project, CUR_Func_dualproj, CUR_fast_project, + CUR_fast_dualproj): Replace with macros `project', `dualproj', + `fast_project', `fast_dualproj'. - Introduce unsigned 64bit type (if available). +2015-01-10 Werner Lemberg - * include/freetype/config/ftconfig.h: Define FT_UINT64 if available. - [FT_LONG64]: Provide FT_UInt64. + [truetype] More macro expansions. - * builds/unix/ftconfig.in: Synchronized. + * src/truetype/ttinterp.c (EXEC_OP_, EXEC_OP): Remove by replacing + with expansion. -2013-05-12 Werner Lemberg +2015-01-10 Werner Lemberg - Fix Savannah bug #38968. + [truetype] Remove code for static TrueType interpreter. - * include/freetype/ftmodapi.h: Add `FT_EXPORT' to - FT_Property_{Set,Get}. - * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to - FT_Property_{Set,Get}. + This is a follow-up patch. -2013-05-10 Werner Lemberg + * src/truetype/ttinterp.c, src/truetype/ttinterp.h + [TT_CONFIG_OPTION_STATIC_INTERPRETER, + TT_CONFIG_OPTION_STATIC_RASTER]: Remove macros and related code. - [sfnt] Clean up bitmap code. +2015-01-10 Werner Lemberg - * src/sfnt/ttsbit.c: Deleted. - * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'. - * rules.mk (SFNT_DRV_H): Updated. + * src/truetype/ttinterp.c (CUR): Remove by replacing with expansion. -2013-05-10 Werner Lemberg + This starts a series of patches that simplifies the code of the + bytecode interpreter. - */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code. ---------------------------------------------------------------------------- -Copyright 2013-2014 by +Copyright 2015-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, diff --git a/ChangeLog.20 b/ChangeLog.20 index 8fcc5e7..07775ff 100644 --- a/ChangeLog.20 +++ b/ChangeLog.20 @@ -330,7 +330,7 @@ 2001-12-22 Francesco Zappa Nardelli - * src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' + * src/pcf/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' and fix incorrect computation of `available_sizes'. 2001-12-22 David Turner @@ -412,7 +412,7 @@ * src/cff/cffgload.h: Updated. * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, - CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GLyphSlot_Init): New + CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GlyphSlot_Init): New functions. (CFF_Init_Face): Renamed to ... (CFF_Face_Init): This. @@ -1056,7 +1056,7 @@ 2001-08-30 Anthony Feik - * src/type1/t1afm.c (T1_Read_Afm): Now correctly sets the flag + * src/type1/t1afm.c (T1_Read_AFM): Now correctly sets the flag FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. 2001-08-25 Werner Lemberg @@ -1176,7 +1176,7 @@ * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for `cursor' and `capacity'. - * src/psaux/psobjc.c (reallocate_t1_table): Use FT_Long for second + * src/psaux/psobjs.c (reallocate_t1_table): Use FT_Long for second parameter. (PS_Table_Add): Use FT_Offset for `new_size'. @@ -1710,7 +1710,7 @@ `FT_Err_*' with `CFF_Err_*'. * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. - * src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with + * src/sfnt/sfobjs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with `TT_Err_*'. * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, @@ -1730,7 +1730,7 @@ * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use FT_LOCAL_DEF. * src/cid/cidobjs.c (CID_Done_Driver): Ditto. - * src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): + * src/truetype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): Ditto. * src/type1/t1objs.c (T1_Done_Driver): Ditto. * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. @@ -1759,7 +1759,7 @@ 2001-03-20 Werner Lemberg - * builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. + * builds/win32/detect.mk: Fix .PHONY target for Intel compiler. 2001-03-20 David Turner @@ -2338,7 +2338,7 @@ 2000-12-06 Werner Lemberg * builds/module.mk: Replaced `xxx #' with `xxx$(space). - * builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to + * builds/os2/detect.mk, builds/win32/detect.mk: Moved comment to avoid trailing spaces in variable. * builds/freetype.mk: Use $(D) instead of $D to make statement more readable. @@ -2412,7 +2412,7 @@ * builds/unix/detect.mk (.PHONY): Adding `devel', `unix', `lcc', `setup'. -2000-11-30 David Turner +2000-11-30 David Turner * INSTALL: Slightly updated the quick starter documentation to include IDE compilation, prevent against BSD Make, and specify `make @@ -2597,7 +2597,7 @@ ---------------------------------------------------------------------------- -Copyright 2000, 2001, 2002, 2007 by +Copyright 2000-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, diff --git a/ChangeLog.21 b/ChangeLog.21 index 300a094..855c86d 100644 --- a/ChangeLog.21 +++ b/ChangeLog.21 @@ -327,7 +327,7 @@ Blaskey ). * src/sfnt/ttcmap.h (TT_CMap): Add member `unsorted'. - * src/sfnt/ttcmac.c: Use SFNT_Err_Ok where appropriate. + * src/sfnt/ttcmap.c: Use SFNT_Err_Ok where appropriate. (tt_cmap0_validate, tt_cmap2_validate, tt_cmap6_validate, tt_cmap8_validate, tt_cmap10_validate, tt_cmap12_validate): Use @@ -571,7 +571,7 @@ doing anything else. This avoids unnecessary heap allocations (400KByte of heap memory for the LZW decoder). - * src/gzip/ftgzip.c (FT_Stream_OpenGZip): Ditto for the gzip + * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Ditto for the gzip decoder, although the code savings are smaller. * docs/CHANGES: Updated. @@ -756,7 +756,7 @@ (AF_AxisHintsRec): Add `max_segments' and `max_edges'. (af_axis_hints_new_segment, af_axis_hints_new_edge): New prototypes. - * src/autofit/aflatin.c (af_latin_metricsc_scale): Don't call + * src/autofit/aflatin.c (af_latin_metrics_scale): Don't call AF_SCALER_EQUAL_SCALES. (af_latin_hints_compute_segments): Change return type to FT_Error. Update all callers. @@ -1014,7 +1014,7 @@ t42_parse_charstrings, t42_parse_dict): Check parser error value after call to T1_Skip_PS_Token (where necessary). - * src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token, + * src/psaux/psobjs.c (skip_string, ps_parser_skip_PS_token, ps_tobytes): Add error messages. 2005-02-12 Werner Lemberg @@ -1112,7 +1112,7 @@ but return them as-is. * docs/CHANGES: Mention new bitmap API. - * include/freetype/ftchapter.s: Updated. + * include/freetype/ftchapters.h: Updated. 2004-12-11 Robert Clark @@ -1159,7 +1159,7 @@ (ah_test_extremum, ah_get_orientation): Removed. (ah_outline_load): Use FT_Outline_Get_Orientation. - * src/base/ftsynth.c (ft_test_extrama, ft_get_orientation): Removed. + * src/base/ftsynth.c (ft_test_extrema, ft_get_orientation): Removed. (FT_GlyphSlot_Embolden): Use FT_Outline_Get_Orientation. 2004-11-23 Fernando Papa @@ -1829,7 +1829,7 @@ 2004-08-05 David Turner - `Activate' gray-scale specifing hinting within the TrueType + `Activate' gray-scale specifying hinting within the TrueType bytecode interpreter. This is an experimental feature which should probably be made optional. @@ -1839,7 +1839,7 @@ (TT_Load_Glyph): Here. Set `grayscale' flag except for `FT_LOAD_TARGET_MONO'. - * src/truetyep/ttinterp.c (Ins_GETINFO): Return MS rasterizer + * src/truetype/ttinterp.c (Ins_GETINFO): Return MS rasterizer version 1.7. Return rotation and stretching info only if glyph is rotated or stretched, respectively. @@ -1868,7 +1868,7 @@ (LITTLE_ENDIAN_USHORT, LITTLE_ENDIAN_UINT): New macros. (T1_Read_PFM): New function. (T1_Read_Metrics): New higher-level function to be used instead of - T1Read_AFM. + T1_Read_AFM. Update all callers. 2004-07-31 Werner Lemberg @@ -2048,7 +2048,7 @@ pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve debugging messages. - * src/pcf/pcfdrivr.c (FT_COMPOMENT): Move up. + * src/pcf/pcfdrivr.c (FT_COMPONENT): Move up. (PCF_Face_Init): Simplify code. * src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'. @@ -2116,7 +2116,7 @@ * include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change return type to FT_Bool. - * src/cache/ftbasic.c (ftc_basic_family_compare): Change return + * src/cache/ftcbasic.c (ftc_basic_family_compare): Change return type to FT_Bool. * src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make @@ -2153,7 +2153,7 @@ * docs/CHANGES: Updated. -2004-06-04 David Chester +2004-06-04 David Chester Improve inter-letter spacing for autohinted glyphs. @@ -2289,7 +2289,7 @@ * src/cff/cffgload.h (CFF_Builder): Remove `error'. * src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace - `Memory_Error' with `Fail' und update all users. + `Memory_Error' with `Fail' and update all users. 2004-05-11 Werner Lemberg @@ -2899,7 +2899,7 @@ Improve MacOS fond support. Provide a new API `FT_New_Face_From_FSSpec' similar to `FT_New_Face'. - * src/base/ftmac.c [__MWERKS__]: Include FSp_fpopen.h. + * src/base/ftmac.c [__MWERKS__]: Include FSp_fopen.h. STREAM_FILE [__MWERKS__]: New macro. (ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions. (file_spec_from_path) [__MWERKS__]: Updated #if statement. @@ -3331,7 +3331,7 @@ * src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap Info service function if the cmap comes from sfnt. Return 0 if the - cmap is sythesized in cff module. + cmap is synthesized in cff module. 2004-01-20 David Turner @@ -3460,7 +3460,7 @@ 2003-12-25 Werner Lemberg - * src/base/fttrigon.c, src/base/ftgloadr.c: Inlude + * src/base/fttrigon.c, src/base/ftgloadr.c: Include FT_INTERNAL_OBJECTS_H. * src/base/ftstroke.c (FT_Outline_GetInsideBorder, @@ -3539,7 +3539,7 @@ src/cache/ftcsbits.c, src/cache/ftccmap.c, src/cache/ftcbasic.c (added), - src/cache/ftclru.c (removed): + src/cache/ftlru.c (removed): *Complete* rewrite of the cache sub-system to `solve' the following points: @@ -4010,7 +4010,7 @@ * src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly. - * src/cif/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. + * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. (cid_ps_get_font_info): New function. (cid_service_ps_info): New service. (cid_services): Updated. @@ -4119,7 +4119,7 @@ (fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty, _num_bdf_properties), src/gzip/infutil.c (inflate_mask), src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td), - src/gzip/inftrees.h (inflate_trees_fixed), srf/gzip/inftrees.c + src/gzip/inftrees.h (inflate_trees_fixed), src/gzip/inftrees.c (inflate_trees_fixed): Decorate with more `const' to avoid writable global variables which are disallowed on ARM. @@ -4659,7 +4659,7 @@ * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. - (t42_service_glyph_dict, t42_service_ps_name): New strucures + (t42_service_glyph_dict, t42_service_ps_name): New structures providing Type 42 services. (t42_services): New services list. (T42_Get_Interface): Use `ft_service_list_lookup'. @@ -4683,7 +4683,7 @@ (gindex,gindex). * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. - * src/pfr/prfload.c: Remove dead code. + * src/pfr/pfrload.c: Remove dead code. (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): New functions. (pfr_phy_font_done): Free `kern_pairs'. @@ -5116,7 +5116,7 @@ ft_glyph_bbox_subpixels, ft_glyph_bbox_gridfit, ft_glyph_bbox_truncate, ft_glyph_bbox_pixels): Replaced with FT_GLYPH_BBOX_UNSCALED, FT_GLYPH_BBOX_SUBPIXELS, - FT_GLYPH_BBIX_GRIDFIT, FT_GLYPH_BBOX_TRUNCATE, FT_GLYPH_BBOX_PIXELS. + FT_GLYPH_BBOX_GRIDFIT, FT_GLYPH_BBOX_TRUNCATE, FT_GLYPH_BBOX_PIXELS. The lowercase variants are now (deprecated aliases) to the uppercase versions. Updated all other files. @@ -5346,7 +5346,7 @@ * src/cff/cffload (cff_subfont_load): Fix default values of expansion_factor and blue_scale. - * src/cif/cidtoken.h, src/type1/t1tokens.h: Use T1_FIELD_FIXED_1000 + * src/cid/cidtoken.h, src/type1/t1tokens.h: Use T1_FIELD_FIXED_1000 for blue_scale. * src/pshinter/pshglob.c (psh_globals_new): Fix default value of @@ -5569,7 +5569,7 @@ * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdriver.c (PCF_Face_Init): Test for charset registry case-insensitively. - * src/gzip/ftgzip.c (ft_gzip_fil_io): Revert change from yesterday; + * src/gzip/ftgzip.c (ft_gzip_file_io): Revert change from yesterday; it has already been fixed differently. * src/truetype/ttinterp.c (DO_SFVTL): Add missing braces around @@ -5706,7 +5706,7 @@ (ah_outline_compute_edges): Scale `edge_distance_threshold' down after rounding instead of scaling comparison value in loop. - * src/autohint/ahhint.c (ah_hinter_align_stong_points): Provide + * src/autohint/ahhint.c (ah_hinter_align_strong_points): Provide alternative code which runs faster. Handle `before->scale == 0'. @@ -5960,7 +5960,7 @@ 2003-03-27 David Turner - * README: Udpated. + * README: Updated. * README.UNX: Removed (now replaced by docs/INSTALL.UNX). @@ -6275,7 +6275,7 @@ (bdf_driver_class): Use `bdf_driver_requester'. * src/pcf/pcfdrivr.c: Include FT_BDF_H. - (pcf_get_bdf_property, pdc_driver_requester): New functions + (pcf_get_bdf_property, pcf_driver_requester): New functions (pcf_driver_class): Use `pcf_driver_requester'. * src/pcf/pcfread.c: Include `pcfread.h'. @@ -6547,7 +6547,7 @@ 2002-11-07 David Turner - * src/cache/ftcsbit.c (ftc_sbit_node_load): Fixed a small bug that + * src/cache/ftcsbits.c (ftc_sbit_node_load): Fixed a small bug that caused problems with embedded bitmaps. * src/otlayout/otlayout.h, src/otlyaout/otlconf.h, @@ -6608,7 +6608,7 @@ 2002-11-01 David Turner - Added PFR-specific public API. Fixed the kerning retrievel routine + Added PFR-specific public API. Fixed the kerning retrieval routine (it returned invalid values when the outline and metrics resolution differ). @@ -6695,7 +6695,7 @@ * src/pfr/pfrgload.c: Include `pfrsbit.h'. * src/pfr/pfrload.c (pfr_extra_item_load_kerning_pairs): Rewritten. (pfr_phy_font_done, pfr_phy_font_load): Updated. - * src/pfr/pfrobks.c: Include `pfrsbit.h'. + * src/pfr/pfrobjs.c: Include `pfrsbit.h'. (pfr_face_init): Handle kerning and embedded bitmaps. (pfr_slot_load): Load embedded bitmaps. (PFR_KERN_INDEX): Removed. @@ -6973,7 +6973,7 @@ * src/pshinter/pshalgo2.c (psh2_glyph_find_strong_points), src/pshinter/pshalgo3.c (psh3_glyph_find_strong_points): Adding fix - to prevent seg fault when hints are provided in an empty glyph. + to prevent segfault when hints are provided in an empty glyph. * src/cache/ftccache.i (GEN_CACHE_LOOKUP) [FT_DEBUG_LEVEL_ERROR]: Removed conditional code. This fixes a bug that prevented @@ -7032,7 +7032,7 @@ (FTC_Image_Cache_Lookup): This function. (ftc_image_family_init): Updated. - * src/cache/ftcsbit.c (FTC_SBitQueryRec, FTC_SBitFamilyRec): + * src/cache/ftcsbits.c (FTC_SBitQueryRec, FTC_SBitFamilyRec): Updated. (ftc_sbit_node_load): Updated. Moved code to convert type flags to load flags to... @@ -7155,7 +7155,7 @@ to ... (FT_Glyph_{Init,Done,Transform,GetBBox,Copy,Prepare}Func): This. (FTRenderer_{render,transform,getCBox,setMode}): Renamed to ... - (FT_Renderer_{RenderFunc,TransformFunc,GetCBoxFunc,SeteModeFunc}): + (FT_Renderer_{RenderFunc,TransformFunc,GetCBoxFunc,SetModeFunc}): This. Updated all affected code. @@ -7556,7 +7556,7 @@ Get glyph offset. * src/truetype/ttobjs.c (TT_Face_Init) - [FT_CONFIG_OPTION_INCOREMENTAL]: Added the incremental loading + [FT_CONFIG_OPTION_INCREMENTAL]: Added the incremental loading system for the TrueType driver. * src/cid/cidgload.c (cid_load_glyph) @@ -7897,7 +7897,7 @@ 2002-06-21 Sven Neumann - * src/prf/pfrtypes.h (PFR_KernPair): New structure. + * src/pfr/pfrtypes.h (PFR_KernPair): New structure. (PFR_PhyFont): Use it. (PFR_KernFlags): New enumeration. * src/pfr/pfrload.c (pfr_extra_item_load_kerning_pairs): New @@ -8245,7 +8245,7 @@ `fttype1.c' in src/base. * src/pshinter/pshglob.c (psh_blues_scale_zones): Fixed a bug that - prevented family blue zones substitution from hapenning correctly. + prevented family blue zones substitution from happening correctly. * include/freetype/ftbdf.h FT_Get_BDF_Charset_ID): Adding documentation comment. @@ -8622,7 +8622,7 @@ 2002-04-19 Werner Lemberg - * src/pfr/pfrload.c (pfr_extra_items_farse): Fix debug message. + * src/pfr/pfrload.c (pfr_extra_items_parse): Fix debug message. (pfr_phy_font_load): s/size/Size/ for local variable to avoid compiler warning. * src/pfr/pfrobjs.c (pfr_face_init): Fix debug message. @@ -8676,7 +8676,7 @@ 2002-04-16 Francesco Zappa Nardelli - * src/pcf/pcfread (pcf_get_accell): Fix parsing of accelerator + * src/pcf/pcfread.c (pcf_get_accel): Fix parsing of accelerator tables. 2002-04-15 David Turner @@ -8716,7 +8716,7 @@ src/cache/ftcimage.c, src/cache/ftcsbits.c, - src/cff/cffdriver.c, src/cff/cffload.c, src/cff/cffobjs.c, + src/cff/cffdrivr.c, src/cff/cffload.c, src/cff/cffobjs.c, src/cid/cidload.c, src/cid/cidparse.c, src/cid/cidriver.c, @@ -9068,7 +9068,7 @@ * include/freetype/internal/psaux.h, src/cid/cidload.c, src/cidtoken.h, src/psaux/psobjs.c, src/psaux/psobjs.h, - src/psaux/t1decode.c, stc/type1/t1load.c, src/type1/t1tokens.h: + src/psaux/t1decode.c, src/type1/t1load.c, src/type1/t1tokens.h: Updated common PostScript type definitions. Renamed all enumeration values like to uppercase variants: @@ -9076,7 +9076,7 @@ t1_field_cid_info => T1_FIELD_LOCATION_CID_INFO etc. - * include/freetype/internal/psglobals.h: Removed. + * include/freetype/internal/psglobal.h: Removed. * include/freetype/internal/pshints.h, src/pshinter/pshglob.h: Updated. @@ -9423,7 +9423,7 @@ ---------------------------------------------------------------------------- -Copyright 2002, 2003, 2004, 2005, 2007, 2008 by +Copyright 2002-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, diff --git a/ChangeLog.22 b/ChangeLog.22 index 4144288..ce08dc9 100644 --- a/ChangeLog.22 +++ b/ChangeLog.22 @@ -260,7 +260,7 @@ 2006-04-26 Werner Lemberg * src/psaux/psobjs.c (shift_elements): Don't use FT_Long but - FT_PtrDiff for `delta'. Reported by Céline PILLET + FT_PtrDist for `delta'. Reported by Céline PILLET . 2006-04-21 David Turner @@ -352,7 +352,7 @@ * src/tools/docmaker/sources.py (re_bold, re_italic): Accept "'" also. -2006-03-23 David Turner +2006-03-23 David Turner Add FT_Get_SubGlyph_Info API to retrieve subglyph data. Note that we do not expose the FT_SubGlyphRec structure. @@ -360,7 +360,7 @@ * include/freetype/internal/ftgloadr.h (FT_SUBGLYPH_FLAGS_*): Moved to... * include/freetype/freetype.h (FT_SUBGLYPH_FLAGS_*): Here. - (FT_Get_SybGlyph_Info): New declaration. + (FT_Get_SubGlyph_Info): New declaration. * src/base/ftobjs.c (FT_Get_SubGlyph_Info): New function. @@ -387,10 +387,10 @@ (FTC_INode_Weight): Commented out. * src/cache/ftcimage.h: Updated. - * src/cache/ftmanag.c (FTC_Manager_Compress, + * src/cache/ftcmanag.c (FTC_Manager_Compress, FTC_Manager_RegisterCache, FTC_Manager_FlushN): s/FT_EXPORT/FT_LOCAL/. - * src/cache/ftmanag.h: Updated. + * src/cache/ftcmanag.h: Updated. * src/cache/ftcsbits.c (FTC_SNode_Free, FTC_SNode_New, FTC_SNode_Compare): s/FT_EXPORT/FT_LOCAL/. @@ -934,7 +934,7 @@ * include/freetype/freetype.h (FT_GlyphSlotRec): Improve documentation of `outline' field. - * src/sfnt/sfobjc.s: Inckude FT_INTERNAL_DEBUG_H. + * src/sfnt/sfobjs.c: Include FT_INTERNAL_DEBUG_H. * src/sfnt/sfdriver.c: Include ttmtx.h. * src/autofit/afcjk.c: Include aftypes.h and aflatin.h. @@ -1630,8 +1630,8 @@ * include/freetype/internal/t1types.h (T1_FaceRec): Updated. - * src/psaux/t1cmap.h (T1_CmapStdRec): Updated. - (T1_CmapUnicode, T1_CmapUnicodeRec): Removed. + * src/psaux/t1cmap.h (T1_CMapStdRec): Updated. + (T1_CMapUnicode, T1_CMapUnicodeRec): Removed. * src/psaux/t1cmap.c (t1_get_glyph_name): New callback function. (t1_cmap_unicode_init, t1_cmap_unicode_done, @@ -1781,7 +1781,7 @@ Note that this doesn't force auto-hinting for all fonts, however. * src/autofit/afhints.c (af_glyph_hints_reload): Don't set - scaler_fiags here but... + scaler_flags here but... (af_glyph_hints_rescale): Here. * src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal @@ -1813,7 +1813,7 @@ [TT_CONFIG_OPTION_BDF]: New structure. (TT_FaceRec) [TT_CONFIG_OPTION_BDF]: New member `bdf'. - * include/freetype/ttags.h (TTAG_BDF): New macro. + * include/freetype/tttags.h (TTAG_BDF): New macro. * src/sfnt/Jamfile (_sources): Add ttbdf. @@ -1835,7 +1835,7 @@ 2005-12-07 Werner Lemberg - * src/sfnt/sfobjc.c (sfnt_init_face): Move tag check to... + * src/sfnt/sfobjs.c (sfnt_init_face): Move tag check to... * src/sfnt/ttload.c (sfnt_init): Here, before handling TTCs. 2005-12-06 Chia-I Wu @@ -1962,7 +1962,7 @@ * docs/CHANGES: Mention scaling bug. -2005-11-18 susuzki toshiya +2005-11-18 suzuki toshiya * include/freetype/ftgxval.h, src/base/ftgxval.c (FT_TrueTypeGX_Free, FT_ClassicKern_Free): New functions to free @@ -2311,7 +2311,7 @@ CJK font). A SING Glyphlet Font is an OpenType font that contains the outline(s), either in a `glyf' or `CFF' table, for a glyph; `cmap', `BASE', and `GSUB' tables are present with the same format - and functionaliy as a regular OpenType font; there are no `name', + and functionality as a regular OpenType font; there are no `name', `head', `OS/2', and `post' tables; there are two new tables, `SING' which contains details about the glyphlet, and `META' which contains metadata. @@ -2320,7 +2320,7 @@ http://www.adobe.com/products/indesign/sing_gaiji.html - * include/freetype/ttags.h (TTAG_SING, TTAG_META): New macros for + * include/freetype/tttags.h (TTAG_SING, TTAG_META): New macros for the OpenType tables `SING' and `META'. These two tables are used in SING Glyphlet Format fonts. @@ -2371,7 +2371,7 @@ (gxv_kern_subtable_fmt1_valueTable_load, gxv_kern_subtable_fmt1_subtable_setup, gxv_kern_subtable_fmt1_entry_validate): Fix C++ compiler errors. - (gxv_kern_coverage_validate): Use KERN_DIALECT_UNKWOWN. + (gxv_kern_coverage_validate): Use KERN_DIALECT_UNKNOWN. Improve trace message. (gxv_kern_validate_generic): Fix C++ compiler error. Improve trace message. @@ -2821,7 +2821,7 @@ ---------------------------------------------------------------------------- -Copyright 2005, 2006, 2007, 2008 by +Copyright 2005-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, diff --git a/ChangeLog.23 b/ChangeLog.23 index 1a23848..b8a914b 100644 --- a/ChangeLog.23 +++ b/ChangeLog.23 @@ -139,7 +139,7 @@ Fix compilation warning. * src/base/ftbase.h: s/LOCAL_DEF/LOCAL/. - * src/base/ftobjc.s: Include ftbase.h conditionally. + * src/base/ftobjs.c: Include ftbase.h conditionally. 2010-01-11 Kwang Yul Seo @@ -197,7 +197,7 @@ Fix Savannah bug #28395. * src/truetype/ttdriver.c (Load_Glyph), src/type1/t1gload.c - (T1_Loada_Glyph): Don't check `num_glyphs' if incremental interface + (T1_Load_Glyph): Don't check `num_glyphs' if incremental interface is used. 2010-01-05 Ken Sharp @@ -655,7 +655,7 @@ [Win64] Improve the computation of random seed from stack address. On LLP64 platform, the conversion from pointer to FT_Fixed need - to drop higher 32-bit. Explict casts are required. Reported by + to drop higher 32-bit. Explicit casts are required. Reported by NightStrike from MinGW-w64 project. See http://lists.gnu.org/archive/html/freetype/2009-09/msg00000.html @@ -891,7 +891,7 @@ pcf: Fix a comparison between FT_Long and FT_ULong. * src/pcf/pcfread.c (pcf_get_bitmaps): Return an error - if PCF_Face->nemetrics is negative. + if PCF_Face->nmetrics is negative. 2009-07-31 suzuki toshiya @@ -1150,7 +1150,7 @@ 2009-07-31 suzuki toshiya - cache: Insert explict casts for LP64 systems. + cache: Insert explicit casts for LP64 systems. * src/cache/ftcbasic.c (FTC_ImageCache_Lookup, FTC_SBitCache_Lookup): The type of FTC_ImageType->width @@ -1409,7 +1409,7 @@ base: Prevent some overflows on LP64 systems. - * src/base/ftadvance.c (FT_Get_Advances): Cast the + * src/base/ftadvanc.c (FT_Get_Advances): Cast the unsigned long constant FT_LOAD_ADVANCE_ONLY to FT_UInt32 for LP64 platforms. @@ -1499,7 +1499,7 @@ bdf: Fix some data types mismatching with their sources. - * src/bdf/bdrdrivr.c (bdf_cmap_char_index): The type + * src/bdf/bdfdrivr.c (bdf_cmap_char_index): The type of `code' is matched with BDF_encoding_el->enc. (bdf_cmap_char_next): The type of `charcode' is matched with BDF_encoding_el->enc. When *acharcode @@ -1545,7 +1545,7 @@ * src/cache/ftcbasic.c (FTC_ImageCache_Lookup): Exclude the legacy behaviour from 16-bit platform, because the current hack cannot detect the caller uses this function - via legacy convension. + via legacy convention. (FTC_SBitCache_Lookup): Ditto. 2009-07-31 suzuki toshiya @@ -1585,7 +1585,7 @@ 2009-07-31 suzuki toshiya - fttypes.h: Cast FT_MAKE_TAG output to FT_Tag exlicitly. + fttypes.h: Cast FT_MAKE_TAG output to FT_Tag explicitly. * include/freetype/fttypes.h (FT_MAKE_TAG): Cast the result to FT_Tag. @@ -1687,7 +1687,7 @@ sfnt: Count the size of the memory object by ptrdiff_t. * src/sfnt/ttbdf.c (tt_face_find_bdf_prop): The type of - `peroperty_len' is changed from FT_UInt to FT_Offset, + `property_len' is changed from FT_UInt to FT_Offset, to match with size_t, which is appropriate type for the object in the memory buffer. @@ -2122,7 +2122,7 @@ Use 16.16 format everywhere (except for large integers followed by a `div'). [CAN_HANDLE_NON_INTEGRAL_T1_OPERANDS]: Remove #ifdef and activate - code uncoditionally. + code unconditionally. Add support for random numbers and update remaining code accordingly; this should work now. (t1_operator_seac): Updated. @@ -2479,7 +2479,7 @@ af_latin_script_class struct will have function to init it instead of being allocated in the global scope. Change af_latin_blue_chars to be PIC-compatible by being a two - dimentional array rather than array of pointers. + dimensional array rather than array of pointers. * src/autofit/aflatin2.h declare af_latin2_script_class @@ -2489,11 +2489,11 @@ af_latin2_script_class struct will have function to init it instead of being allocated in the global scope. Change af_latin2_blue_chars to be PIC-compatible by being a two - dimentional array rather than array of pointers. + dimensional array rather than array of pointers. * src/autofit/afglobal.c when FT_CONFIG_OPTION_PIC is defined af_script_classes array initialization was moved to afpic.c and - is later refered using macros defeined in afpic.h. + is later referred using macros defined in afpic.h. New Files: * src/autofit/afpic.h declare struct to hold PIC globals for autofit @@ -2573,7 +2573,7 @@ Macros will be used from rastpic.h in order to access ft_standard_raster from the pic_container (allocated in ftraster.c). In ft_raster1_render when PIC is enabled, the last letter of - module_name is used to verfy the renderer class rather than the + module_name is used to verify the renderer class rather than the class pointer. * src/raster/ftraster.c when FT_CONFIG_OPTION_PIC is defined @@ -2755,7 +2755,7 @@ And macros will be used from ttpic.h in order to access them from the pic_container. * src/truetype/ttobjs.c change trick_names array to be - PIC-compatible by being a two dimentional array rather than array + PIC-compatible by being a two dimensional array rather than array of pointers. New Files: @@ -2784,14 +2784,14 @@ Add macros to declare, allocate and initialize drivers (FT_Driver_ClassRec). * include/freetype/internal/ftpic.h new file to declare the - FT_PIC_Container struct and the functions to allocate and detroy it. + FT_PIC_Container struct and the functions to allocate and destroy it. * include/freetype/internal/ftserv.h add macros to allocate and - destory arrays of FT_ServiceDescRec. + destroy arrays of FT_ServiceDescRec. * include/freetype/internal/internal.h define macro to include ftpic.h. New Files: - * src/base/ftpic.c implement functions to allocate and destory the + * src/base/ftpic.c implement functions to allocate and destroy the global pic_container. * src/base/basepic.h declare struct to hold PIC globals for base and macros to access them. @@ -2814,8 +2814,8 @@ * src/base/ftglyph.c when FT_CONFIG_OPTION_PIC is defined ft_bitmap_glyph_class and ft_outline_glyph_class will be allocated in the pic_container instead of the global scope and use macros from - basepic.h to access them. - * src/base/ftbbox.c allocate bbox_interface stract on the stack + basepic.h to access them. + * src/base/ftbbox.c allocate bbox_interface struct on the stack instead of the global scope when FT_CONFIG_OPTION_PIC is defined. * src/base/ftstroke.c access ft_outline_glyph_class allocated in ftglyph.c via macros from basepic.h @@ -3519,7 +3519,7 @@ 2008-12-21 Werner Lemberg * src/pfr/pfrdrivr.c, src/winfonts/winfnt.c, src/cache/ftcmanag.c, - src/smooth/ftgrays.c, src/base/ftobjc.s, src/sfobjs.c: + src/smooth/ftgrays.c, src/base/ftobjs.c, src/sfobjs.c: s/_Err_Bad_Argument/_Err_Invalid_Argument/. The former is for errors in the bytecode interpreter only. @@ -3576,7 +3576,7 @@ * docs/CHANGES: Updated. -2008-12-18 Bevan, David +2008-12-18 David Bevan Provide API for accessing embedding and subsetting restriction information. @@ -3656,12 +3656,12 @@ * src/sfnt/sfobjs.c (sfnt_load_face): A font with neither outlines nor bitmaps is scalable. -2008-12-05 Werner Lemberg +2008-12-05 Werner Lemberg * src/autofit/aflatin.c (af_latin_uniranges): Add more ranges. This fixes Savannah bug #21190 which also provides a basic patch. -2008-12-05 Werner Lemberg +2008-12-05 Werner Lemberg * include/freetype/freetype.h (FT_LOAD_ADVANCE_ONLY): Use value 0x100 instead of 0x10000; the latter value is already occupied by @@ -4098,7 +4098,7 @@ 2008-09-18 suzuki toshiya * src/cff/cffobjs.c (cff_face_init): Use TTAG_OTTO defined - in ttags.h instead of numerical value 0x4F54544FL. + in tttags.h instead of numerical value 0x4F54544FL. 2008-09-16 Werner Lemberg @@ -4160,7 +4160,7 @@ used in building of FreeType2, it is written in `freetype2.pc' and `freetype-config'. -2008-09-01 david turner +2008-09-01 David Turner * src/cache/ftccmap.c (FTC_CMapCache_Lookup): Accept a negative cmap index to mean `use default cached FT_Face's charmap'. This fixes @@ -4248,7 +4248,7 @@ 2008-08-29 suzuki toshiya * src/sfnt/sfobjs.c (sfnt_open_font): Use TTAG_OTTO defined in - ttags.h instead of FT_MAKE_TAG( 'O', 'T', 'T', 'O' ). + tttags.h instead of FT_MAKE_TAG( 'O', 'T', 'T', 'O' ). 2008-08-28 Werner Lemberg @@ -4258,7 +4258,7 @@ 2008-08-23 Werner Lemberg - * src/type/t1afm.c (compare_kern_pairs), src/pxaux/afmparse.c + * src/type/t1afm.c (compare_kern_pairs), src/psaux/afmparse.c (afm_compare_kern_pairs): Fix comparison. This fixes Savannah bug #24119. @@ -4387,7 +4387,7 @@ * src/cff/cffload.c (cff_font_load): Pass `pure_cff'. Invert sids table only if `pure_cff' is set. - * src/cff/cffload.h: Udpated. + * src/cff/cffload.h: Updated. * src/cff/cffobjs.c (cff_face_init): Updated. Set FT_FACE_FLAG_CID_KEYED only if pure_cff is set. @@ -4931,7 +4931,7 @@ tt_cmap14_find_variant): Return correct value. (tt_cmap14_variant_chars): Fix check for `di'. -2008-02-29 Wermer Lemberg +2008-02-29 Werner Lemberg * docs/CHANGES: Updated. @@ -5329,7 +5329,7 @@ 2007-08-18 Werner Lemberg - * src/otvalid/otvcmmn.c (otv_x_y_ux_sy): Skip context glyphs. Found + * src/otvalid/otvcommn.c (otv_x_y_ux_sy): Skip context glyphs. Found by Imran Yousaf. Fixes Savannah bug #20773. (otv_Lookup_validate): Correct handling of LookupType. Found by @@ -5428,7 +5428,7 @@ * include/freetype/config/ftheader.h (FT_CID_H): New macro. * include/freetype/ftcid.h: New file. - * include/freetype/internal/ftserv.h (FT_SERVIVE_CID_H): New macro. + * include/freetype/internal/ftserv.h (FT_SERVICE_CID_H): New macro. * include/freetype/internal/services/svcid.h: New file. * src/base/ftcid.c: New file. @@ -5938,7 +5938,7 @@ Savannah patch #5929. - * include/freetype/tttables.h, src/base/ftobjcs.c + * include/freetype/tttables.h, src/base/ftobjs.c (FT_Get_CMap_Format): New function. * include/freetype/internal/services/svttcmap.c (TT_CMapInfo): Add @@ -6005,7 +6005,7 @@ 2007-05-11 David Turner - * src/cache/ftbasic.c, include/freetype/ftcache.h + * src/cache/ftcbasic.c, include/freetype/ftcache.h (FTC_ImageCache_LookupScaler, FTC_SBit_Cache_LookupScaler): Two new functions that allow us to look up glyphs using an FTC_Scaler object to specify the size, making it possible to use fractional pixel @@ -6097,8 +6097,8 @@ 2007-04-06 David Turner - * src/base/ftbimap.c (ft_bitmap_assure_buffer): Fix buffer-overwrite bug - (Savannah bug #19536). + * src/base/ftbitmap.c (ft_bitmap_assure_buffer): Fix buffer-overwrite + bug (Savannah bug #19536). 2007-04-04 Werner Lemberg @@ -6201,14 +6201,14 @@ conftest.c, to avoid unexpected shell evaluation. Possibly it is a bug or undocumented behaviour of autoconf. -2007-03-18 David Turner +2007-03-18 David Turner * src/truetype/ttinterp.c (Ins_MDRP): Another bytecode regression fix; testing still needed. * src/truetype/ttinterp.c (Ins_MD): Another bytecode regression fix. -2007-03-17 David Turner +2007-03-17 David Turner * src/truetype/ttinterp.c (Ins_IP): Fix wrong handling of the (undocumented) twilight zone special case. @@ -6256,7 +6256,7 @@ case FT_Init_FreeType fails for some reason. Problem reported by Maximilian Schwerin . - * src/truetype/ttobs.c (tt_size_init_bytecode): Clear the `x_ppem' + * src/truetype/ttobjs.c (tt_size_init_bytecode): Clear the `x_ppem' and `y_ppem' fields of the `TT_Size.metrics' structure, not those of `TT_Size.root.metrics'. Problem reported by Daniel Glöckner . @@ -6335,7 +6335,7 @@ * src/base/ftutil.c (ft_mem_dup, ft_mem_strdup, ft_mem_strcpyn): New functions. - * src/bfd/bfddrivr.c (bdf_interpret_style, BDF_Face_Init), + * src/bdf/bdfdrivr.c (bdf_interpret_style, BDF_Face_Init), src/bdf/bdflib.c (_bdf_add_property), src/pcf/pcfread.c (pcf_get_properties, pcf_interpret_style, pcf_load_font), src/cff/cffdrivr.c (cff_get_glyph_name), src/cff/cffload.c @@ -6546,7 +6546,7 @@ 2007-01-16 David Turner * src/autofit/aflatin.c (af_latin_hints_compute_segments), - src/cff/cffdriver.c (cff_ps_get_font_info), src/truetype/ttobjs.c + src/cff/cffdrivr.c (cff_ps_get_font_info), src/truetype/ttobjs.c (tt_face_init), src/truetype/ttinterp.c (Ins_SHC): Fix compiler warnings. @@ -6592,7 +6592,7 @@ * src/cff/cffload.c: Include FT_TYPE1_TABLES_H. (cff_font_done): Free font->font_info if necessary. - * src/cff/cffdrvr.c (cff_ps_get_font_info): New function. + * src/cff/cffdrivr.c (cff_ps_get_font_info): New function. (cff_service_ps_info): Register cff_ps_get_font_info. 2007-01-13 Werner Lemberg @@ -6734,7 +6734,7 @@ files are not used. * include/freetype/internal/tttypes.h (TT_FaceRec): Add members - `horz_metrics_offset' and `vert_metrics_ofset'. + `horz_metrics_offset' and `vert_metrics_offset'. * src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics): Updated. @@ -7517,7 +7517,7 @@ 2006-08-15 suzuki toshiya * modules.cfg (BASE_EXTENSIONS): Compile in ftgxval.c by default to - build ftvalid in ft2demos. This has been inadvertedly changed + build ftvalid in ft2demos. This has been inadvertently changed 2006-08-13. 2006-08-15 suzuki toshiya @@ -7647,7 +7647,7 @@ `len_buildchar'. Remove `keywords_flags'. - * src/type1/t1load.h (T1_LoaderRect): New field + * src/type1/t1load.h (T1_LoaderRec): New field `keywords_encountered'. (T1_PRIVATE, T1_FONTDIR_AFTER_PRIVATE): New macros. @@ -7840,7 +7840,7 @@ * src/base/ftobjs.c (load_face_in_embedded_rfork): Replace `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak. - * src/base/ftrfrk.c (raccess_guess_linux_double_from_file_name): + * src/base/ftrfork.c (raccess_guess_linux_double_from_file_name): Replace `FT_Stream_Close' by `FT_Stream_Free' to fix memory leak. 2006-05-19 suzuki toshiya @@ -7902,7 +7902,7 @@ (FT_Stream_OpenGzip): Use it to handle small files directly in memory. - * src/psaux/psconv.c (PS_Conv_ASCIIHexDecode, PS_ConvEexecDecode): + * src/psaux/psconv.c (PS_Conv_ASCIIHexDecode, PS_Conv_EexecDecode): Improve performance. * src/truetype/ttgload.c (TT_Access_Glyph_Frame): Set `cursor' and @@ -7932,7 +7932,7 @@ ---------------------------------------------------------------------------- -Copyright 2006, 2007, 2008, 2009, 2010 by +Copyright 2006-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, diff --git a/ChangeLog.24 b/ChangeLog.24 index 01eb3b7..cbbfd8c 100644 --- a/ChangeLog.24 +++ b/ChangeLog.24 @@ -780,7 +780,7 @@ Move font tweaking tables to... - * src/truetype/ttsubpic.c: This file and decorate them with `static' + * src/truetype/ttsubpix.c: This file and decorate them with `static' and `const' where appropriate. (X_SCALING_Rules, X_SCALING_RULES_SIZE): Renamed to... @@ -978,7 +978,7 @@ [base] Clean up trigonometric core. - * src/base/fttrrigon.c (ft_trig_pseudo_polarize): Align algorithm + * src/base/fttrigon.c (ft_trig_pseudo_polarize): Align algorithm with `ft_trig_pseudo_rotate'. 2012-12-18 Infinality @@ -990,7 +990,7 @@ 2012-12-17 Infinality - [truetype] Remove unusued code and variables. + [truetype] Remove unused code and variables. * src/truetype/ttinterp.c: Updated. (Ins_FDEF): Remove opcode patterns that are not being used. @@ -1012,7 +1012,7 @@ 2012-12-16 Infinality - [truetype] Remove unusued code and variables. Add minor fixes. + [truetype] Remove unused code and variables. Add minor fixes. * src/truetype/ttsubpix.h: Updated. (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Trebuchet MS. @@ -1037,7 +1037,7 @@ (Ins_FDEF): Rework code to fix bugs and add more detection. (Ins_CALL): Remove unused code. (Ins_LOOPCALL): Remove unused code. - (TT_RunIns): Remove unusued code. + (TT_RunIns): Remove unused code. (Ins_SHPIX): Add logic to handle ttfautohinted fonts. (Ins_MIRP): Don't round x in cut-in calculation. Add logic to handle ttfautohinted fonts. @@ -1395,7 +1395,7 @@ [autofit] Minor optimization. - * src/autofit/afglobals.c (af_face_globals_compute_script_coverage): + * src/autofit/afglobal.c (af_face_globals_compute_script_coverage): Add loop condition. 2012-09-29 Werner Lemberg @@ -1859,7 +1859,7 @@ Fix `checking if gcc static flag -static works' test. - On my linux build tree, I receive yes answer in in every package I + On my linux build tree, I receive yes answer in every package I build except freetype for this test checking if gcc static flag `-static' works @@ -2014,7 +2014,7 @@ (compute_glyph_metrics): Handle `compatible widths' option. (tt_loader_init): Handle ClearType GETINFO information bits. - * src/truetype/rules.mk (TT_DRC_SRC): Updated. + * src/truetype/rules.mk (TT_DRV_SRC): Updated. * src/truetype/ttinterp.c: Include `ttsubpix.h'. [Where necessary, changes below are guarded by @@ -2546,7 +2546,7 @@ * src/bdf/bdflib.c (_bdf_is_atom): Fix handling of property value. -2012-02-24  Vinnie Falco +2012-02-24 Vinnie Falco Prepare source code for amalgamation (6/6). @@ -2556,20 +2556,20 @@ s/t1_init_loader/cid_init_loader/. s/t1_done_loader/cid_done_loader/. - * src/pxaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/. + * src/psaux/t1cmap.c: s/t1_get_glyph_name/psaux_get_glyph_name/. * src/truetype/ttdriver.c: s/Load_Glyph/tt_glyph_load/. * src/type1/t1load.c: s/parse_font_matrix/t1_parse_font_matrix/. -2012-02-24  Vinnie Falco +2012-02-24 Vinnie Falco Prepare source code for amalgamation (5/6). * include/freetype/fterrors.h: Undefine FT_KEEP_ERR_PREFIX after using it. -2012-02-22  Vinnie Falco +2012-02-22 Vinnie Falco Prepare source code for amalgamation (4/6). @@ -2581,7 +2581,7 @@ * src/raster/ftraster.c: s/TRaster/gray_TRaster/, s/PRaster/gray_PRaster/. -2012-02-20  Vinnie Falco +2012-02-20 Vinnie Falco Prepare source code for amalgamation (3/6). @@ -2590,14 +2590,14 @@ * src/raster/ftraster.c: s/TWorker/gray_TWorker/, s/PWorker/gray_PWorker/. -2012-02-20  Vinnie Falco +2012-02-20 Vinnie Falco Prepare source code for amalgamation (2/6). * src/smooth/ftgrays.c, src/raster/ftraster.c: Undefine FLOOR, CEILING, TRUNC, and SCALED before defining it. -2012-02-20  Vinnie Falco +2012-02-20 Vinnie Falco Prepare source code for amalgamation (1/6). @@ -2796,9 +2796,9 @@ [base] Fix a dereference of uninitialized variable in PIC mode. * src/base/ftglyph.c (FT_Glyph_To_Bitmap): `glyph' must be - set before derefering to obtain `library'. The initialization + set before dereferring to obtain `library'. The initialization of `clazz', `glyph', `library' and NULL pointer check are - reordered to minimize PIC conditonals. + reordered to minimize PIC conditionals. 2012-01-14 suzuki toshiya @@ -3261,7 +3261,7 @@ 2011-09-17 Alexei Podtelezhnikov - [smooth] Slightly optimize conic and cubic flatterners. + [smooth] Slightly optimize conic and cubic flatteners. * src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move out some code from the main loop to speed it up. @@ -3621,7 +3621,7 @@ * src/base/ftstroke.c: Revised. * include/freetype/ftstroke.h: Updated. -2011-06-30 Ä°smail Dönmez +2011-06-30 Ä°smail Dönmez * builds/toplevel.mk: We use git, not CVS, thus skip `.gitignore'. @@ -3680,7 +3680,7 @@ [autogen.sh] Reflect environment variable LIBTOOLIZE. -2011-06-18 Werner Lemberg +2011-06-18 Werner Lemberg Update license documentation. @@ -4000,7 +4000,7 @@ [autofit] Add bluezones for CJK Ideographs. - To remove extremas of vertical strokes of CJK Ideographs at + To remove extrema of vertical strokes of CJK Ideographs at low resolution and make the top and bottom horizontal stems aligned, bluezones for CJK Ideographs are calculated from sample glyphs. At present, vertical bluezones (bluezones @@ -4120,7 +4120,7 @@ [autofit] Add more Indic scripts with hanging baseline. * src/autofit/afindic.c (af_indic_uniranges): Tibetan, Limbu, - Sundanese, Meetei Mayak, Syloti Nagri and Sharada scripts are + Sundanese, Meetei Mayek, Syloti Nagri and Sharada scripts are added. 2011-04-21 Behdad Esfahbod @@ -4756,7 +4756,7 @@ * src/bzip2/*: New files. * src/pcf/pcf.h: s/gzip_/comp_/. - * src/pcf/pcfdrvr.c: Include FT_BZIP2_H. + * src/pcf/pcfdrivr.c: Include FT_BZIP2_H. s/gzip_/comp_/. (PCF_Face_Init): Handle bzip2 compressed files. @@ -4768,7 +4768,7 @@ If we encounter a space in a string then the sbit buffer is NULL, height and width are 0s. So the check in ftc_snode_compare will - always pass for spaces (comparision with 255). Here the comments + always pass for spaces (comparison with 255). Here the comments above the condition are proper but the implementation is not. When we create an snode I think it is the proper way to initialize the width to 255 and then put a check for being equal to 255 in snode @@ -5420,7 +5420,7 @@ a Kaishu typeface paired with `HuaTianSongTi?' by Huatian Information Industry. -2010-08-17 Teijo Kinnunen +2010-08-17 Teijo Kinnunen [cache] Fix Savannah bug #30788. @@ -5548,7 +5548,7 @@ Add reference counters and to FT_Library and FT_Face objects. * include/freetype/freetype.h (FT_Reference_Face): New function. - * include/freetype/ftmodapi.h (FT_Rererence_Library): New function. + * include/freetype/ftmodapi.h (FT_Reference_Library): New function. * include/freetype/internal/ftobjs.h (FT_Face_InternalRec, FT_LibraryRec): New field `refcount'. @@ -6278,8 +6278,8 @@ Use real types instead of `void' for `pshinter' and `psnames' fields. * src/cff/cffload.c: Don't include PS cmaps service. - (cff_index_get_pointers): Add `pool' parameter which allows to - insert an extra NUL character for each String INDEX entry. + (cff_index_get_pointers): Add `pool' parameter which allows inserting + an extra NUL character for each String INDEX entry. (cff_index_get_name): Make it a local function. (cff_index_get_string): New function. (cff_subfont_load): Updated. @@ -6344,7 +6344,7 @@ ---------------------------------------------------------------------------- -Copyright 2010-2013 by +Copyright 2010-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, diff --git a/ChangeLog.25 b/ChangeLog.25 new file mode 100644 index 0000000..e85be5d --- /dev/null +++ b/ChangeLog.25 @@ -0,0 +1,5161 @@ +2014-12-30 Werner Lemberg + + * Version 2.5.5 released. + ========================= + + + Tag sources with `VER-2-5-5'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.5.5. + + * 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.4/2.5.5/, s/254/255/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5. + + * builds/unix/configure.raw (version_info): Set to 17:4:11. + * CMakeLists.txt (VERSION_PATCH): Set to 5. + * docs/CHANGES: Updated. + + * builds/toplevel.mk (dist): Fix typos. + +2014-12-24 Alexei Podtelezhnikov + + [base] Formatting and nanooptimizations. + + * src/base/ftcalc.c, + * src/base/fttrigon.c: Revise sign restoration. + +2014-12-13 Werner Lemberg + + * src/pcf/pcfread.c (pcf_read_TOC): Improve fix from 2014-12-08. + +2014-12-11 Werner Lemberg + + * builds/toplevel.mk (dist): Use older POSIX standard for `tar'. + + Apparently, BSD tar isn't capable yet of handling POSIX-1.2001 + (contrary to GNU tar), so force the POSIX-1.1988 format. + + Problem reported by Stephen Fisher . + +2014-12-11 Werner Lemberg + + * src/type42/t42parse.c (t42_parse_sfnts): Reject invalid TTF size. + +2014-12-11 Werner Lemberg + + * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix off-by-one check. + + Problem reported by Dennis Felsing . + +2014-12-11 Werner Lemberg + + * src/type42/t42parse.c (t42_parse_sfnts): Check `string_size'. + + Problem reported by Dennis Felsing . + +2014-12-09 suzuki toshiya + + [gxvalid] Fix a naming convention conflicting with ftvalid. + + See previous changeset for otvalid. + + * src/gxvalid/{gxvcommn.h, gxvmort.h, gxvmorx.h}: Replace + `valid' by `gxvalid'. + * src/gxvalid/{gxvbsln.c, gxvcommn.c, gxvfeat.c, gxvjust.c, + gxvkern.c, gxvlcar.c, gxvmort.c, gxvmort0.c, gxvmort1.c, + gxvmort2.c, gxvmort4.c, gxvmort5.c, gxvmorx.c, gxvmorx0.c, + gxvmorx1.c, gxvmorx2.c, gxvmorx4.c, gxvmorx5.c, gxvopbd.c, + gxvprop.c, gxvtrak.c}: Replace `valid' by `gxvalid' if + it is typed as GXV_Validator. + +2014-12-09 suzuki toshiya + + [otvalid] Fix a naming convention conflicting with ftvalid. + + Some prototypes in ftvalid.h use `valid' for the variables + typed as FT_Validator. Their implementations in src/base/ + ftobjs.c and utilizations in src/sfnt/ttcmap.c do similar. + + Some macros in otvcommn.h assume the exist of the variable + `valid' typed as OTV_Validator in the caller. + + Mixing these two conventions cause invalid pointer conversion + and unexpected SEGV in longjmp. To prevent it, all variables + typed as OTV_Validator are renamed to `otvalid'. + + * src/otvalid/otvcommn.h: Replace `valid' by `otvalid'. + * src/otvalid/{otvcommn.c, otvbase.c, otvgdef.c, otvgpos.c, + otvgsub.c, otvjstf.c, otvmath.c}: Replace `valid' by `otvalid' + if it is typed as OTV_Validator. + +2014-12-09 suzuki toshiya + + [ftvalid] Introduce FT_THROW() in FT_INVALID_XXX macros. + + Original patch is designed by Werner Lemberg. Extra part + for otvalid and gxvalid are added by suzuki toshiya, see + discussion: + http://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00002.html + http://lists.nongnu.org/archive/html/freetype-devel/2014-12/msg00007.html + + * include/internal/ftvalid.h: Introduce FT_THROW() in FT_INVALID_(). + * src/gxvalid/gxvcommn.h: Ditto. + * src/otvalid/otvcommn.h: Ditto. + +2014-12-08 Werner Lemberg + + [pcf] Fix Savannah bug #43774. + + Work around `features' of X11's `pcfWriteFont' and `pcfReadFont' + functions. Since the PCF format doesn't have an official + specification, we have to exactly follow these functions' behaviour. + + The problem was unveiled with a patch from 2014-11-06, fixing issue + #43547. + + * src/pcf/pcfread.c (pcf_read_TOC): Don't check table size for last + element. Instead, assign real size. + +2014-12-07 Werner Lemberg + + Work around a bug in Borland's C++ compiler. + + See + + http://qc.embarcadero.com/wc/qcmain.aspx?d=118998 + + for Borland's bug tracker entry. + + Reported by Yuliana Zigangirova , + http://lists.gnu.org/archive/html/freetype-devel/2014-04/msg00001.html. + + * include/internal/ftvalid.h (FT_ValidatorRec), src/smooth/ftgrays.c + (gray_TWorker_): Move `ft_jmp_buf' field to be the first element. + +2014-12-07 Werner Lemberg + + */*: Decorate hex constants with `U' and `L' where appropriate. + +2014-12-07 Werner Lemberg + + [truetype] Prevent memory leak for buggy fonts. + + * src/truetype/ttobjs.c (tt_size_done): Unconditionally call + `tt_size_done_bytecode'. + +2014-12-06 Werner Lemberg + + * Version 2.5.4 released. + ========================= + + + Tag sources with `VER-2-5-4'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.5.4. + + * 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.3/2.5.4/, s/253/254/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. + + * builds/unix/configure.raw (version_info): Set to 17:3:11. + * CMakeLists.txt (VERSION_PATCH): Set to 4. + * docs/CHANGES: Updated. + +2014-12-04 Werner Lemberg + + docs/CHANGES: Updated, formatted. + +2014-12-04 Dave Arnold + + [cff] Modify an FT_ASSERT. + + * src/cff/cf2hints.c (cf2_hintmap_map): After the fix for Savannah + bug #43661, the test font `...aspartam.otf' still triggers an + FT_ASSERT. Since hintmap still works with count==0, ... + (cf2_glyphpath_lineTo, cf2_glyphpath_curveTo): ... add that term to + suppress the assert. + +2014-12-04 Dave Arnold + + [cff] Fix Savannah bug #43661. + + * src/cff/cf2intrp.c (cf2_interpT2CharString) : Don't append to stem arrays after + hintmask is constructed. + + * src/cff/cf2hints.c (cf2_hintmap_build): Add defensive code to + avoid reading past end of hintmask. + +2014-12-03 Werner Lemberg + + docs/CHANGES: Updated. + +2014-12-03 Werner Lemberg + + [autofit] Better fix for conversion specifiers in debug messages. + + Using `%ld' for pointer differences causes warnings on 32bit + platforms. The correct type would be (the relatively new) `%td', + however, this is missing on some important platforms. + + This patch improves the change from 2014-11-28. + + * src/autofit/afhints.c (AF_INDEX_NUM): Use `int' typecast. Our + pointer differences are always sufficiently small. + (af_glyph_hints_dump_points, af_glyph_hints_dump_segments, + af_glyph_hints_dump_edge): Revert to `%d' and use `AF_INDEX_NUM'. + +2014-12-03 Werner Lemberg + + FT_Sfnt_Tag: s/ft_sfnt_xxx/FT_SFNT_XXX/ for orthogonality. + + All public FreeType enumeration and flag values are uppercase... + + * include/tttables.h (FT_Sfnt_Tag): Implement it. For backwards + compatibility, retain the old values as macros. + + * src/base/ftfstype.c (FT_Get_FSType_Flags), src/sfnt/sfdriver.c + (get_sfnt_table): Updated. + +2014-12-02 Werner Lemberg + + * include/*: Improve structure of documentation. + + . Add and update many `' tags. + . Apply various documentation fixes. + . Remove details to deprecated (or never implemented) data. + +2014-12-02 Werner Lemberg + + [docmaker] Always handle `' section elements. + + Previously, those elements were handled only for sections present in + a `' chapter element. + + * src/tools/docmaker/content.py (ContentProcessor::finish): + Implement it. + +2014-12-02 Werner Lemberg + + [docmaker] Properly handle empty rows in Synopsis. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit + ` ' for empty fields. + +2014-12-02 Werner Lemberg + + [docmaker] Thinko. + + * src/tools/docmaker/content.py (DocBlock::get_markup_words_all): + Emit `/empty/' string for first element also. + +2014-12-02 Werner Lemberg + + [docmaker] Honour empty lines in `' section element. + + This greatly improves the readability of the `Synopsis' links. + + * src/tools/docmaker/content.py (DocBlock::get_markup_words_all): + Insert string `/empty/' between items. + + * src/tools/docmaker/formatter.py (Formatter::section_dump): Make it + robust against nonexistent keys. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Emit + empty
elements for `/empty/'. + +2014-12-02 Werner Lemberg + + [docmaker] Ensure Python 3 compatibility. + + * src/tools/docmaker/content.py (ContentProcessor::set_section, + ContentProcessor::finish): Replace `has_key' function with `in' + keyword. + + * src/tools/docmaker/formatter.py (Formatter::__init__): Replace + sorting function with a key generator. + (Formatter::add_identifier): Replace `has_key' function with `in' + keyword. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::html_source_quote): + Replace `has_key' function with `in' keyword. + (HtmlFormatter::index_exit, HtmlFormatter::section_enter): Use + integer division. + s/<>/>/. + + * src/tools/docmaker/utils.py: Import `itertools'. + (index_sort): Replaced by... + (index_key): ... this new key generator (doing exactly the same). + +2014-11-29 Werner Lemberg + + [docmaker] Don't output a block multiple times. + + This bug was hidden by not processing all lines of `' blocks. + + * src/tools/docmaker/formatter.py (Formatter::section_dump): Filter + out field names. + +2014-11-29 Werner Lemberg + + [docmaker] Use field values as HTML link targets where possible. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::make_block_url): + Accept second, optional argument to specify a name. + (HtmlFormatter::html_source_quote): Link to field ID if possible. + (HtmlFormatter::print_html_field_list): Emit `id' attribute. + +2014-11-29 Werner Lemberg + + [docmaker] Allow empty lines in `' blocks. + + Before this patch, the suggested order of entries stopped at the + first empty line. + + Obviously, nobody noticed that this problem caused a much reduced + set of links in the `Synopsis' sections; in particular, the + `' blocks contain a lot of entries that wouldn't be listed + otherwise... + + * src/tools/docmaker/content.py (DocBlock::get_markup_words_all): + New function to iterate over all items. + (DocSection::process): Use it. + +2014-11-29 Werner Lemberg + + * src/tools/docmaker/sources.py (column) [Format 2]: Fix regexp. + + After the single asterisk there must be no other immediately following + asterisk. + +2014-11-29 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Improve CSS for vertical spacing. + +2014-11-29 Werner Lemberg + + [docmaker] Improve HTML code for table of contents. + + * src/tools/docmaker/tohtml.py: Introduce a new table class `toc', + together with proper CSS. + +2014-11-29 Werner Lemberg + + [docmaker] Provide higher-level markup and simplify HTML. + + * src/tools/docmaker/tohtml.py: Instead of using extraneous `
' + elements, use CSS descendants (of class `section') to format the + data. + + Also remove redundant

and
elements, replacing them with + proper CSS. + + Globally reduce page width to 75%. + + (block_header): Rename

class to `section'. + +2014-11-29 Werner Lemberg + + [docmaker] Add `top' links after blocks. + + * src/tools/docmaker/tohtml.py (block_footer_middle): Implement it. + +2014-11-29 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Improve CSS for fields. + + Make fields align horizontally relative to full line width. + +2014-11-29 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Fix index and TOC templates. + + This thinko was introduced 2014-11-27. + +2014-11-28 Werner Lemberg + + [docmaker] Format field lists with CSS. + + This also simplifies the inserted HTML code. + + * src/tools/docmaker/tohtml.py + (HtmlFormatter::print_html_field_list): Do it. + +2014-11-28 suzuki toshiya + + Fix compiler warning to the comparison between signed and + unsigned variable. + + * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Fix the comparison + between `ypos + ysize' and FT_INT_{MAX,MIN}. + +2014-11-28 Werner Lemberg + + [docmaker] Replace empty `
' with CSS. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::section_enter): Do + it. + +2014-11-28 Werner Lemberg + + [docmaker] Replace some `' tags with `

' and `
'. + + * src/tools/docmaker/tohtml.py (marker_*): Use `

'. + (source_*): Use `
'. + (HtmlFormatter::block_enter): s/

/

/. + +2014-11-28 suzuki toshiya + + Fix compiler warning to conversion specifiers in debug messages. + + * src/autofit/afhints.c (af_glyph_hints_dump_points): Add length + modifier to dump long integers. + (af_glyph_hints_dump_segments, af_glyph_hints_dump_edges): Ditto. + +2014-11-27 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Use more CSS for index. + +2014-11-27 Werner Lemberg + + [docmaker] Replace `name' attribute of `' with `id'. + + * src/tools/docmaker/tohtml.py (HtmlFormatter::block_enter): Do it. + +2014-11-27 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Remove remaining `width' attributes. + + For `Index' and `TOC' links, we now simply use the `text-align' CSS + property of `

' to enforce flush-left and flush-right, + eliminating the hack with an empty, full-width `' element + inbetween. + + The change also enforces the same (smaller) size for all index and + TOC links. + +2014-11-27 suzuki toshiya + + * src/cff/cf2font.c: Include `ftcalc.h' to use FT_MSB(), + cf2font.c could not find it under `make multi' build. + +2014-11-27 suzuki toshiya + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove + unrequired negative value check for `width' and `height'. + +2014-11-27 Werner Lemberg + + * src/tools/docmaker/tohtml.py: More HTML table refactoring. + + Replace some `' tags with `
' to simplify structure. + + Move `bgcolor' attribute to CSS. + + Replace most `width' attributes with CSS. The remaining instances + (providing a similar effect as LaTeX's `\hfill' command) are removed + in a later patch. + +2014-11-27 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Replace with CSS. + +2014-11-27 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Center
with CSS. + +2014-11-27 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Replace `
' with `
'. + +2014-11-27 Werner Lemberg + + * src/tools/docmaker/tohtml.py: Remove redundant `
' tags. + + This starts a series of commits into the direction of generating + valid HTML 5 code, especially using much more CSS. + +2014-11-27 suzuki toshiya + + Prevent too negative values (< FT_INT_MIN) in bitmap metrics, + suggested by Alexei. + + * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Prevent too + negative values in `xpos' and `ypos + ysize'. + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Prevent + too negative values in `x_left' and `y_top'. Either negative + values in `width' and `height' are checked. + +2014-11-27 Werner Lemberg + + [docmaker] Produce better HTML code. + + * src/tools/docmaker/tohtml.py: Always use double quotes for + attribute values. + (source_footer): Close `td' and `tr' groups. + +2014-11-27 Werner Lemberg + + Use better way to disable creation of .pyc files for `make refdoc'. + + Python 2.6 was released in 2008... + + * builds/freetype.mk (refdoc): Use python's `-B' option. + + * builds/detect.mk (std_setup, dos_setup): Mention required python + version for `refdoc' target. + +2014-11-27 Werner Lemberg + + * src/tools/docmaker/sources.py (re_bold, re_italic): Use + non-grouping parentheses. + * src/tools/docmaker/tohtml.py (HtmlFormatter::make_html_word): + Updated. + +2014-11-27 Werner Lemberg + + * src/base/ftobjs.c (FT_Get_Glyph_Name): Fix compiler warning. + + Introduced in previous change. Reported by Alexei. + +2014-11-26 Werner Lemberg + + * src/*: Add checks for parameters of API functions where missing. + + `API functions' are functions tagged with `FT_EXPORT_DEF'. + + Besides trivial fixes, the following changes are included, too. + + * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Set + error code if no service is available. + + * src/base/ftinit.c (FT_Done_FreeType): Change return value for + invalid `library' parameter to `Invalid_Library_Handle'. + + * src/base/ftobjs.c (FT_New_Size): Change return value for invalid + `asize' parameter to `Invalid_Argument'. + + * src/base/ftoutln.c (FT_Outline_Copy): Change return value for + invalid `source' and `target' parameters to `Invalid_Outline'. + (FT_Outline_Done_Internal): Change return value for invalid + `outline' parameter to `Invalid_Outline'. + +2014-11-26 Werner Lemberg + + * src/cache/ftcbasic.c: Use single calls to `FT_TRACE'. + +2014-11-26 suzuki toshiya + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Additional + overflow check in the summation of POST fragment lengths, + suggested by Mateusz Jurczyk . + +2014-11-26 suzuki toshiya + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Insert comments + and fold too long tracing messages. + +2014-11-26 suzuki toshiya + + Fix Savannah bug #43540. + + * src/base/ftmac.c (parse_fond): Prevent a buffer overrun + caused by a font including too many (> 63) strings to store + names[] table. + +2014-11-26 suzuki toshiya + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Use unsigned long + variables to read the lengths in POST fragments. Suggested by + Mateusz Jurczyk . + +2014-11-26 suzuki toshiya + + Fix Savannah bug #43539. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow + by a broken POST table in resource-fork. + +2014-11-26 suzuki toshiya + + Fix Savannah bug #43538. + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Fix integer overflow + by a broken POST table in resource-fork. + +2014-11-26 suzuki toshiya + + * src/base/ftobjs.c (Mac_Read_POST_Resource): Avoid memory leak + by a broken POST table in resource-fork. Return after freeing + the buffered POST table when it is found to be broken. + +2014-11-25 Werner Lemberg + + */*: s/Invalid_Argument/Invalid_Size_Handle/ where appropriate. + +2014-11-25 Werner Lemberg + + */*: s/Invalid_Argument/Invalid_Stream_Handle/ where appropriate. + +2014-11-25 Werner Lemberg + + */*: s/Invalid_Argument/Invalid_Library_Handle/ where appropriate. + +2014-11-25 Werner Lemberg + + */*: s/Invalid_Argument/Invalid_Outline/ where appropriate. + +2014-11-25 Werner Lemberg + + */*: s/Invalid_Argument/Invalid_Face_Handle/ where appropriate. + +2014-11-24 Werner Lemberg + + [Savannah bug #43682] Adjust some renderer callbacks. + + * src/raster/ftraster.c (ft_black_set_mode): Change return type to + `int' to stay in sync with `FT_Renderer_SetModeFunc' prototype. + + * src/smooth/ftgrays.c (gray_raster_set_mode): New dummy function + for orthogonality. + (ft_grays_raster): Use it. + +2014-11-25 Werner Lemberg + + [Savannah bug #43682] Properly handle missing return errors. + + The functions in this patch *do* return non-trivial errors that must + be taken care of. + + * src/autofit/afloader.c (af_loader_load_g), src/base/ftobjs.c + (FT_Render_Glyph_Internal), src/base/ftoutln.c (FT_Outline_Render), + src/cff/cffgload.c (cff_decoder_parse_charstrings) , + src/psaux/psobjs.c (ps_parser_load_field_table), src/psaux/t1decode + (t1_decoder_parse_charstrings) , src/truetype/ttgload.c + (load_truetype_glyph , tt_loader_init, + TT_Load_Glyph), src/truetype/ttgxvar.c (TT_Set_MM_Blend), + src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep): Do it. + +2014-11-25 Werner Lemberg + + [Savannah bug #43682] Add/remove `void' casts to some functions. + + We use a cast to indicate that we intentionally ignore a function's + return value. However, this doesn't apply to API functions where + errors can only happen for trivially invalid input. + + * src/base/ftstroke.c (FT_Glyph_Stroke, FT_Glyph_StrokeBorder), + src/base/ftsynth.c (FT_GlyphSlot_Embolden), src/cff/cffgload.c + (cff_slot_load), src/pfr/pfrdrivr.c (pfr_get_kerning), + src/type1/t1load.c (parse_encoding), src/type42/t42parse.c + (t42_parse_encoding): Do it. + +2014-11-25 Werner Lemberg + + [Savannah bug #43682] Change some signatures to `void' return type. + + * include/internal/pshints.h (PSH_Globals_SetScaleFunc), + include/internal/sfnt.h (TT_Get_Metrics_Func), + src/pshinter/pshglob.c (psh_globals_set_scale), + src/pshinter/pshrec.c (ps_hints_init), src/sfnt/ttmtx.c + (tt_face_get_metrics), src/truetype/ttinterp.c (TT_Goto_CodeRange, + TT_Set_CodeRange, TT_Clear_CodeRange, TT_Done_Context, + TT_Save_Context): Do it. + + * src/pshinter/pshglob.h, src/pshinter/pshrec.h, src/sfnt/ttmtx.h, + src/truetype/ttgload.c (TT_Hint_Glyph), src/truetype/ttinterp.c + (TT_Run_Context), src/truetype/ttinterp.h, src/truetype/ttobjs.c + (tt_size_run_fpgm, tt_size_run_prep): Updated. + +2014-11-24 Werner Lemberg + + Remove all code related to FT_MAX_CHARMAP_CACHEABLE. + + This is no longer used. + + * src/base/ftobjs.c, src/cache/ftccmap.c, src/cff/cffobjs.c, + src/sfnt/ttcmap.c: Do it. + +2014-11-24 Werner Lemberg + + [sfnt] Fix Savannah bug #43680. + + This adds an additional constraint to make the fix from 2013-01-25 + really work. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_image) : + Check `p' before `num_glyphs'. + +2014-11-24 Werner Lemberg + + [truetype] Fix Savannah bug #43679. + + * src/truetype/ttpload.c (tt_face_load_hdmx): Check minimum size of + `record_size'. + +2014-11-24 Jarkko Pöyry + + [cff, pfr, psaux, winfonts] Fix Savannah bug #43676. + + Don't cast cmap init function pointers to an incompatible type. + + Without this patch, the number of parameters between declaration and + the real signature differs. Calling such a function results in + undefined behavior. + + ISO/IEC 9899:TC3 (Committee Draft September 7, 2007) + 6.5.2.2 Function calls + 9 If the function is defined with a type that is not + compatible with the type (of the expression) pointed to by + the expression that denotes the called function, the + behavior is undefined. + + On certain platforms (c -> js with emscripten) this causes + termination of execution or invalid calls because in the emscripten + implementation, function pointers of different types are stored in + different pointer arrays. Incorrect pointer type here results in + indexing of an incorrect array. + + * src/cff/cffcmap.c (cff_cmap_encoding_init, cff_cmap_unicode_init), + src/pfr/pfrcmap.c (pfr_cmap_init), src/psaux/t1cmap.c + t1_cmap_standard_init, t1_cmap_expert_init, t1_cmap_custom_init, + t1_cmap_unicode_init), src/winfonts/winfnt.c (fnt_cmap_init): Fix + signature. + +2014-11-24 Werner Lemberg + + [sfnt] Fix Savannah bug #43672. + + * src/sfnt/ttkern.c (tt_face_load_kern): Use correct value for + minimum table length test. + +2014-11-24 Werner Lemberg + + [type1, type42] Another fix for Savannah bug #43655. + + * src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c + (t42_parse_charstrings): Add another boundary testing. + +2014-11-24 Werner Lemberg + + [docmaker] Formatting, copyright, improved documentation. + + * src/tools/docmaker/*: No code changes besides trivial + modifications. + +2014-11-22 Werner Lemberg + + [bdf] Fix Savannah bug #43660. + + * src/bdf/bdflib.c (_bdf_parse_glyphs) <"ENDFONT">: Check + `_BDF_GLYPH_BITS'. + +2014-11-22 Werner Lemberg + + [type42] Allow only embedded TrueType fonts. + + This is a follow-up to Savannah bug #43659. + + * src/type42/t42objs.c (T42_Face_Init): Exclusively use the + `truetype' font driver for loading the font contained in the `sfnts' + array. + +2014-11-22 Werner Lemberg + + [type42] Fix Savannah bug #43659. + + * src/type42/t42objs.c (T42_Open_Face): Initialize `face->ttf_size'. + + * src/type42/t42parse.c (t42_parse_sfnts): Always set + `face->ttf_size' directly. This ensures a correct stream size in + the call to `FT_Open_Face', which follows after parsing, even for + buggy input data. + Fix error messages. + +2014-11-22 Werner Lemberg + + [cff] Fix Savannah bug #43658. + + * src/cff/cf2ft.c (cf2_builder_lineTo, cf2_builder_cubeTo): Handle + return values of point allocation routines. + +2014-11-22 Werner Lemberg + + [sfnt] Fix Savannah bug #43656. + + * src/sfnt/ttcmap.c (tt_cmap4_validate): Fix order of validity + tests. + +2014-11-21 Werner Lemberg + + [type1, type42] Fix Savannah bug #43655. + + * src/type1/t1load.c (parse_charstrings), src/type42/t42parse.c + (t42_parse_charstrings): Fix boundary testing. + +2014-11-21 Werner Lemberg + + * src/pcf/pcfread.c (pcf_get_metrics): Sanitize invalid metrics. + +2014-11-21 Werner Lemberg + + [ftlcdfil] Obey flow direction. + + * src/base/ftlcdfil.c (_ft_lcd_filter_fir, _ft_lcd_filter_legacy): + Handle `up' flow. + +2014-11-21 Werner Lemberg + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Improve. + + This commit completes argument checks and adds support for different + flow directions. + +2014-11-21 Werner Lemberg + + * src/base/ftbitmap.c (FT_Bitmap_Copy): Improve. + + This commit adds argument checks and support for different flow + directions. + +2014-11-20 Werner Lemberg + + * src/base/ftbitmap.c (FT_Bitmap_New): Check argument. + +2014-11-19 Werner Lemberg + + Change some fields in `FT_Bitmap' to unsigned type. + + This doesn't break ABI. + + * include/ftimage.h (FT_Bitmap): Make `rows', `width', `num_grays', + `pixel_mode', and `palette_mode' unsigned types. + + * src/base/ftbitmap.c: Updated. + (FT_Bitmap_Copy): Fix casts. + + * src/cache/ftcsbits.c, src/raster/ftraster.c, src/sfnt/pngshim.c: + Updated. + +2014-11-19 Werner Lemberg + + Make `FT_Bitmap_Convert' correctly handle negative `pitch' values. + + * src/base/ftbitmap.c (FT_Bitmap_Convert): Always use positive value + for the pitch while copying data. + Correctly set pitch sign in target bitmap. + +2014-11-19 Werner Lemberg + + Minor code improvement in `FT_Bitmap_Embolden'. + + * src/base/ftbitmap.c (FT_Bitmap_Embolden) : + Fix thinko. + +2014-11-19 Alexei Podtelezhnikov + + * src/base/fttrigon.c: Use dedicated `FT_Angle' for arctan table. + +2014-11-19 Behdad Esfahbod + + Avoid compiler warnings on x86-64 for `FT_MulFix'. + + `FT_MulFix' takes `FT_Long' parameters as defined in `freetype.h', + but several inline implementations of it in `ftcalc.h' take + `FT_Int32' arguments. This is causing compiler warnings on x86-64: + If parameters of type `FT_Fixed' (= `FT_Long') are passed to the + inline implementation of this function, integer values are truncated + from 64bit to 32bit. + + * include/internal/ftcalc.h (FT_MulFix) [FT_MULFIX_ASSEMBLER]: Add + casts. + +2014-11-15 Werner Lemberg + + [sfnt] Fix Savannah bug #43597. + + * src/sfnt/pngshim.c (Load_SBit_Png): Protect against too large + bitmaps. + +2014-11-12 Werner Lemberg + + [sfnt] Fix Savannah bug #43591. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_init): Protect against addition + and multiplication overflow. + +2014-11-12 Werner Lemberg + + [sfnt] Fix Savannah bug #43590. + + * src/sfnt/ttload.c (check_table_dir, tt_face_load_font_dir): + Protect against addition overflow. + +2014-11-12 Werner Lemberg + + [sfnt] Fix Savannah bug #43589. + + * src/sfnt/sfobjs.c (woff_open_font): Protect against addition + overflow. + +2014-11-12 Werner Lemberg + + [sfnt] Fix Savannah bug #43588. + + * src/sfnt/ttcmap.c (tt_cmap8_validate, tt_cmap10_validate, + tt_cmap12_validate, tt_cmap13_validate, tt_cmap14_validate): Protect + against overflow in additions and multiplications. + +2014-11-10 Alexei Podtelezhnikov + + [base] CORDIC improvements. + + The scaling between the hypotenuse and its CORDIC approximation is + based on regression analysis. The smaller padding for `theta' is + justified by its maximum error of less than 6. + + * src/base/fttrigon.c (ft_trig_downscale): Borrow code from + ./ftcalc.c (ft_multo64), change linear intercept. + (ft_trig_pseudo_polarize): Decrease `theta' padding. + +2014-11-09 Werner Lemberg + + * src/base/ftstroke.c (ft_stroker_inside): Fix border intersections. + + One more place to check whether `radius' is zero. + + Problem reported by Marco Wertz . + +2014-11-07 Werner Lemberg + + [bdf] Fix Savannah bug #43535. + + * src/bdf/bdflib.c (_bdf_strncmp): New macro that checks one + character more than `strncmp'. + s/ft_strncmp/_bdf_strncmp/ everywhere. + +2014-11-06 Werner Lemberg + + [pcf] Fix Savannah bug #43548. + + * src/pcf/pcfread.c (pcf_get_encodings): Add sanity checks for row + and column values. + +2014-11-06 Werner Lemberg + + [pcf] Fix Savannah bug #43547. + + * src/pcf/pcfread.c (pcf_read_TOC): Check `size' and `offset' + values. + +2014-11-06 Werner Lemberg + + * src/pcf/pcfread.c (pcf_read_TOC): Avoid memory leak. + +2014-11-03 Infinality + + * src/truetype/ttsubpix.c (COMPATIBILITY_MODE_Rules): Updated. + + The previous commit deteriorates rendering of DejaVu and similar + fonts; this gets compensated with this rule. + +2014-11-03 Werner Lemberg + + * src/truetype/ttinterp.c (Ins_DELTAP): Fix subpixel hinting. + + Before this patch, it was impossible to ever call DELTAP[123] in + subpixel hinting mode as described in the ClearType whitepaper; it + only worked if in `compatibility mode'. However, compatibility mode + essentially disables SHPIX, completely ruining hinting of + ttfautohint output, for example. + + We now follow the whitepaper more closely so that DELTAP[123] + instructions for touched points in the non-subpixel direction are + executed. + +2014-10-31 Alexei Podtelezhnikov + + [smooth] Improve code readability. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code. + +2014-10-31 Alexei Podtelezhnikov + + [smooth] Reduce outline translations during rendering. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Translate origin + virtually by modifying cbox, actually translate outline if cumulative + shift is not zero. + +2014-10-30 Alexei Podtelezhnikov + + [smooth] Fix Savannah bug #35604 (cont'd). + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Remove checks and + casts that became unnecessary after the variable type upgrades. + +2014-10-29 Alexei Podtelezhnikov + + [smooth] Improve code readability. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Rearrange code. + +2014-10-29 Alexei Podtelezhnikov + + Unify hypotenuse approximations. + + * include/internal/ftcalc.h (FT_HYPOT): Move macro from here... + * include/internal/ftobjs.h: ... to here, next to required `FT_ABS'. + * src/smooth/ftgrays.c (gray_render_cubic): Use it here. + +2014-10-25 Werner Lemberg + + [cff] Test valid darkening parameter macros in `ftoption.h'. + + We no longer need an otherwise unused typedef that can cause a gcc + warning. + Problem reported by Alexei. + + * src/cff/cffobjs.c (cff_driver_init): Use + `CFF_CONFIG_OPTION_DARKENING_PARAMETER_XXX' macros directly. + (SET_DARKENING_PARAMETERS): Removed. + Compile time tests are now ... + + * devel/ftoption.h, include/config/ftoption.h: ... here. + +2014-10-25 Alexei Podtelezhnikov + + Improve flat corner definition. + + * include/internal/ftcalc.h (FT_HYPOT): Macro to approximate Euclidean + distance with the alpha max plus beta min algorithm. + * src/base/ftcalc.c (ft_corner_is_flat): Use it instead of Taxicab + metric. + +2014-10-23 David Weiß + + [build] Improve property file for vc2010. + + User-defined properties should be empty by default to prevent linker + failures. + + * builds/windows/vc2010/freetype.user.props, + builds/windows/vc2010/freetype.vcxproj: + s/OptionsDirectory/UserOptionDirectory/. + Comment out all user options. + +2014-10-23 Werner Lemberg + + [cff] Work around bug in preprocessor of MSVC 2010. + + We have been hit by + + https://connect.microsoft.com/VisualStudio/feedback/details/718976/msvc-pr + + * devel/ftoption.h, include/config/ftoption.h: Replace + `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' with eight macros + `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}'. + + * src/cff/cffobjs.c (SET_DARKENING_PARAMETERS): Removed. We no + longer need double expansion. + (SET_DARKENING_PARAMETERS_0): Renamed to ... + (SET_DARKENING_PARAMETERS): ... this. + Update call. + +2014-10-20 Werner Lemberg + + [sbit] Minor fixes. + + * src/sfnt/ttsbit.c (tt_face_load_sbit) [TT_SBIT_TABLE_TYPE_SBIX]: + Accept overlay format also, but emit warning message in that case. + (tt_sbit_decoder_load_metrics): Add missing newline to error + message. + (tt_sbit_load_sbix_image): Add `rgbl' graphic type (as used on iOS + 7.1) to the list of unsupported formats. + +2014-10-19 Alexei Podtelezhnikov + + [truetype] Clean up bytecode rounding. + + Zero distance does not have to be treated specially if you follow + specifications and check the sign as the very last step of rounding. + + * src/truetype/ttinterp.c (Round_None, Round_To_Grid, + Round_Down_To_Grid, Round_Up_To_Grid, Round_To_Double_Grid): Use + macros when available, do not check for non-zero distance. + (Round_To_Half_Grid, Round_Super, Round_Super_45): Ditto, return phase + if sign changed. + +2014-10-18 Alexei Podtelezhnikov + + [truetype] Unwrap engine compensation settings. + + * src/truetype/ttobjs.c (tt_size_init_bytecode): Updated. + +2014-10-18 David Weiß + + [build] Add property file to vc2010 project. + + This simplifies custom build configurations, especially for + automated build environments. + + * builds/windows/vc2010/freetype.user.props: New configuration file. + + * builds/windows/vc2010/freetype.vcxproj: Include + `freetype.user.props' and use its data fields. + + * builds/windows/vc2010/index.html: Updated. + +2014-10-18 Werner Lemberg + + [autofit] Add blue-zone support for Telugu. + + This essentially moves the Telugu script from the `Indic' hinter to + the `Latin' hinter. + + Note that this is a first shot and quite certainly needs + refinements. + + * src/autofit/afblue.dat: Add blue zone data for Telugu. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Telugu standard characters and move + data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Telugu data out of + AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afstyles.h: Update Telugu data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2014-10-18 David Wimsey + + [cmake] Add iOS build support. + From Savannah patch #8497. + + * builds/cmake/iOS.cmake: New file. Universal binaries are built + with both 32 and 64 bit arm architectures. + + * CMakeLists.txt (IOS_PLATFORM): New variable for running the iOS + toolchain. Possible values are `OS' to build on iOS, or + `SIMULATOR' to build on APPLE. + +2014-10-16 Behdad Esfahbod + Werner Lemberg + + [cff] Add `CFF_CONFIG_OPTION_DARKENING_PARAMETERS' config macro. + + * devel/ftoption.h, include/config/ftoption.h + (CFF_CONFIG_OPTION_DARKENING_PARAMETERS): New macro. + + * src/cff/cffobjs.c (SET_DARKENING_PARAMETERS, + SET_DARKENING_PARAMETERS_0): New macros. + (cff_driver_init): Use new macros. + +2014-10-14 Alexei Podtelezhnikov + + [truetype] Limit delta shift range. + + The valid range for delta shift is zero through six. Negative values + are invalid according to + + https://developer.apple.com/fonts/TrueType-Reference-Manual/RM04/Chap4.html#delta%20shift + + * src/truetype/ttobjs.h (delta_shift, delta_base): Make unsigned. + * src/truetype/ttinterp.h (DO_SDS): Throw an error if `delta_shift' + is out of range. + (Ins_DELTAP, Ins_DELTAC): Optimize for valid `delta_shift'. + +2014-10-16 Werner Lemberg + + A better fix for Savannah bug #43392. + Suggested by Doug Felt . + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Set + `vertAdvance' to zero... + + * src/truetype/ttgload.c (TT_Load_Glyph): ... and set here a default + value for `vertAdvance' based on `linearVertAdvance' in case + `vertAdvance' is zero. Note that the previous computed ad-hoc value + for `linearVertAdvance' was apparently not tested in a real-life + situation. + +2014-10-14 David Weiß + + [build] Better optimization settings for vc2010 solution file. + + * builds/windows/vc2010/freetype.sln, + builds/windows/vc2010/freetype.vcxproj: Updated. + +2014-10-14 Werner Lemberg + + [autofit] Adjust Devenagari character range. + + * src/autofit/afranges.c (af_deva_uniranges): Omit characters that + are common to all other Indic scripts. + +2014-10-12 Werner Lemberg + + [sfnt] Fix Savannah bug #43392. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics): Don't let + vertical metrics uninitialized. + +2014-10-11 Alexei Podtelezhnikov + + [base] Small bbox correction. + + * src/base/ftbbox.c (FT_Outline_Get_BBox): Start from nonsense bbox + instead of initial point that could be `off' in conic outlines. + +2014-10-08 Alexei Podtelezhnikov + + [base] Fix Savannah bug #43356. + + * src/base/ftbbox.c (BBox_Move_To, BBox_Conic_To): Update bbox in case + of implicit `to'. + (BBox_Line_To): New emitter that does not update bbox. + +2014-10-08 Alexei Podtelezhnikov + + [base] Introduce and use new macro `FT_UPDATE_BBOX' + + * src/base/ftbbox.c (FT_UPDATE_BBOX): New macro. + (FT_Outline_Get_BBox): Use it here. + +2014-10-02 Alexei Podtelezhnikov + + [base] Significant optimization of `ft_div64by32' + + We shift as many bits as we can into the high register, perform + 32-bit division with modulo there, then work through the remaining + bits with long division. This optimization is especially noticeable + for smaller dividends that barely use the high register. + + * src/base/ftcalc.c (ft_div64by32): Updated. + +2014-10-02 Dave Arnold + + [cff] Fix Savannah bug #43271. + + * src/cff/cf2font.c (cf2_computeDarkening): Change overflow + detection to use logarithms and clamp `scaledStem'. + +2014-10-01 Alexei Podtelezhnikov + + * src/base/ftcalc.c: Remove miscellaneous type casts. + +2014-10-01 Alexei Podtelezhnikov + + [base] Use more common `FT_MSB' implementation with masks. + + * src/base/ftcalc.c (FT_MSB): Updated. + +2014-09-30 Alexei Podtelezhnikov + + [base] Clean up. + + * src/base/ftcalc.c (FT_MOVE_SIGN): New macro for frequently used + code. + +2014-09-25 Alexei Podtelezhnikov + + [base] Avoid unnecessary long division. + + This applies to `FT_MulDiv' but not to `FT_DivFix', where overflows or + lack thereof are predicted accurately. + + * src/base/ftcalc.c (ft_div64by32): Improve readability. + (FT_MulDiv, FT_MulDiv_No_Round) [!FT_LONG64]: Use straight division + when multiplication stayed within 32 bits. + +2014-09-24 Werner Lemberg + + [autofit] Minor clean-ups. + + * src/autofit/afhints.c (AF_FLAGS): Remove obsolete values. + + * src/autofit/afhints.c (af_glyph_hints_dump_points, + af_glyph_hints_align_strong_points): Updated. + + * src/autofit/aflatin.c (af_latin_hints_link_segments, + af_latin_hints_compute_segments), src/autofit/afcjk.c + (af_cjk_hints_link_segments), src/autofit/aflatin2.c + (af_latin2_hints_link_segments, af_latin2_hints_compute_segments): + There are no longer fake segments since more than 10 years... + +2014-09-22 Werner Lemberg + + [autofit] Minor code streamlining. + + * src/autofit/afhints.c (af_axis_hints_new_edge): Remove redundant + initialization. + +2014-09-19 Alexei Podtelezhnikov + + * src/base/ftcalc.c: Harmonize code. + +2014-09-15 Alexei Podtelezhnikov + + [base] Tighten the overflow check in `FT_MulDiv'. + + * src/base/ftcalc.c (FT_MulDiv) [!FT_LONG64]: Updated. + +2014-09-08 Alexei Podtelezhnikov + + Fix Savannah bug #43153. + + * src/psaux/psconv.c (PS_Conv_ToFixed): Add protection against + overflow in `divider'. + +2014-09-03 Alexei Podtelezhnikov + + [base] Tighten the overflow check in `FT_DivFix'. + + This fixes a 13-year old bug. The original overflow check should have + been updated when rounding was introduced into this function + (c2cd00443b). + + * src/base/ftcalc.c (FT_DivFix) [!FT_LONG64]: Updated. + * include/freetype.h (FT_DivFix): Updated documentation. + +2014-09-03 Alexei Podtelezhnikov + + [base] Tighten the overflow check in `FT_MulFix'. + + * src/base/ftcalc.c (FT_MulFix) [!FT_LONG64]: Updated. + +2014-09-02 Alexei Podtelezhnikov + + [truetype] Shortcut ppem calculations for square pixels. + + * src/truetype/ttinterp.h (TT_ExecContextRec): New field + `cur_ppem_func' with a function pointer. + * src/truetype/ttinterp.c (TT_RunIns): Initialize `cur_ppem_func' + depending on the pixel geometry to either... + (Current_Ppem_Stretched): ... this for stretched pixels. + (Current_Ppem): ... or this for square pixels. + (DO_MPPEM, DO_MPS, Ins_DELTAP, Ins_DELTAC): Use `cur_ppem_func'. + +2014-08-31 Behdad Esfahbod + + Don't use `register' keyword. Fixes compiler warnings. + + * src/base/ftcalc.c (FT_Add64) [!FT_LONG64]: Do it. + * src/gzip/inftrees.c (huft_build): Ditto. + * src/truetype/ttinterp.c (TT_MulFix14_arm): Ditto. + +2014-08-24 Alexei Podtelezhnikov + + [truetype] Optimize DELTAP and DELTAC. + + * src/truetype/ttinterp.c (Ins_DELTAP, Ins_DELTAC): Move ppem + calculations outside of the loop. + +2014-08-21 Alexei Podtelezhnikov + + Fix Savannah bug #43033. + + * include/config/ftconfig.h, builds/unix/ftconfig.in, + builds/vms/ftconfig.h [FT_LONG64]: Do not disable the macro when + 64-bit type is `long'. + +2014-08-20 Alexei Podtelezhnikov + + [base] Small optimization of `FT_MulFix'. + + * src/base/ftcalc.c (FT_MulFix): Loosen up the condition for direct + 32-bit calculations. + +2014-08-19 Alexei Podtelezhnikov + + [base] Use unsigned calculation in `FT_MulDiv'. + + * src/base/ftcalc.c (FT_MulDiv): Updated to expand 32-bit range. + +2014-08-18 Alexei Podtelezhnikov + + [base] Remove truncation in `FT_DivFix'. + + * src/base/ftcalc.c (FT_DivFix): Updated. + +2014-08-14 Alexei Podtelezhnikov + + Minor refactoring. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Updated. + +2014-08-14 Alexei Podtelezhnikov + + Turn FT_MSB into a macro when using gcc builtins. + + * src/base/ftcalc.c, include/internal/ftcalc.h: Updated. + +2014-08-12 Alexei Podtelezhnikov + + [base] Avoid undefined FT_MSB in `BBox_Cubic_Check'. + + * src/base/ftbbox.c (BBox_Cubic_Check): Update. + (update_cubic_max): Replace with... + (cubic_peak): ... this, which now handles upscaling. + +2014-08-11 Alexei Podtelezhnikov + + [base] Handle collapsed outlines to avoid undefined FT_MSB. + + * src/base/ftoutln.c (FT_Outline_Get_Orientation): Update. + +2014-08-11 Alexei Podtelezhnikov + + [base] Restore FT_MulFix inlining. + + * include/freetype.h (FT_MulFix): Unconditionally defined. + + * src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: Move code from here... + + * include/internal/ftcalc.h [FT_MULFIX_ASSEMBLER]: ... to here, + which conditionally replaces the function with an inline version + through the macro. + +2014-08-08 Alexei Podtelezhnikov + + * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Refactor. + +2014-07-26 Werner Lemberg + + [cff] Fix typo. + + * src/cff/cf2hints.c (cf2_glyphpath_computeOffset): Use correct + offsets in third quadrant. + + Reported by maks . + +2014-07-17 Werner Lemberg + + Fix Savannah bug #42788. + + * src/pfr/pfrobjs.c: Include `ftcalc.h'. + +2014-07-16 Alexei Podtelezhnikov + + Replace `ft_highpow2' function. + + * src/pfr/pfrobjs.c (pfr_face_get_kerning): Use `FT_MSB' instead of + `ft_highpow2'. + + * src/base/ftutil.c, include/internal/ftobjs.h (ft_highpow2): Remove + it. + +2014-07-15 Alexei Podtelezhnikov + + * src/base/ftcalc.c (FT_MSB): Utilize gcc builtins. + +2014-07-15 Alexei Podtelezhnikov + + [base] Move assembler code back in the source file. + + FT_MulFix assembler used to reside in ftcalc.c before f47d263f1b. + + * include/config/ftconfig.h, builds/unix/ftconfig.in, + builds/vms/ftconfig.h [FT_MULFIX_ASSEMBLER]: Move code from here... + + * src/base/ftcalc.c [FT_MULFIX_ASSEMBLER]: ... to here. + +2014-07-14 Alexei Podtelezhnikov + + [base] Further clean up color bitmap conversion. + + * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Stop + using FT_MulFix and FT_DivFix since all calculations fit into 32 bits. + +2014-07-13 Werner Lemberg + + [truetype] Improve handling of buggy `prep' tables. + + In case of an error in the `prep' table, no longer try to execute it + again and again. This makes FreeType handle endless loops in buggy + fonts much faster. + + * src/truetype/ttobjs.h (TT_SizeRec): The fields `bytecode_ready' + and `cvt_ready' are now negative if not initialized yet, otherwise + they indicate the error code of the last run. + + * src/truetype/ttobjs.c (tt_size_run_fpgm, tt_size_run_prep, + tt_size_done_bytecode, tt_size_init_bytecode, + tt_size_ready_bytecode, tt_size_init, tt_size_done, tt_size_reset): + Updated. + + * src/truetype/ttgload.c (tt_loader_init): Updated. + * src/truetype/ttinterp.c (TT_RunIns): Force reexecution of `fpgm' + and `prep' only if we are in the `glyf' table. + +2014-07-12 Werner Lemberg + + * builds/vms/ftconfig.h: Synchronize. + Problem reported by Alexei. + +2014-07-11 Alexei Podtelezhnikov + + [base] Clean up bitmap conversion. + + * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use + appropriate FT_DivFix and remove superfluous upscaling. + +2014-07-04 Alexei Podtelezhnikov + + [base] Small optimization of the ancient code. + + * src/base/ftcalc.c (FT_MulDiv, FT_MulDiv_No_Round): Loosen up the + condition for direct 32-bit calculations. + +2014-06-27 Werner Lemberg + + Fix Apple standard glyph names. + + * src/sfnt/ttpost.c (tt_post_default_names): Synchronize with + `tools/glnames.py' + + Problem reported by Adam Twardoch . + +2014-06-17 Werner Lemberg + + Partially revert commit from 2014-06-13. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Move + declaration of `p_first' and `p_last' out of the loop. + +2014-06-17 Werner Lemberg + + * builds/unix/freetype2.m4: s/AC_PATH_PROG/AC_PATH_TOOL/. + + This simplifies cross-compiling. + +2014-06-13 Werner Lemberg + + Fix more compiler warnings. + Reported by Wojciech Mamrak . + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Make integer constant unsigned. + + * src/sfnt/ttsbit.c (tt_face_load_strike_metrics) + : Fix types. + (tt_sbit_decoder_load_compound, tt_face_load_sbix_image): Add proper + casts. + +2014-06-13 Werner Lemberg + + Fix compiler warnings. + Reported by Wojciech Mamrak . + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage), + src/autofit/afmodule.c (af_property_set): Fix `signed' vs. + `unsigned' issues. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Make compiler + happy. + + * src/base/ftlcdfil.c (_ft_lcd_filter_fir): Use only four elements + for `fir'. + Fix `signed' vs. `unsigned' issues. + + * src/sfnt/sfobjs.c (WRITE_BYTE): Removed, unused. + (WRITE_USHORT, WRITE_ULONG): Add proper casts. + + * src/truetype/ttgload.c (TT_Get_VMetrics): Add proper casts. + + * src/truetype/ttinterp.c (Ins_DELTAP): Add proper casts for `B1' + and `B2'. + +2014-05-16 Alexey Petruchik + + [cmake] Add option to build OS X framework. + + * CMakeLists.txt: Update accordingly. + + * builds/mac/freetype-Info.plist: New file. + +2014-05-13 Pavel Koshevoy + + * CMakeLists.txt (BASE_SRCS): Add missing `ftbdf.c'. + +2014-05-11 Werner Lemberg + + [autofit] Fix variable initializations. + + * src/autofit/afhints.c (af_glyph_hints_reload): Assign default + values to `in_dir' and `out_dir' for all points. + +2014-05-11 Werner Lemberg + + [autofit] Fix crash with font `CabinSketch-Bold.ttf'. + + Problem reported by Ralf S. Engelschall . + + * src/autofit/afhints.c (af_glyph_hints_reload): Fix threshold for + finding first non-near point. + Properly initialize non-near point deltas. + +2014-05-01 Werner Lemberg + + [autofit] Add blue-zone support for Devanagari. + + This essentially moves the Devanagari script from the `Indic' hinter + to the `Latin' hinter. Thanks to Girish Dalvi + for guidance with blue zone characters! + + * src/autofit/afblue.dat: Add blue zone data for Devanagari. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afscript.h: Add Devanagari standard characters and + move data out of AF_CONFIG_OPTION_INDIC block. + + * src/autofit/afranges.c: Move Devanagari data out of + AF_CONFIG_OPTION_INDIC block. + Move U+20B9, (new) Rupee sign, from Latin to Devanagari. + + * src/autofit/afstyles.h: Update Devanagari data; in particular, use + AF_WRITING_SYSTEM_LATIN. + +2014-05-01 Werner Lemberg + + [autofit] Fix handling of neutral blue zones in stems. + + * src/autofit/afhints.h (AF_Edge_Flags): New value + `AF_EDGE_NEUTRAL'. + + * src/autofit/aflatin.c (af_latin_hints_compute_blue_edges): Trace + neutral blue zones with AF_EDGE_NEUTRAL. + (af_latin_hint_edges): Skip neutral blue zones if necessary. + +2014-04-28 Werner Lemberg + + [autofit] Introduce neutral blue zones to the latin module. + + Such blue zones match either the top or the bottom of a contour. We + need them for scripts where accent-like elements directly touch the + base character (for example, some vowel signs in Devanagari, cf. + U+0913 or U+0914). + + * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_NEUTRAL): New + property. + + * src/autofit/afblue.h: Regenerated. + + * src/autofit/aflatin.h (AF_LATIN_IS_NEUTRAL_BLUE): New macro. + (AF_LATIN_BLUE_NEUTRAL): New enumeration value. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues, + af_latin_hints_compute_blue_edges): Handle neutral blue zones. + +2014-04-25 Werner Lemberg + + * src/autofit/hbshim.c: Partially revert commit from 2014-04-17. + + Using input glyph coverage data is simply wrong. + + Problem reported by Nikolaus Waxweiler and + Mantas Mikulėnas . + +2014-04-23 Werner Lemberg + + * src/raster/ftraster.c (Vertical_Sweep_Span): Use drop-out mode. + + This spot has been missed while introducing support for various + drop-out modes years ago (including no drop-out mode, which this + commit fixes). + + Problem reported by Patrick Thomas . + +2014-04-22 Werner Lemberg + + * src/sfnt/pngshim.c (error_callback): s/longjmp/ft_longjmp/. + +2014-04-20 Werner Lemberg + + [autofit] Fix Savannah bug #42148. + + The adaptation of the cjk auto-hinter module to blue stringsets in + 2013-08-25 had three severe bugs. Mea culpa. + + 1. Contrary to the latin auto-hinter, characters for reference and + overshoot values of a blue zone are specified separately. Due to + the screwed-up change it didn't work at all. + + 2. A boolean comparison was erroneously replaced with a cast, + causing invalid results with the `^' operator later on. The + visual artifact caused by this problem is the topic of the bug + report. + + 3. Two flag values were inverted, causing incorrect assignment of + reference and overshoot values. + + * src/autofit/afblue.dat: Fix CJK bluestrings, introducing a new + syntax to have both reference and overshoot characters in a single + string. This is error #1. + Add extensive comments. + + * src/autofit/afblue.hin (AF_BLUE_PROPERTY_CJK_FILL): Removed, no + longer used. + (AF_BLUE_PROPERTY_CJK_TOP, AF_BLUE_PROPERTY_CJK_HORIZ): Fix values. + This is error #3. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + + * src/autofit/afcjk.c (af_cjk_metrics_init_blues): Correct error #1. + Use character `|' to separate characters for reference and overshoot + values. + Improve tracing messages, synchronizing them with the latin + auto-hinter. + (af_cjk_hints_compute_blue_edges): Fix value of `is_top_right_blue'. + This is error #2. + (af_cjk_align_linked_edge): Add tracing message. + + * src/autofit/afcjk.h (AF_CJK_IS_FILLED_BLUE): Removed, no longer + used. + +2014-04-17 Werner Lemberg + + [autofit] More coverage fixes for complex scripts. + + * src/autofit/hbshim.c (af_get_coverage): Merge input glyph coverage + of GSUB lookups into output coverage. Otherwise, ligatures are not + handled properly. + Don't check blue zone characters for default coverage. + +2014-04-17 Werner Lemberg + + Make `FT_Get_SubGlyph_Info' actually work. + + * src/base/ftobjs.c (FT_Get_SubGlyph_Info): Return FT_Err_Ok + if there is no error. + +2014-04-15 Werner Lemberg + + [afblue.pl]: Minor improvements. + + * src/tools/afblue.pl: Allow whitespace before comments. + Ignore whitespace in strings. + +2014-04-14 Werner Lemberg + + [autofit] Improve coverage handling. + + * src/autofit/hbshim.c (af_get_coverage): Don't exclude glyphs + appearing in the GPOS table if we are processing the default + coverage. + +2014-04-13 David Weber + + [smooth] Fix stand-alone compilation. + + * src/smooth/ftgrays.c (FT_BEGIN_STMNT, FT_END_STMNT): Define. + +2014-04-12 Werner Lemberg + + [autofit] Redesign the recognition algorithm of strong points. + + In particular, local extrema without horizontal or vertical segments + are better recognized: + + + A + D + \ / + \ / + \ / + \ / + \ + C + \ / + B +/ + + If the distances AB and CD are large, point B wasn't previously + detected as an extremum since the `ft_corner_is_flat' function + `swallowed' BC regardless of its direction, tagging point B as weak. + The next iteration started at B and made `ft_corner_is_flat' swallow + point C, tagging it as weak also, et voilà. + + To improve that, another pass gets now performed before calling + `ft_corner_is_flat' to improve the `topology' of an outline: A + sequence of non-horizontal or non-vertical vectors that point into + the same quadrant are handled as a single, large vector. + + Additionally, distances of near points are now accumulated, which + makes the auto-hinter handle them as if they were prepended to the + next non-near vector. + + This generally improves the auto-hinter's rendering results. + + * src/autofit/afhints.c (af_glyph_hints_reload): Implement it. + + * src/autofit/afhints.h (AF_FLAGS): Remove no longer used flag + `AF_FLAG_NEAR'. + +2014-04-05 Werner Lemberg + + [autofit] Improve scoring algorithm for identifying stems. + + Problem reported by Karsten Lücke . + + The new algorithm takes care of the width of stems: If the distance + between two segments is larger than the largest stem width, the + demerits quickly increase for larger distances. This improves + hinting of slanted fonts (especially if the inner parts of serifs + have non-horizontal `shoulders'), avoiding false stem links. + + * src/autofit/aflatin.c (af_latin_hints_link_segments): Use largest + stem width (if available) to compute better demerits for distances + between stems. + (af_latin_hints_detect_features): Pass stem width array and array + size. + (af_latin_metrics_init_widths): Updated to use original algorithm. + (af_latin_hints_apply): Updated to use new algorithm. + + * src/autofit/aflatin.h: Updated. + * src/autofit/afcjk.c: Updated. + +2014-04-03 Werner Lemberg + + Don't require `gzip' module for `sfnt'. + + Reported by Preet . + + * src/sfnt/sfobjs.c (woff_open_font): Guard use of + FT_Gzip_Uncompress with FT_CONFIG_OPTION_USE_ZLIB. + +2014-03-27 Werner Lemberg + + Fix Savannah bug #38235. + + Work around a bug in pkg-config version 0.28 and earlier: If a + variable value gets surrounded by doublequotes (in particular values + for the `prefix' variable), the prefix override mechanism fails. + + * builds/unix/freetype2.in: Don't use doublequotes. + * builds/unix/unix-def.in (freetype.pc): Escape spaces in directory + names with backslashes. + +2014-03-24 Werner Lemberg + + Fix Savannah bug #41946. + + Based on a patch from Marek Kašík . + + * builds/unix/configure.raw (LIBS_CONFIG): Remove. + * builds/unix/freetype-config.in (libs): Hard-code value. + * builds/unix/unix-def.in: Updated. + +2014-03-22 Werner Lemberg + + Another revert for the change from 2014-03-18. + + Problem reported by Nikolaus Waxweiler . + + * src/base/ftcalc.c (FT_MulFix): Ensure that an `FT_MulFix' symbol + gets always exported. + +2014-03-20 Werner Lemberg + + CMakeLists.txt: Another fix for include directories. + + Problem reported by Taylor Holberton . + +2014-03-19 Werner Lemberg + + CMakeLists.txt: Fix include directories. + + Problem reported by Taylor Holberton . + +2014-03-19 Werner Lemberg + + Partially revert last commit. + + Found by Alexei. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initializing + those variables is plain wrong, since we are in a loop. + +2014-03-18 Sean McBride + Werner Lemberg + + Fix clang warnings. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Initialize + some variables. + + * src/base/ftcalc.c (FT_MulFix): Only use code if + `FT_MULFIX_INLINED' is not defined. + + * src/bdf/bdfdrivr.c (bdf_cmap_class), src/cache/ftcbasic.c + (ftc_basic_image_family_class, ftc_basic_image_cache_class, + ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class), + src/cache/ftccmap.c (ftc_cmap_cache_class), src/cache/ftcmanag.c + (ftc_size_list_class, ftc_face_list_class), src/pcf/pcfdrivr.c + (pcf_cmap_class), src/pfr/pfrdrivr.c (pfr_metrics_service_rec): Make + function static. + + * src/type1/t1driver.c (t1_ps_get_font_value): Remove redundant + code. + +2014-03-17 Werner Lemberg + + Fix Savannah bug #41869. + + This works around a problem with HarfBuzz (<= 0.9.26), which doesn't + validate glyph indices returned by + `hb_ot_layout_lookup_collect_glyphs'. + + * src/autofit/hbshim.c (af_get_coverage): Guard `idx'. + + * docs/CHANGES: Updated. + +2014-03-14 Werner Lemberg + + * builds/unix/configure.raw: Don't show error messages of `which'. + +2014-03-09 Alan Coopersmith + + Fix cppcheck 1.64 warning. + + * src/autofit/afglobal.c (af_face_globals_new): Catch NULL pointer + dereference in case of error. + +2014-03-09 Sean McBride + + * src/sfnt/ttcmap.c (tt_face_build_cmaps): Remove clang warning. + +2014-03-06 Werner Lemberg + + * Version 2.5.3 released. + ========================= + + + Tag sources with `VER-2-5-3'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.5.3. + + * 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.2/2.5.3/, s/252/253/. + + * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. + + * builds/unix/configure.raw (version_info): Set to 17:2:11. + * CMakeLists.txt (VERSION_PATCH): Set to 3. + * docs/CHANGES: Updated. + +2014-03-06 Werner Lemberg + + Fixes for compilation with C++. + + * src/autofit/hbshim.c (scripts): Change type to `hb_script_t'. + (af_get_coverage): Updated. + (COVERAGE): Add cast. + +2014-03-06 Sean McBride + + Remove more clang analyzer warnings. + + * src/bdf/bdflib.c (_bdf_readstream), src/truetype/ttgload.c + (TT_Load_Glyph): Remove dead stores. + +2014-03-05 Werner Lemberg + + * builds/unix/configure.raw: Simplify. + +2014-03-05 suzuki toshiya + + Fix a bug in configure in library dependency setting + Reported in https://bugs.freedesktop.org/show_bug.cgi?id=75652. + + * builds/unix/configure.raw: Use `x"${xxx}" != xno' style. + +2014-03-04 Werner Lemberg + + Minor fix for `make devel'. + + * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Don't use + pkg-config for bzip2 since not all GNU/Linux distributions have + `bzip2.pc' (and the header file `bzlib.h' is located in /usr/include + normally). + +2014-03-04 Sean McBride + + Fix several clang static analyzer dead store warnings. + + * src/autofit/afhints.c (af_glyph_hints_reload, + af_glyph_hints_align_weak_points): Remove unnecessary assignments. + + * src/bdf/bdflib.c (bdf_font_load): Ditto. + + * src/pshinter/pshalgo.c (psh_glyph_compute_extrema, + psh_glyph_interpolate_other_points): Ditto. + + * src/type1/t1load.c (T1_Set_MM_Blend): Ditto. + +2014-03-03 Werner Lemberg + + Rewrite library option handling in `configure'. + + o Introduce `auto' value for `--with-XXX' library options; this is + now the default. + + o First use `pkg-config' for library detection, then fall back to + other tests. + + * builds/unix/configure.raw (--with-zlib, --with-bzip2, --with-png, + --with-harfbuzz): Rewrite. + Use new `xxx_reqpriv', `xxx_libpriv', and `xxx_libstaticconf' + variables to collect data for `freetype2.pc' and `freetype-config'. + (FT2_EXTRA_LIBS): Renamed to ... + (ft2_extra_libs): This since it gets no longer substituted. + (REQUIRES_PRIVATE, LIBS_PRIVATE, LIBS_CONFIG, LIBSSTATIC_CONFIG): + New output variables, replacing `XXX_PKG' and `LIBXXX'. + Add notice at the end of `configure' showing the library + configuration. + + * builds/unix/freetype-config.in (--static): New command line + option. + (libs): Updated. + (staticlibs): New variable, to be used if `--static' is given. + * docs/freetype-config.1: Document `--static'. + + * builds/unix/freetype2.in, builds/unix/unix-def.in: Updated. + +2014-03-01 Werner Lemberg + + Avoid `long long' warnings with older gcc compilers. + Problem reported by Hin-Tak Leung . + + * builds/unix/configure.raw: Don't use gcc's `-pedantic' flag for + versions < 4.6. This is especially needed for Max OS X since this + OS runs a gcc variant (or emulation) based on version 4.2.1. + +2014-03-01 Werner Lemberg + + * docs/INSTALL.CROSS: Revised and updated. + +2014-03-01 Werner Lemberg + + Make `make clean' remove `freetype2.pc'. + + This is a generated file at build time, not configure time. + + * builds/unix/unix-def.in (DISTCLEAN): Move `freetype2.pc' to ... + (CLEAN): This variable. + +2014-03-01 Werner Lemberg + + Use pkg-config for detecting libpng and libbz2 also. + + * builds/unix/configure.raw (HAVE_PKG): New variable. + Search for libbz2 using `pkg-config'; s/BZ2/BZIP2/. + Search for libpng using `pkg-config'. + Fix definition of `LIBHARFBUZZ' variable. + * builds/unix/freetype-config.in ($libs): Updated. + * builds/unix/freetype2.in: Add `URL' field. + Update `Requires.private' and `Libs.private'. + * builds/unix/unix-def.in: Updated. + +2014-03-01 Werner Lemberg + + Add configure support for HarfBuzz. + + * builds/unix/pkg.m4: New file. + * builds/unix/configure.raw: Search for libharfbuzz using + `pkg-config'. + Add `--without-harfbuzz' option. + * builds/unix/freetype-config.in, builds/unix/freetype2.in, + builds/unix/unix-def.in (freetype-config, freetype2.pc): Handle + HarfBuzz. + + * docs/INSTALL.UNIX: Document interdependency of Freetype with + HarfBuzz. + +2014-02-28 Alexei Podtelezhnikov + + [cff] Math simplifications. + + * src/cf2blues.c (cf2_blues_init): Use `FT_MulDiv'. + * src/cf2ft.c (cf2_getScaleAndHintFlag): Use simple division. + +2014-02-28 Dave Arnold + + [cff] Fix Savannah bug #41697, part 2. + + * src/cff/cf2ft.c (cf2_initLocalRegionBuffer, + cf2_initGlobalRegionBuffer): It is possible for a charstring to call + a subroutine if no subroutines exist. This is an error but should + not trigger an assert. Split the assert to account for this. + +2014-02-28 Dave Arnold + + [cff] Fix Savannah bug #41697, part 1. + + * src/cff/cf2hints.c (cf2_hintmap_build): Return when `hintMask' is + invalid. In this case, it is not safe to use the length of + `hStemHintArray'; the exception has already been recorded in + `hintMask'. + +2014-02-26 Werner Lemberg + + [sfnt] Fix Savannah bug #41696. + + * src/sfnt/ttcmap.c (tt_cmap0_validate, tt_cmap2_validate, + tt_cmap4_validate, tt_cmap14_validate): Fix limit tests. + +2014-02-26 Werner Lemberg + + [winfnt] Fix Savannah bug #41694. + + * src/winfonts/winfnt.c (FNT_Load_Glyph): Check glyph offset. + +2014-02-26 Werner Lemberg + + [cff] Fix Savannah bug #41693. + + * src/cff/cffload.c (CFF_Load_FD_Select): Reject empty array. + +2014-02-26 Werner Lemberg + + [bdf] Fix Savannah bug #41692. + + bdflib puts data from the input stream into a buffer in chunks of + 1024 bytes. The data itself gets then parsed line by line, simply + increasing the current pointer into the buffer; if the search for + the final newline character exceeds the buffer size, more data gets + read. + + However, in case the current line's end is very near to the buffer + end, and the keyword to compare with is longer than the current + line's length, an out-of-bounds read might happen since `memcmp' + doesn't stop properly at the string end. + + * src/bdf/bdflib.c: s/ft_memcmp/ft_strncmp/ to make comparisons + stop at string ends. + +2014-02-17 suzuki toshiya + + [autofit] Fix `make multi' compilation. + + * src/autofit/hbshim.c: Include `afglobal.h' and `aftypes.h'. + +2014-02-19 Werner Lemberg + Simon Bünzli + + Fix Savannah bug #32902. + + Patch taken from + + https://code.google.com/p/sumatrapdf/source/browse/trunk/ext/_patches/freetype2.patch?spec=svn8620&r=8620#87 + + with slight modifications. + + * src/type1/t1parse.c (T1_Get_Private_Dict): Add heuristic test to + handle fonts that incorrectly use \r at the beginning of an eexec + block. + +2014-02-19 Simon Bünzli + + Fix Savannah bug #41590. + + * src/type1/t1load.c (parse_encoding): Protect against invalid + number. + +2014-02-12 Dave Arnold + + [cff] Optimize by using `FT_MulDiv'. + Suggested by Alexei. + + * src/cff/cf2font.c (cf2_computeDarkening): Do it. + +2014-02-12 Werner Lemberg + + Fix Savannah bug #41465. + + * builds/unix/unix-def.in (CLEAN): Add `freetype-config'. + (DISTCLEAN): Remove `freetype-config'. + +2014-02-08 Sean McBride + + Fix clang static analyzer and compiler warnings. + + * src/autofit/afhints.c (af_glyph_hints_align_weak_points), + src/autofit/afloader (af_loader_load_g) , + src/base/ftcalc.c (FT_MSB), src/base/ftoutln.c + (FT_Outline_Decompose), src/bdf/bdfdrivr.c (bdf_interpret_style), + src/cff/cffparse.c (cff_parse_integer), src/cid/cidparse.c + (cid_parser_new), src/pfr/pfrload.c (pfr_phy_font_load), + src/raster/ftraster.c (Decompose_Curve), src/sfnt/sfdriver.c + (sfnt_get_ps_name), src/sfnt/ttcmap.c (tt_cmap12_next, + tt_cmap13_next), src/smooth/ftgrays.c (gray_hline): Remove dead + code. + + * src/autofit/afmodule.c (af_property_get_face_globals, + af_property_set, af_property_get), src/base/ftbitmap.c + (ft_gray_for_premultiplied_srgb_bgra): Make functions static. + + * src/base/ftobjs.c (ft_remove_renderer): Protect against + library == NULL. + (ft_property_do): Make function static. + + * src/base/ftrfork.c: Include `ftbase.h'. + + * src/sfnt/ttsbit.c (tt_face_load_sbix_image) + [!FT_CONFIG_OPTION_USE_PNG], src/type1/t1gload.c + (T1_Compute_Max_Advance): Avoid compiler warning. + + * src/truetype/ttinterp.c (TT_New_Context): Reduce scope of + variable. + +2014-02-08 Werner Lemberg + + Fix Windows build directories. + + The build target is now `windows' instead of `win32'. + + Problem reported by Nickolas George . + + * builds/modules.mk: Don't use `win32' and `win16' (!) but + `windows'. + + * builds/windows/detect.mk, builds/windows/win32-def.mk: + s/win32/windows/. + +2014-02-08 Eugen Sawin + + Fix Savannah bug #41507. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) + [!FT_CONFIG_OPTION_USE_PNG] <17, 17, 19>: Fix error handling. + +2014-02-08 Dave Arnold + + [cff] Fix minor performance bug. + + * src/cff/cf2font.c (cf2_font_setup): Darkening amount and blue zone + calculations are now cached and not recomputed on each glyph. + +2014-02-05 Werner Lemberg + + Fix problems with perl 5.8.8 as distributed with current MinGW. + + * src/tools/afblue.pl: Work-around for Perl bug #63402. + (string_re): Avoid `possessive quantifiers', which have been + introduced in Perl version 5.10. + +2014-02-04 Werner Lemberg + + Fix compilation with MinGW. + + Right now, compilation out of the box with latest MinGW is broken + due to bugs in header files of mingwrt 4.0.3 in strict ANSI mode, + cf. + + https://sourceforge.net/p/mingw/bugs/2024/ + https://sourceforge.net/p/mingw/bugs/2046/ + + * builds/unix/configure.raw: Don't set `-ansi' flag for MinGW. + +2014-02-04 Werner Lemberg + + [autofit] Minor fix. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths), + src/autofit/aflatin.c (af_latin_metrics_init_widths): Fix handling + of alternative standard characters. + This also fixes a compilation warning in non-debug mode. + +2014-02-03 Werner Lemberg + + [cff] Fix Savannah bug #41363. + + * src/cff/cf2ft.c (cf2_checkTransform): Convert assertion into + parameter check. + (cf2_decoder_parse_charstrings): Call `cf2_checkTransform' only if + we are scaling the outline. + (cf2_getPpemY): Remove problematic assertion. + +2014-01-26 Werner Lemberg + + [autofit] Introduce two more slots for standard characters. + + This is useful for OpenType features like `c2sc' (caps to small + caps) that don't have lowercase letters by definition, or other + features that mainly operate on numerals. + + * src/autofit/afscript.h: Add more standard characters. + + * src/autofit/aftypes.h: Update use of `SCRIPT' macro. + (AF_ScriptClassRec): Add members to hold two more standard + characters. + (AF_DEFINE_SCRIPT_CLASS): Updated. + + * src/autofit/afglobal.c, src/autofit/afglobal.h, + * src/autofit/afpic.c, src/autofit/afranges.h, src/autofit/hbshim.c: + Update use of `SCRIPT' macro. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths), + src/autofit/aflatin.c (af_latin_metrics_init_widths): Scan two more + standard characters. + +2014-01-24 Werner Lemberg + + Fix Savannah bug #41320. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues) + : Avoid negative index of `last'. + +2014-01-23 Werner Lemberg + + Fix Savannah bug #41310. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap) : + Don't check metrics, which this format doesn't have. + This is another correction to the commit from 2013-11-21. + +2014-01-23 Werner Lemberg + + Fix Savannah bug #41309. + + * src/type1/t1load.c (t1_parse_font_matrix): Properly handle result + of `T1_ToFixedArray'. + + * src/cid/cidload.c (cid_parse_font_matrix): Synchronize with + `t1_parse_font_matrix'. + + * src/type42/t42parse.c (t42_parse_font_matrix): Synchronize with + `t1_parse_font_matrix'. + (t42_parse_encoding): Synchronize with `t1_parse_encoding'. + + * src/psaux/psobjs.c (ps_parser_load_field) , + : Properly handle result of `ps_tofixedarray'. + +2014-01-22 Werner Lemberg + + * src/autofit/hbshim.c (af_get_coverage): Fix memory leaks. + +2014-01-16 Werner Lemberg + + [autofit] Improve tracing of style coverages. + + * include/internal/fttrace.h: Add `afglobal' for tracing style + coverages. + + * src/autofit/afglobal.c: Include FT_INTERNAL_DEBUG_H. + (FT_COMPONENT): Define. + (af_face_globals_compute_style_coverage): Trace `gstyles' array + data. + +2014-01-09 Werner Lemberg + + Fix Savannah bug #41158. + + * builds/unix/install.mk (install): Create man page directory. + +2014-01-08 Chongyu Zhu + + [arm] Fix Savannah bug #41138, part 2. + + * builds/unix/ftconfig.in (FT_MulFix_arm), include/config/ftconfig.h + (FT_MulFix_arm), src/truetype/ttinterp.c (TT_MulFix14_arm): Fix + preprocessor conditionals for `add.w'. + +2014-01-08 Werner Lemberg + + [autofit] Fix Savannah bug #41138, part 1. + + * src/tools/afblue.pl : Produce correct auxiliary + enumeration names for generated `#else'. + + * src/autofit/afblue.h: Regenerated. + +2014-01-06 Werner Lemberg + + Add manual page for `freetype-config'. + Contributed by Nis Martensen . + + * docs/freetype-config.1: New file. + + * builds/unix/unix-def.in (mandir): Define. + * builds/unix/install.mk (install, uninstall): Handle manpage. + +2014-01-05 Werner Lemberg + + [autofit] Minor fixes for `afblue.pl'. + + * src/tools/afblue.pl (aux_name): Don't use `reverse'. + : Use proper indentation for generated `#else'. + + * src/autofit/afblue.h: Regenerated. + +2014-01-04 Werner Lemberg + + [autofit] Fix Indic scripts. + + Split the single, incorrect Indic entry into separate scripts so + that the covered ranges are the same: Bengali, Devanagari, Gujarati, + Gurmukhi, Kannada, Limbu, Malayalam, Oriya, Sinhala, Sundanese, + Syloti Nagri, Tamil, Telugu, and Tibetan. At the same time, remove + entries for Meetei Mayek and Sharada – the Unicode ranges were + incorrect (and nobody has complained about that), fonts are scarce + for those scripts, and the Indic auto-hinter support is rudimentary + anyways. + + * src/autofit/afscript.h: Updated, using AF_CONFIG_OPTION_INDIC and + AF_CONFIG_OPTION_CJK. + + * src/autofit/afstyles.h (STYLE_DEFAULT_INDIC): New auxiliary macro. + Use it, together with AF_CONFIG_OPTION_INDIC and + AF_CONFIG_OPTION_CJK, to update. + + * src/autofit/afranges.c [AF_CONFIG_OPTION_INDIC]: Updated. + [!AF_CONFIG_OPTION_INDIC, !AF_CONFIG_OPTION_CJK]: Removed. + Sort entries by tags. + +2014-01-03 Werner Lemberg + + [autofit] Thinko. + + * src/autofit/hbshim.c (af_get_char_index): Similar to + `af_get_coverage', reject glyphs which are not substituted. + +2014-01-03 Werner Lemberg + + [autofit] Fix handling of default coverages. + + With this commit, the implementation of coverage handling is + completed. + + * src/autofit/hbshim.c (af_get_coverage): Exit early if nothing to + do. + Reject coverages which don't contain appropriate glyphs for blue + zones. + +2014-01-03 Werner Lemberg + + [autofit] Fix handling of default coverages. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + First handle non-default coverages, then the default coverage of the + default script, and finally the other default coverages. + +2014-01-03 Werner Lemberg + + [autofit] Fix scaling of HarfBuzz shaping. + + * src/autofit/hbshim.c (af_get_char_index): Scale to units per EM. + +2014-01-03 Werner Lemberg + + [autofit] Better ftgrid support. + + * src/autofit/afhints.c (af_glyph_hints_get_segment_offset): Add + parameters `is_blue' and `blue_offset'. + +2014-01-01 Werner Lemberg + + [autofit] Remove some styles. + + * src/autofit/afcover.h: Remove coverages for alternative fractions, + denominators, numerators, and fractions. + + * src/autofit/afstyles.h (META_STYLE_LATIN): Updated. + +2014-01-01 Werner Lemberg + + [autofit] Add more styles. + + * src/autofit/afstyles.h (STYLE_LATIN, META_STYLE_LATIN): New + auxiliary macros; use them to define styles for Cyrillic, Greek, and + Latin. + + * src/autofit/afcover.h: Remove coverage for oldstyle figures. + Since those digits are used in combination with ordinary letters, it + makes no sense to handle them separately. + + * src/autofit/afglobal.c (af_face_globals_get_metrics): Don't limit + `options' parameter to 4 bits. + +2014-01-01 Werner Lemberg + + [autofit] Fix style assignments to glyphs. + + * src/autofit/hbshim.c (af_get_coverage) + [FT_CONFIG_OPTION_USE_HARFBUZZ]: Scan GPOS coverage of features also + so that we can skip glyphs that have both GSUB and GPOS data. + +2014-01-01 Werner Lemberg + + * src/autofit/hbshim.c: s/{lookups,glyphs}/gsub_{lookups,glyphs}/. + +2014-01-01 Werner Lemberg + + [autofit] Implement and use `af_get_char_index' with HarfBuzz. + + * src/autofit/hbshim.c (COVERAGE) [FT_CONFIG_OPTION_USE_HARFBUZZ]: + Redefine to construct HarfBuzz features. + (af_get_char_index) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Rewritten. + + * src/autofit/aflatin.c (af_latin_metrics_init_blues): Use + `y_offset' to adjust `best_y'. + +2013-12-31 Werner Lemberg + + [autofit] s/AF_STYLE_...._DEFAULT/AF_STYLE_...._DFLT/i. + +2013-12-31 Werner Lemberg + + [autofit] Fix interface of `af_get_char_index'. + + * src/autofit/hbshim.c (af_get_char_index): Return error value. + Add argument for y offset (to be used in a yet-to-come patch). + + * src/autofit/hbshim.h, src/autofit/afcjk.c, + src/autofit/aflatin.c: Updated. + +2013-12-30 Werner Lemberg + + [autofit] Don't combine multiple features into one set. + + Combining them, as originally envisioned, would lead to much more + complicated code, as investigations have shown meanwhile. The major + drawback is that we run out of available style slots much earlier. + However, this is only a theoretical issue since we don't support a + large number of scripts currently. + + * src/autofit/afcover.h: Replace `COVERAGE_{1,2,3}' macros with + a single-element `COVERAGE' macro, sort the elements by the feature + tags, and add entry for `ruby'. + + * src/autofit/aftypes.h: Updated. + * src/autofit/hbshim.c: Updated. + +2013-12-28 Werner Lemberg + + [autofit] Code shuffling to reduce use of cpp macros. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Call `af_get_coverage' unconditionally. + + * src/autofit/autofit.c: Include `hbshim.c' unconditionally. + + * src/autofit/hbshim.c (af_get_coverage) + [!FT_CONFIG_OPTION_USE_HARFBUZZ]: Provide dummy function. + + * src/autofit/hbshim.h: Provide function declarations + unconditionally. + +2013-12-28 Werner Lemberg + + [autofit] Add wrapper function for `FT_Get_Char_Index'. + + Yet-to-come changes will provide HarfBuzz functionality for the new + function. + + * src/autofit/hbshim.c (af_get_char_index): New function. + * src/autofit/hbshim.h: Updated. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths, + af_cjk_metrics_init_blues, af_cjk_metrics_check_digits): Updated. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_metrics_init_blues, af_latin_metrics_check_digits): + Updated. + +2013-12-28 Werner Lemberg + + [autofit] Use `global' HarfBuzz font object. + + We now use `hb_font' instead of `hb_face' since yet-to-come changes + need this. + + * src/autofit/afglobal.h: Include `hbshim.h'. + (AF_FaceGlobalsRec) [FT_CONFIG_OPTION_USE_HARFBUZZ]: New member + `hb_font'. + + * src/autofit/afglobal.c (af_face_globals_new) + [FT_CONFIG_OPTION_USE_HARFBUZZ]: Create `hb_font'. + (af_face_globals_free) [FT_CONFIG_OPTION_USE_HARFBUZZ]: Destroy + `hb_font'. + + * src/autofit/hbshim.h: Include HarfBuzz headers. + + * src/autofit/hbshim.c: Include `hbshim.h' instead of HarfBuzz + headers. + (af_get_coverage): Updated. + +2013-12-27 Werner Lemberg + + [autofit] Handle `DFLT' OpenType script for coverages. + + * include/ftautoh.h: Document new `default-script' property. + + * src/autofit/hbshim.c (af_get_coverage): Use `AF_FaceGlobals' for + type of first parameter. + (script_tags): Add one more element. + (af_get_coverage): Adjust `script_tags' to handle `DFLT' script tag. + + * src/autofit/hbshim.h: Updated. + + * src/autofit/afglobal.c (af_face_globals_compute_style_coverage): + Updated. + + * src/autofit/afglobal.h (AF_SCRIPT_DEFAULT): New macro. + + * src/autofit/afmodule.h (AF_ModuleRec): New `default_script' + member. + + * src/autofit/afmodule.c (af_property_set, af_property_get): Handle + `default-script' property. + (af_autofitter_init): Updated. + +2013-12-27 suzuki toshiya + + [ftrfork] Fix the face order difference between POSIX and Carbon. + + The fragmented resources in Suitcase and .dfont should be reordered + when `POST' resource for Type1 is being restored, but reordering of + sfnt resources induces the different face order. Now the ordering + is restricted to `POST' resource only, to prevent the different + order issue (e.g. the face index in the fontconfig cache generated + with Carbon framework is incompatible with that by FreeType 2 + without Carbon framework.) Found by Khaled Hosny and Hin-Tak Leung. + + http://lists.gnu.org/archive/html/freetype-devel/2013-02/msg00035.html + http://lists.gnu.org/archive/html/freetype-devel/2013-12/msg00027.html + + * src/base/ftrfork.c (FT_Raccess_Get_DataOffsets): Add a switch + `sort_by_res_id' to control the fragmented resource ordering. + * include/internal/ftrfork.h: Declare new switch. + * src/base/ftobjs.c (IsMacResource): Enable the sorting for `POST' + resource, and disable the sorting for `sfnt' resource. + +2013-12-25 Werner Lemberg + + Fix Savannah bug #40997. + + * src/bdf/bdfdrivr.c (BDF_Face_Init): Only use OR operator to + adjust face flags since FT_FACE_FLAG_EXTERNAL_STREAM might already + be set. + * src/cff/cffobjs.c (cff_face_init): Ditto. + * src/cid/cidobjs.c (cid_face_init): Ditto. + * src/pcf/pcfread.c (pcf_load_font): Ditto. + * src/pfr/pfrobjs.c (pfr_face_init): Ditto. + * src/type1/t1objs.c (T1_Face_Init): Ditto. + * src/type42/t42objs.c (T42_Face_Init): Ditto. + * src/winfonts/winfnt.c (FNT_Face_Init): Ditto. + +2013-12-21 Werner Lemberg + + [autofit] Introduce `coverages'. + + Coverages are the interface to the HarfBuzz library to access + OpenType features for handling glyphs not addressable by the cmap. + + Right now, compilation of HarfBuzz is only added to the development + build. A solution for standard build mode will be delayed until + HarfBuzz gets split into two libraries to avoid mutual dependencies + between FreeType and HarfBuzz. + + Note that this is only a first step in handling coverages, basically + providing the framework only. Code for handling selected OpenType + features (this is, actually using the data in `afcover.h') will + follow. + + * devel/ftoption.h, include/config/ftoption.h + (FT_CONFIG_OPTION_USE_HARFBUZZ): New macro. + + * src/autofit/hbshim.c, src/autofit/hbshim.h, src/autofit/afcover.h: + New files. + + * src/autofit/afscript.h: Add HarfBuzz script name tags. + + * src/autofit/afstyles.h: Add default coverage enumeration values. + + * src/autofit/aftypes.h: Update use of `SCRIPT' and `STYLE' macros. + (AF_Coverage): New enumeration (generated by `afcover.h'). + (AF_StyleClassRec): New member `coverage'. + (AF_DEFINE_STYLE_CLASS): Updated. + + * include/internal/fttrace.h: Add `afharfbuzz' for tracing coverage + data. + + * src/autofit/afglobal.h: Update use of `SCRIPT' and `STYLE' macros. + (AF_SCRIPT_FALLBACK): Renamed to ... + (AF_STYLE_FALLBACK): ... this. + + * src/autofit/afglobal.c: Include `hbshim.c'. + Update use of `SCRIPT' and `STYLE' macros. + (af_face_globals_compute_style_coverage) + [FT_CONFIG_OPTION_USE_HARFBUZZ]: Call `af_get_coverage'. + Update. + + * src/autofit/afmodule.h (AF_ModuleRec): + s/fallback_script/fallback_style/. + + * src/autofit/afmodule.c (af_property_set): Adapt handling of + `fallback-script' property to set a fallback style. + (af_property_get, af_autofitter_init): Updated. + + * src/autofit/afpic.c: Update use of `SCRIPT' and `STYLE' macros. + + * src/autofit/afranges.h: Update use of `SCRIPT' macro. + + * src/autofit/autofit.c [FT_CONFIG_OPTION_USE_HARFBUZZ]: Include + `hbshim.c'. + + * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `hbshim.c'. + (AUTOF_DRV_H): Add `afcover.h'. + + * builds/freetype.mk (INCLUDE_FLAGS) [DEVEL_DIR]: Use pkg-config for + all libraries needed by FreeType. + +2013-12-21 Werner Lemberg + + Fix Savannah bug #40975 (sort of). + + * src/truetype/ttinterp.c (Ins_IP): Fix sign typo to make FreeType + behave the same as the Windows TrueType engine for the invalid case. + +2013-12-21 Werner Lemberg + + [autofit] Make PIC mode work actually. + + * src/autofit/afpic.h (AFModulePIC): Fix array sizes to fit the + enumeration values automatically generated by including `afscript.h' + and friends. + + * src/autofit/afpic.c (autofit_module_class_pic_init): Updated. + +2013-12-21 Werner Lemberg + + Fix PIC linking. + + * include/internal/ftrfork.h (CONST_FT_RFORK_RULE_ARRAY_BEGIN): Fix + generated function name. + + * src/base/basepic.c (FT_Init_Table_raccess_guess_table): Rename + to ... + (FT_Init_Table_ft_raccess_guess_table): ... this so that the + function name correctly corresponds to what the macro framework + expects. + + * src/psnames/rules.mk (PSNAMES_DRV_SRC_S): Use correct file name so + that PIC functions are compiled also. + +2013-12-21 Werner Lemberg + + [base] Add missing dependencies to Makefile. + + * src/base/rules.mk (BASE_SRC): Add `basepic.c' and `ftpic.c'. + (BASE_H): Add `basepic.h'. + +2013-12-20 Werner Lemberg + + [autofit] Fix PIC compilation. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths), + src/autofit/aflatin.c (af_latin_metrics_init_widths) + [FT_CONFIG_OPTION_PIC]: Declare `globals'. + + * src/autofit/afglobal.c: Always call AF_DEFINE_SCRIPT_CLASS, and + AF_DEFINE_STYLE_CLASS. + + * src/autofit/afpic.c: Include `afglobal.h'. + (autofit_module_class_pic_init): Typo. + + * src/autofit/aftypes.h (AF_DEFINE_SCRIPT_CLASS, + AF_DEFINE_STYLE_CLASS): Don't use the same identifier for macro + parameter and structure member. + +2013-12-20 Werner Lemberg + + [autofit] Introduce `styles'. + + This is the new top-level structure for handling glyph input data; + scripts are now defined separately. + + * src/autofit/aftypes.h (SCRIPT): Updated. + (AF_ScriptClassRec): Move `blue_stringset' and `writing_system' + members to ... + (AF_Style_ClassRec): ... this new structure. + (AF_Style): New enumeration. + (AF_StyleMetricsRec): Replace `script' enumeration with + `style_class' pointer. + (AF_DEFINE_SCRIPT_CLASS, AF_DECLARE_SCRIPT_CLASS): Updated. + (AF_DEFINE_STYLE_CLASS, AF_DECLARE_STYLE_CLASS): New macros. + + * src/autofit/afstyles.h: New file, using data from `afscript.h'. + * src/autofit/afscript.h: Updated. + + * src/autofit/afcjk.c (af_cjk_metrics_init_widths, + af_cjk_metrics_init_blues, af_cjk_hint_edges): Updated. + + * src/autofit/afglobal.c (SCRIPT): Updated. + (STYLE): Redefine macro to load `afstyles.h'. + (af_script_names) [FT_DEBUG_LEVEL_TRACE]: Replace with... + (af_style_names): ... this array. + (af_face_globals_compute_script_coverage): Renamed to... + (af_face_globals_compute_style_coverage): ... this. + Updated. + (af_face_globals_new, af_face_globals_free, + af_face_globals_get_metrics): Updated. + + * src/autofit/afglobal.h (SCRIPT): Updated. + (STYLE): Redefine macro to load `afstyles.h'. + (AF_SCRIPT_FALLBACK): Update definition. This will get more + refinements with later on. + (AF_SCRIPT_UNASSIGNED): Replace with... + (AF_STYLE_UNASSIGNED): ... this macro. + (AF_FaceGlobalsRec): Updated. + + * src/autofit/aflatin.c (af_latin_metrics_init_widths, + af_latin_metrics_init_blues, af_latin_metrics_scale_dim, + af_latin_hint_edges): Updated. + + * src/autofit/aflatin2.c (af_latin2_metrics_init_widths): Updated. + (af_ltn2_uniranges): Removed. + + * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph): + Updated. + + * src/autofit/afpic.c (autofit_module_class_pic_init): Updated. + * src/autofit/afpic.h (AF_STYLE_CLASSES_GET): New macro. + (AFModulePIC): Add `af_style_classes' and `af_style_classes_rec' + members. + + * src/autofit/afranges.h: Updated. + + * src/autofit/rules.mk (AUTOF_DRV_H): Add `afstyles.h'. + +2013-12-19 Werner Lemberg + + [autofit] Factor scripts and uniranges out of writing system files. + + * src/autofit/afranges.c, src/autofit/afranges.h: New files. + + * src/autofit/afscript.h: Extend `SCRIPT' macro with more + parameters, taking data from the writing system files. + + * src/autofit/aftypes.h: Updated. + + * src/autofit/afglobal.c: Include `afranges.h'. + Load `afscript.h' to call AF_DEFINE_SCRIPT_CLASS. + * src/autofit/afglobal.c: Include `afranges.h'. + Load `afscript.h' to call AF_DECLARE_SCRIPT_CLASS. + + * src/autofit/afcjk.c, src/autofit/afcjk.h: Updated. + * src/autofit/afdummy.c, src/autofit/afdummy.h: Updated. + * src/autofit/afindic.c, src/autofit/afindic.h: Updated. + * src/autofit/aflatin.c, src/autofit/aflatin.h: Updated. + * src/autofit/aflatin2.c, src/autofit/aflatin2.h: Updated. + + * src/autofit/afpic.c: Updated. + + * src/autofit/autofit.c: Include `afranges.c'. + * src/autofit/rules.mk (AUTOF_DRV_SRC): Add `afranges.c'. + +2013-12-18 Werner Lemberg + + [autofit] More code orthogonality. + + * src/autofit/aftypes.h (AF_StyleMetrics): Replace `script_class' + pointer to an `AF_ScriptClass' structure with `script' index of type + `AF_Script'. + Move some code around. + + * src/autofit/afcjk.c: Include `afpic.h'. + (af_cjk_metrics_init_widths, af_cjk_metrics_init_blues, + af_cjk_hint_edges): Updated. + + * src/autofit/aflatin.c: Include `afpic.h'. + (af_latin_metrics_init_widths, af_latin_metrics_init_blues, + af_latin_metrics_scale_dim, af_latin_hint_edges): Updated. + + * src/autofit/afglobal.c (af_face_globals_get_metrics): Updated. + + * src/autofit/afloader.c (af_loader_load_g, af_loader_load_glyph): + Updated. + +2013-12-18 Werner Lemberg + + [autofit] s/ScriptMetrics/StyleMetrics/. + +2013-12-18 Werner Lemberg + + [autofit] s/script_{metrics,hints}/style_{metrics,hints}/ + +2013-12-18 Werner Lemberg + + [autofit] s/gscripts/gstyles/. + +2013-12-18 Werner Lemberg + + [autofit] s/glyph_scripts/glyph_styles/. + + This is the first commit of a series to create a new top-level + structure (a `style') for handling scripts, writing_systems, and + soon-to-be-added coverages. + +2013-12-17 Werner Lemberg + + [autofit] s/AF_Script_/AF_WritingSystem_/ where appropriate. + +2013-12-11 Infinality + + [truetype] Simplify logic of rendering modes. + + This patch unifies the subpixel and non-subpixel cases. + + * src/truetype/ttinterp.h (TT_ExecContextRec): Remove + `grayscale_hinting'; all code should refer to `grayscale' instead. + Remove unused `native_hinting' member. + Rename `subpixel_hinting' member to `subpixel. + + * src/truetype/ttgload.c (TT_LOADER_SET_PP): Updated. + (tt_loader_init): Updated. + + * src/truetype/ttinterp.c (Ins_GETINFO): Simplify. + Updated. + +2013-12-11 Werner Lemberg + + [documentation] Add section how to include FreeType header files. + Problem reported by David Kastrup . + + Surprisingly, a description how to do that was completely missing in + the API reference. + + * include/freetype.h, include/ftchapters.h: New documentation + section `header_inclusion'. + +2013-12-10 Werner Lemberg + + [autofit] s/DFLT/NONE/, s/dflt/none/. + +2013-12-10 Werner Lemberg + + [autofit] s/AF_SCRIPT_NONE/AF_SCRIPT_UNASSIGNED/. + +2013-12-10 Werner Lemberg + + [truetype] Fix scaling of vertical phantom points. + + * src/truetype/ttgload.c (load_truetype_glyph): Scale pp3.x and + pp4.x also. + +2013-12-10 Werner Lemberg + + [truetype] Fix positioning of composite glyphs. + Problem reported by Nigel Tao . + + * src/truetype/ttgload.c (TT_Hint_Glyph): Remove code that shifts + the glyph (component) by a fractional value computed from the LSB + phantom point. This is wrong, since the horizontal phantom points + get rounded horizontally later on. + +2013-12-08 Werner Lemberg + + * 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 2. + + * builds/unix/configure.raw (version_info): Set to 17:1:11. + * CMakeLists.txt (VERSION_PATCH): Set to 2. + * docs/CHANGES: Updated. + +2013-12-07 Werner Lemberg + + [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 + + * builds/freetype.mk (FT_CC): Removed. Unused. + +2013-12-04 Werner Lemberg + + [sfnt] Fix handling of embedded bitmap strikes. + + This corrects the commit from 2013-11-21. Problem reported by + Andrey Panov . + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Fix logic to + detect excessive bytes for bit-aligned bitmaps. + +2013-12-03 Werner Lemberg + + [truetype] Remove dead code. + + Reported by Nigel Tao . + + * include/internal/tttypes.h (TT_LoaderRec): Remove unused + `preserve_pps' field. + * src/truetype/ttgload.c (TT_Hint_Glyph): Updated. + +2013-12-03 Werner Lemberg + + [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 + + [truetype] Fix change from 2013-11-20. + + Problem reported by Akira Kakuto . + + * 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 + + [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 + + * 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 1. + * docs/CHANGES, docs/release: Updated. + +2013-11-23 Werner Lemberg + + [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 + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Typo. + +2013-11-21 Werner Lemberg + + [sfnt] Typo. + + Problem reported by Hin-Tak Leung . + + * 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 + + [sfnt] Improve handling of buggy embedded bitmap strikes. + + We are now able to successfully load `AppleMyoungJo.ttf'. + Problem reported by Hin-Tak Leung . + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_bitmap): Don't trust glyph + format. + +2013-11-20 Werner Lemberg + + [truetype] Don't trust `maxp's `maxSizeOfInstructions'. + + Problem reported by Hin-Tak Leung ; 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 + + [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 + + * builds/unix/ft2unix.h: Remove. No longer necessary. + + * builds/unix/install.mk (install): Updated. + +2013-11-13 Werner Lemberg + + 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 + #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. + + * CMakeLists.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 + + [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 + + * docs/CMAKE: New dummy file. + +2013-11-08 Dave Arnold + + [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 + + [truetype] Fix handling of phantom points in composite glyphs. + Problem reported by Nigel Tao . + + 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 + + [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 + + * builds/windows/vc2010/freetype.vcxproj: s/v110/v100/. + PlatformToolSet version 110 is for VC2012. + + Problem reported (with solution) by Dave Arnold . + +2013-11-05 Werner Lemberg + + [truetype] Correctly reset point tags for glyph components. + Problem reported by Nigel Tao . + + * src/truetype/ttgload.c (TT_Process_Composite_Glyph): Fix loop. + +2013-11-02 Werner Lemberg + + [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 + + 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 + + * docs/CHANGES: Updated. + +2013-11-01 Werner Lemberg + + [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 ): + Updated. + +2013-10-27 Werner Lemberg + + [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 + + * README.git, docs/CHANGES, docs/INSTALL: Updated. + +2013-10-24 John Cary + + Provide cmake support. + + * CMakeLists.txt: New file. + +2013-10-23 Kenneth Miller + Werner Lemberg + + 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 + + * 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 + + [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/aflatin2.c: Updated. + +2013-10-19 Werner Lemberg + + * src/autofit/afblue.dat: s/MINOR/DESCENDER/. + + * src/autofit/afblue.c, src/autofit/afblue.h: Regenerated. + +2013-10-16 Werner Lemberg + + [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 + + [autofit] Improve tracing message for extra light flag. + + * src/autofit/aflatin.c (af_latin_metrics_scale_dim): Do it. + +2013-10-15 Chongyu Zhu + + [arm] Fix thumb2 inline assembly under LLVM. + + When using `ADD' with an immediate operand, the instruction is + actually `ADD Rd, Rn, #', 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 + + [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 + + * 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 + + * src/sfnt/ttload.c (tt_face_load_pclt): Fix `pclt_fields'. + +2013-10-02 Dave Arnold + + * 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 + + 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 + + * src/autofit/aflatin.c (af_{grek,cyrl}_uniranges): Fix arrays. + +2013-09-25 suzuki toshiya + + [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 + + 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 + + [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 + + * docs/CHANGES: Updated. + +2013-09-20 Behdad Esfahbod + + 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 + + * include/freetype/ftoutln.h: Correct FT_Outline_Get_Orientation + algorithm description. + +2013-09-11 Werner Lemberg + + [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 + + [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 + Behdad Esfahbod + + 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 + + [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 + + [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 + + [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 + + * src/sfnt/ttload.c (tt_face_load_font_dir): Fix sign typos. + +2013-08-27 Behdad Esfahbod + + 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 + + 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 + + [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 + + [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 + + [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 + + [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 + + 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 + + [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 + + [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 + + [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 + + [autofit] Typo. + + * src/autofit/afblue.hin, src/autofit/afblue.c (GET_UTF8_CHAR): Use + cast. + +2013-08-25 Werner Lemberg + + [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 + + [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 + + [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 + + [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 + + [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 + + * builds/unix/unix-def.in (freetype2.pc): Don't set executable bit. + +2013-08-18 Werner Lemberg + + 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 + + [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 + + [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 + + [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 + + 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 + + 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 + + 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 + + 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 maintenance. + +2013-08-05 Werner Lemberg + + [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 + + * 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 + + [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 + + [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 + + [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 + Werner Lemberg + + [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 + + 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 + + [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 + + [autofit] Variable renaming. + + * src/autofit/aftypes.h (AF_ScriptMetricsRec): + s/clazz/script_class/. + Update all users. + +2013-07-30 suzuki toshiya + + 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 + + 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 + + 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 + + [sfnt] Fix for `make multi' target. + + * src/sfnt/pngshim.c (Load_SBit_Png): Use FT_LOCAL_DEF(). + +2013-07-20 Werner Lemberg + + * docs/INSTALL.GNU: Updated. + +2013-07-20 Behdad Esfahbod + + [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 + + [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 + + [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 + + [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. + Handle `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 + + [sfnt] Ignore invalid magic number in `head' or `bhed'. + + Other font engines seem to ignore it also. Problem reported by + Hin-Tak Leung . + + * 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 + + [smooth] Fix segfault caused by previous commit. + + * src/smooth/ftgrays.c (gray_set_cell): Always compute + `ras.invalid'. + +2013-07-16 David Turner + + [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 + + [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 + + 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 + + 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 + + * docs/CHANGES: Updated. + +2013-06-27 Werner Lemberg + + * src/winfonts/winfnt.c (FNT_Load_Glyph): Fix bitmap width guard. + +2013-06-25 Werner Lemberg + + [cff] Add darkening limit to `darkening-parameters'. + + * src/cff/cffdrivr.c (cff_property_set): Add check. + +2013-06-25 Werner Lemberg + + [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 + + [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 + + [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 + + * builds/freetype.mk (dll): Remove target. + + Problem reported by Jörg Günnewig . + +2013-06-25 Werner Lemberg + + [docmaker] Recognise URLs. + + * src/tools/docmaker/tohtml.py (re_url): New regular expression. + (make_html_para): Use it. + +2013-06-19 Werner Lemberg + + * Version 2.5.0.1 released. + =========================== + + + Tag sources with `VER-2-5-0-1'. + + * include/freetype/config/ftoption.h: Undefine + CFF_CONFIG_OPTION_OLD_ENGINE. + * devel/ftoption.h: Define CFF_CONFIG_OPTION_OLD_ENGINE. + +2013-06-19 Werner Lemberg + + * builds/unix/install.mk (install): Don't create `cache' directory. + + Found by Peter Breitenlohner . + +2013-06-19 Werner Lemberg + + * Version 2.5.0 released. + ========================= + + + Tag sources with `VER-2-5-0'. + + * docs/VERSION.DLL: Update documentation and bump version number to + 2.5.0. + + * README, Jamfile (RefDoc), + builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html, + builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html, + builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html, + builds/win32/visualc/freetype.dsp, + builds/win32/visualc/freetype.vcproj, + builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp, + builds/win32/visualce/freetype.vcproj, + builds/win32/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.4.12/2.5.0/, s/2412/250/. + + * include/freetype/freetype.h (FREETYPE_MINOR): Set to 5. + (FREETYPE_PATCH): Set to 0. + + * builds/unix/configure.raw (version_info): Set to 16:2:10. + + * src/base/ftobjs.c (FT_Open_Face): Pacify compiler. + * src/truetype/ttinterp.c (Ins_MSIRP, Ins_MIRP): Ditto. + +2013-06-18 Werner Lemberg + + Fix Savannah bug #39269. + + * src/base/ftgloadr.c (FT_GlyphLoader_CheckPoints): Free memory in + case of reallocation failures. + +2013-06-18 Andrew Church + + Fix Savannah bug #39266. + + If memory allocations fail at certain points while opening a font, + FreeType can either crash due to a NULL dereference or leak memory. + + * include/freetype/internal/ftobjs.c (FT_Face_InternalRec, + FT_LibraryRec): Make `refcount' a signed integer. If, for example, + FT_Open_Face() fails in a memory allocation before the face's + reference count is set to 1, a subsequent `FT_Done_Library' call + would otherwise loop over `FT_Done_Face' 2^32 times before freeing + the face. + + * src/base/ftobjs.c (open_face): Initialize `stream' and friends + earlier. + (FT_Open_Face) : Behave correctly if `node' is NULL. + (FT_Destroy_Module) : Check that `renderer_clazz' is valid. + +2013-06-14 Werner Lemberg + + * src/smooth/ftgrays.c One final pragma to silence 64-bit MSVC. + +2013-06-06 Dave Arnold + Werner Lemberg + + [cff] Add code to Adobe's engine to handle ppem > 2000. + + * src/cff/cffgload.c (cff_slot_load): If we get + FT_Err_Glyph_Too_Big, retry unhinted and scale up later on. + +2013-06-12 Werner Lemberg + + Another try on pragmas. + + * include/freetype/internal/ftdebug.h: Move pragmas to... + * include/freetype/internal/internal.h: ... this file since it gets + included by all source files. + * include/freetype/internal/ftserv.h: Remove pragma which has no + effect. + +2013-06-12 Werner Lemberg + + * include/freetype/internal/ftdebug.h: Disable MSVC warning C4127. + + This partially undoes commit 3f6e0e0c. + +2013-06-12 Werner Lemberg + + More compiler warning fixes. + + */*: Use cast to `FT_Bool' (or `Bool') where appropriate. + +2013-06-10 Werner Lemberg + + [truetype] Improve handling of broken sbit advance widths. + + * src/truetype/ttgload.c (TT_Load_Glyph): Use the glyph's (scaled) + `linearHoriAdvance' if the sbit's `horiAdvance' value is zero. + + Cf. font `Fixedsys Excelsior' v3.01 (FSEX300.ttf), glyph A, 16ppem. + +2013-06-10 Werner Lemberg + + [sfnt] Improve embedded bitmap tracing. + + * src/base/ftobjs.c (FT_Request_Size): Move trace message regarding + bitmap strike match to... + (FT_Match_Size): This function. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_metrics, + 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): Decorate with tracing messages. + +2013-06-10 Werner Lemberg + + Fix Savannah bug #39160. + + * src/truetype/ttinterp.c (Ins_SDPVTL): Set projection vector too + for the degenerate case. + +2013-06-09 David Turner + + * src/cache/ftcmanag.c (FTC_Manager_Reset): Add missing cache flush. + + This code, present since eight(!) years in the unused `CACHE' + branch, has been forgotten to apply to the master branch. It's + really amazing that noone has ever complained since + `FTC_Manager_Reset' is pretty useless without flushing the cache. + +2013-06-07 Werner Lemberg + + Add and improve pragmas for MSVC compiler. + + * include/freetype/internal/ftdebug.h: Remove pragmas. + * include/freetype/internal/ftserv.h: Use push and pop for pragmas. + * include/freetype/internal/ftvalid.h: Handle warning C4324. + * src/base/ftobjs.c: Use push and pop for pragmas. + * src/gzip/ftgzip.c: Handle warning C4244. + +2013-06-07 Werner Lemberg + + [cff] s/cf2_getGlyphWidth/cf2_getGlyphOutline/. + + * src/cff/cf2font.c, src/cff/cf2font.h, src/cff/cf2ft.c: Do it. + +2013-06-06 Dave Arnold + + [cff] Add early exit feature for width-only calls. + + This is for `FT_Get_Advance'. + + There are 7 places where the spec says the width can be defined: + + hstem/hstemhm + vstem/vstemhm + cntrmask/hintmask + hmoveto + vmoveto + rmoveto + endchar + + * src/cff/cf2intrp.c (cf2_doStems): Exit early for width-only calls, + if possible. + + (cf2_interpT2CharString) , , + , , , + , : Exit early for width-only calls. + +2013-06-06 Werner Lemberg + + Next round of compiler fixes. + + * builds/win32/ftdebug.c, builds/wince/ftdebug.c (ft_debug_init): + Add proper cast. + + * include/freetype/internal/ftserv.h (FT_SERVICE_UNAVAILABLE): Fix + cast. + * include/freetype/internal/ftstream.h: Decorate stream and frame + macros with `FT_Long' and `FT_ULong' as appropriate. + + * src/base/ftrfork.c (raccess_guess_darwin_hfsplus, + raccess_guess_darwin_newvfs): Use cast. + + * src/bdf/bdflib.c (_bdf_set_default_spacing): Use cast. + + * src/cache/ftcmanag.c (FTC_Manager_Check): Fix cast. + * src/cache/ftcmanag.h (FTC_ManagerRec): Ditto. + + * src/cff/cf2arrst.c (cf2_arrstack_setNum_Elements): Use cast. + * src/cff/cf2ft.c (cf2_freeSeacComponent): Ditto. + * src/cff/cffobjs.c (remove_subset_prefix, remove_style): Ditto. + + * src/cid/cidparse.c (cid_parser_new): Use cast. + + * src/pcf/pcfdrivr.c (PCF_Glyph_Load): Use cast. + + * src/psaux/psobjs.c (reallocate_t1_table): Fix argument type. + + * src/raster/ftraster.c (ft_black_reset): Use cast. + + * src/truetype/ttgxvar.c (FT_Stream_FTell): Use cast. + (ALL_POINTS): Fix cast. + + * src/type1/t1driver.c (t1_ps_get_font_value): Add casts. + * src/type1/t1parse.c (T1_Get_Private_Dict): Add cast. + +2013-06-05 Dave Arnold + + Fix more MSVC Win32 compiler warnings. + + * src/base/ftobjs.c: Fix typo in MS pragma. + + * src/base/bdflib.c (_bdf_set_default_spacing, _bdf_add_property): + `lineno' is only used in debug mode. + + * src/cff/cf2ft.c (cf2_builder_moveTo): `params' is only used in + debug mode. + +2013-06-05 Werner Lemberg + + Fix compiler warnings. + + * include/freetype/internal/ftmemory.h: Decorate memory allocation + macros with `FT_Long' where appropriate. + Remove duplicate of FT_MEM_QRENEW_ARRAY definition. + + * src/base/ftbitmap.c (ft_gray_for_premultiplied_srgb_bgra): Use + cast. + + * src/base/ftobjs.c: Add warning disabling pragma for MSVC while + including `md5.c'. + + * src/cff/cf2intrp.c (cf2_interpT2CharString) : Add + cast. + + * src/sfnt/ttsbit.c (tt_sbit_decoder_load_compound): Fix casts. + (tt_sbit_decoder_load_bitmap): Beautification. + + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Initialize + variables (earlier). + + * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Pacify compiler. + + * src/truetype/ttgxvar.c (TT_Get_MM_Var): Use unsigned constants + where appropriate. + + * src/type1/t1load.c (T1_Get_MM_Var): Ditto. + +2013-06-04 Werner Lemberg + + * src/cff/cf2font.c (cf2_getGlyphWidth): Initialize `advWidth'. + + Problem reported by Ingmar Sittl . + +2013-06-04 Werner Lemberg + + Apply fixes for cppcheck nitpicks. + + http://cppcheck.sourceforge.net/ + + The call was (from the top-level of the FreeType tree): + + cppcheck --force \ + --enable=all \ + -I include \ + -I include/freetype/ \ + -I include/freetype/config/ \ + -I include/freetype/internal/ \ + . &> cppcheck.log + + Note that the current version heavily chokes on FreeType, delivering + many wrong results. I will report those issues to the cppcheck team + so that a newer version gives improved results hopefully. + + */* Improve variable scopes. + */* Remove redundant initializations which get overwritten. + + * src/base/ftmac.c, builds/mac/ftmac.c (count_faces_scalable): + Remove unused variable. + + * src/base/ftdbgmem.c (ft_mem_table_destroy): `table' can't be zero. + + * src/gxvalid/gxvkern.c (gxv_kern_subtable_fmt1_entry_validate): + Remove functionless code. + + * src/tools/ftrandom.c (main): Fix memory leak. + +2013-06-03 Werner Lemberg + + Add CFF_CONFIG_OPTION_OLD_ENGINE configuration option. + + This controls whether the old FreeType CFF engine gets compiled into + FreeType. It is now disabled by default. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (CFF_CONFIG_OPTION_OLD_ENGINE): New macro. + + * src/cff/cffdrivr.c (cff_property_set), src/cff/cffgload.c + (CFF_Operator, cff_argument_counts, cff_builder_add_point, + cff_operator_seac, cff_decoder_parse_charstrings, cff_slot_load), + src/cff/cffgload.h, src/cff/cffobjs.c (cff_driver_init): Use + CFF_CONFIG_OPTION_OLD_ENGINE to guard the affected code. + + * docs/CHANGES: Updated. + +2013-06-02 Werner Lemberg + + Fix PNG library handling. + + * builds/unix/configure.raw: Don't use LIBPNG_LIBS but + LIBPNG_LDFLAGS. + +2013-05-23 Behdad Esfahbod + + Add support for color embedded bitmaps (eg. color emoji). + + A new load flag, FT_LOAD_COLOR, makes FreeType load color + embedded-bitmaps, following this draft specification + + https://color-emoji.googlecode.com/git/specification/v1.html + + which defines two new SFNT tables, `CBDT' and `CBLC' (named and + modeled after `EBDT' and `EBLC', respectively). The color bitmaps + are stored in the new FT_PIXEL_MODE_BGRA format to represent BGRA + pre-multiplied sRGB images. If PNG support is available, PNG color + images as defined in the same proposed specification are supported + also. + + Note that color bitmaps are converted to grayscale if client didn't + ask for color. + + * builds/unix/configure.raw: Search for libpng. + Add `--without-png' option. + + * devel/ftoption.h, include/freetype/config/ftoption.h + (FT_CONFIG_OPTION_USE_PNG): New macro. + + * include/freetype/freetype.h (FT_LOAD_COLOR): New load flag. + + * include/freetype/ftimage.h (FT_Pixel_Mode): Add + `FT_PIXEL_MODE_BGRA'. + + * include/freetype/tttags.h (TTAG_CBDT, TTAG_CBLC): New tags. + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Updated. + (ft_gray_for_premultiplied_srgb_bgra): New function. + (FT_Bitmap_Convert): Handle FT_PIXEL_MODE_BGRA. + + * src/sfnt/pngshim.c, src/sfnt/pngshim.h: New files. + + * src/sfnt/sfnt.c: Include `pngshim.c'. + + * src/sfnt/ttsbit.c: Include FT_BITMAP_H and `pngshim.h' + (tt_face_load_eblc): Load `CBLC'. + (tt_sbit_decoder_init): Load `CBDT'. + (tt_sbit_decoder_alloc_bitmap): Pass load flags to select between + color and grayscale bitmaps. + Set `num_grays'. This is used by `ftview' to choose the blending + algorithm. + (tt_sbit_decoder_load_byte_aligned, + tt_sbit_decoder_load_bit_aligned, tt_sbit_decoder_load_compound, + tt_sbit_decoder_load_image): Pass load flag. + s/write/pwrite/. + Don't call `tt_sbit_decoder_alloc_bitmap'. + Updated. + (tt_sbit_decoder_load_png) [FT_CONFIG_OPTION_USE_PNG]: New function. + (tt_sbit_decoder_load_bitmap): Pass load flag. + Handle new glyph formats 17, 18, and 19. + Call `tt_sbit_decoder_alloc_bitmap'. + Flatten color bitmaps if necessary. + (tt_face_load_sbit_image): Updated. + + * src/sfnt/rules.mk (SFNT_DRV_SRC): Add `pngshim.c'. + + * docs/CHANGES: Updated. + +2013-05-24 Guenter + + Apply Savannah patch #8055. + + Make `apinames' create an import file for NetWare. + + * src/tools/apinames.c (PROGRAM_VERSION): Set to 0.2. + (OutputFormat): Add `OUTPUT_NETWARE_IMP'. + (names_dump): Handle it. + (usage): Updated. + (main): Handle new command line flag `-wN'. + +2013-05-23 Behdad Esfahbod + + Compilation fix. + + * src/truetype/ttinterp.c (TT_RunIns) + [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: Make it work. + +2013-05-22 Infinality + + [truetype] Formatting and an additional subpixel tweak. + + * src/truetype/ttinterp.c (Ins_SHPIX): Formatting fix. + * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): + Revert previous modification for Verdana clones. + +2013-05-22 Infinality + + [truetype] Adjust subpixel zp2 moves and tweak rules. + + These modifications fix thin diagonal stems in some legacy fonts. + + * src/truetype/ttinterp.c (Direct_Move_X): Remove unused macro. + (Move_Zp2_Point): Don't always disable x moves for subpixel rendering. + (Ins_SHP): Disable x moves here for subpixel rendering. + (Ins_SHPIX): Only disable x moves in compatibility mode. + Split out zp2 move reversals and reorder conditional respectively. + + * src/truetype/ttsubpix.c (SKIP_NONPIXEL_Y_MOVES_Rules): Fix oversight. + Only adjust Verdana clones for 17 ppem. + (SKIP_NONPIXEL_Y_MOVES_Rules_Exceptions): Add Courier New. + (ALWAYS_SKIP_DELTAP_Rules): Found additional cases for Arial `s'. + +2013-05-20 Infinality + + [truetype] Simplify and improve subpixel function detection. + + Some small enhancements have allowed the removal of many macros and + the simplification of existing rules in `ttsubpix.c'. + + * src/truetype/ttsubpix.h (SPH_TWEAK_ALLOW_X_DMOVEX, + SPH_TWEAK_ALLOW_X_MOVE_ZP2, + SPH_TWEAK_DELTAP_SKIP_EXAGGERATED_VALUES, + SPH_TWEAK_SKIP_INLINE_DELTAS, SPH_TWEAK_MIRP_CVT_ZERO): Removed. + (SPH_TWEAK_SKIP_NONPIXEL_Y_MOVES_DELTAP): New rule macro. + + * src/truetype/ttsubpix.c: Updated affected rules. + + * src/truetype/ttinterp.c (Direct_Move_X): Updated. + (INS_FDEF): Add additional function detection. + (INS_ENDF): Set runtime flag. + (Ins_CALL): Skip the call under certain conditions. + Remove bad code. + (Ins_LOOPCALL): Skip the call under certain conditions. + Remove bad code. + (Move_Zp2_Point): Updated. + (Ins_SHPIX): Updated. + Skip the move under some situations. + (Ins_MIAP): Improve conditions. + (Ins_MIRP): Updated. + (Ins_DELTAP): Skip move under certain conditions. + Simplify conditions. + (TT_RunIns): Updated. + Add code to handle new function detection. + Trace messages. + +2013-05-17 Werner Lemberg + + Update more FT_Err_XXX macros using FT_ERR and FT_THROW; + + * builds/amiga/src/base/ftsystem.c, builds/mac/ftmac.c, + builds/unix/ftsystem.c, builds/vms/ftsystem.c: Do it. + +2013-05-15 Werner Lemberg + + [truetype] Add `interpreter-version' property. + + This makes the option TT_CONFIG_OPTION_SUBPIXEL_HINTING controllable + at runtime. + + * include/freetype/ftttdrv.h: New file. + + * include/freetype/config/ftheader.h (FT_TRUETYPE_DRIVER_H): New + macro. + + * src/truetype/ttdriver.c: Include FT_TRUETYPE_DRIVER_H. + (tt_property_set, tt_property_get): Fill templates. + + * src/truetype/ttobjs.h (TT_DriverRec): Add `interpreter_version' + member. + Remove unused `extension_component' member. + + * src/truetype/ttgload.c: Include FT_TRUETYPE_DRIVER_H. + (tt_get_metrics, TT_Hint_Glyph, TT_Process_Simple_Glyph, + compute_glyph_metrics, tt_loader_init): Use `interpreter_version'. + + * src/truetype/ttinterp.c: Include FT_TRUETYPE_DRIVER_H. + (SUBPIXEL_HINTING): New macro to check `interpreter_version' flag. + Update all affected functions to use it. + Use TT_INTERPRETER_VERSION_XXX where appropriate. + + * src/truetype/ttobjs.c: Include FT_TRUETYPE_DRIVER_H. + (tt_driver_init): Initialize `interpreter_version'. + + * src/truetype/ttsubpix.c: Include FT_TRUETYPE_DRIVER_H. + Use TT_INTERPRETER_VERSION_XXX where appropriate. + +2013-05-13 Werner Lemberg + + [truetype] Avoid empty source file. + + * src/truetype/ttsubpix.c [!TT_CONFIG_OPTION_SUBPIXEL_HINTING]: + Provide dummy typedef. + +2013-05-13 Werner Lemberg + + * src/cff/cf2font.c (cf2_getGlyphWidth): Fix uninitialized variable. + + Fix suggested by Vaibhav Nagarnaik . + +2013-05-13 Brian Nixon + + Fix Savannah bug #38970. + + * src/base/ftdebug.c, builds/win32/ftdebug.c, + builds/wince/ftdebug.c, builds/amiga/src/base/ftdebug.c + (ft_debug_init): Don't read past the environment variable FT2_DEBUG. + +2013-05-12 Werner Lemberg + + [truetype] Add framework for TrueType properties. + + * src/truetype/ttdriver.c: Include FT_SERVICE_PROPERTIES_H. + (tt_property_set, tt_property_get): New functions, still empty. + Define `tt_service_properties' service. + Update `tt_services'. + + * src/truetype/ttpic.h: Include FT_SERVICE_PROPERTIES_H. + (TT_SERVICE_PROPERTIES_GET): New macro. + (TTModulePIC): Add `tt_service_properties'. + +2013-05-12 Werner Lemberg + + Fix Savannah bug #38967. + + * src/base/ftcalc.c (FT_DivFix) [FT_LONG64]: Fix cast. + +2013-05-12 Werner Lemberg + + Introduce unsigned 64bit type (if available). + + * include/freetype/config/ftconfig.h: Define FT_UINT64 if available. + [FT_LONG64]: Provide FT_UInt64. + + * builds/unix/ftconfig.in: Synchronized. + +2013-05-12 Werner Lemberg + + Fix Savannah bug #38968. + + * include/freetype/ftmodapi.h: Add `FT_EXPORT' to + FT_Property_{Set,Get}. + * src/base/ftobjs.c: Add `FT_EXPORT_DEF' to + FT_Property_{Set,Get}. + +2013-05-10 Werner Lemberg + + [sfnt] Clean up bitmap code. + + * src/sfnt/ttsbit.c: Deleted. + * src/sfnt/ttsbit0.c: Renamed to `ttsbit.c'. + * rules.mk (SFNT_DRV_H): Updated. + +2013-05-10 Werner Lemberg + + */* [FT_CONFIG_OPTION_OLD_INTERNALS]: Remove macro and guarded code. + +---------------------------------------------------------------------------- + +Copyright 2013-2016 by +David Turner, Robert Wilhelm, and Werner Lemberg. + +This file is part of the FreeType project, and may only be used, modified, +and distributed under the terms of the FreeType project license, +LICENSE.TXT. By continuing to use, modify, or distribute this file you +indicate that you have read the license and understand and accept it +fully. + + +Local Variables: +version-control: never +coding: utf-8 +End: diff --git a/Jamfile b/Jamfile index 16e097e..9d837ba 100644 --- a/Jamfile +++ b/Jamfile @@ -1,6 +1,6 @@ # FreeType 2 top Jamfile. # -# Copyright 2001-2014 by +# Copyright 2001-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -73,20 +73,20 @@ FT2_BUILD_INCLUDE ?= ; FT2_COMPONENTS ?= autofit # auto-fitter base # base component (public APIs) bdf # BDF font driver + bzip2 # support for bzip2-compressed PCF font cache # cache sub-system cff # CFF/CEF font driver cid # PostScript CID-keyed font driver - pcf # PCF font driver - bzip2 # support for bzip2-compressed PCF font gzip # support for gzip-compressed PCF font lzw # support for LZW-compressed PCF font + pcf # PCF font driver pfr # PFR/TrueDoc font driver psaux # common PostScript routines module pshinter # PostScript hinter module psnames # PostScript names handling raster # monochrome rasterizer - smooth # anti-aliased rasterizer sfnt # SFNT-based format support routines + smooth # anti-aliased rasterizer truetype # TrueType font driver type1 # PostScript Type 1 font driver type42 # PostScript Type 42 (embedded TrueType) driver @@ -121,17 +121,16 @@ if $(DEBUG_HINTER) } -# We need `freetype2/include' in the current include path in order to +# We need `include' in the current include path in order to # compile any part of FreeType 2. -#: updating documentation for upcoming release - +# HDRS += $(FT2_INCLUDE) ; # We need to #define FT2_BUILD_LIBRARY so that our sources find the # internal headers # -DEFINES += FT2_BUILD_LIBRARY ; +CCFLAGS += -DFT2_BUILD_LIBRARY ; # Uncomment the following line if you want to build individual source files # for each FreeType 2 module. This is only useful during development, and @@ -140,12 +139,13 @@ DEFINES += FT2_BUILD_LIBRARY ; # FT2_MULTI = true ; -# The file is used to define macros that are later used -# in #include statements. It needs to be parsed in order to record these -# definitions. +# The files `ftheader.h', `internal.h', and `ftserv.h' are used to define +# macros that are later used in #include statements. They need to be parsed +# in order to record these definitions. # -HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ; -HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; +HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype config ftheader.h ] ; +HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype internal internal.h ] ; +HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) freetype internal ftserv.h ] ; # Now include the Jamfile in `freetype2/src', used to drive the compilation @@ -153,7 +153,7 @@ HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; # SubInclude FT2_TOP $(FT2_SRC_DIR) ; -# Handle the generation of the `ftexport.sym' file which contain the list +# Handle the generation of the `ftexport.sym' file, which contains the list # of exported symbols. This can be used on Unix by libtool. # SubInclude FT2_TOP $(FT2_SRC_DIR) tools ; @@ -161,7 +161,20 @@ SubInclude FT2_TOP $(FT2_SRC_DIR) tools ; rule GenExportSymbols { local apinames = apinames$(SUFEXE) ; - local headers = [ Glob $(2) : *.h ] ; + local aheader ; + local headers ; + + for aheader in [ Glob $(2) : *.h ] + { + switch $(aheader) + { + case */ftmac.h : + if ( $(MAC) || $(OS) = MACOSX ) { + headers += $(aheader) ; + } + case *.h : headers += $(aheader) ; + } + } LOCATE on $(1) = $(ALL_LOCATE_TARGET) ; @@ -177,7 +190,7 @@ actions GenExportSymbols1 bind APINAMES $(APINAMES) $(2) > $(1) } -GenExportSymbols ftexport.sym : include include/cache ; +GenExportSymbols ftexport.sym : include/freetype ; # Test files (hinter debugging). Only used by FreeType developers. # @@ -195,7 +208,12 @@ rule RefDoc actions RefDoc { - python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.5.5 --output=$(DOC_DIR) $(FT2_INCLUDE)/*.h $(FT2_INCLUDE)/config/*.h + python $(FT2_SRC)/tools/docmaker/docmaker.py + --prefix=ft2 + --title=FreeType-2.6.5 + --output=$(DOC_DIR) + $(FT2_INCLUDE)/freetype/*.h + $(FT2_INCLUDE)/freetype/config/*.h } RefDoc refdoc ; diff --git a/Jamrules b/Jamrules index d8d1c7e..1e2d9b7 100644 --- a/Jamrules +++ b/Jamrules @@ -1,6 +1,6 @@ # FreeType 2 JamRules. # -# Copyright 2001, 2002, 2003 by +# Copyright 2001-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/Makefile b/Makefile index c1fa16c..e370cae 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2002, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/README b/README index f00a1ab..23c10ab 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ - FreeType 2.5.5 + FreeType 2.6.5 ============== Homepage: http://www.freetype.org @@ -24,9 +24,9 @@ and download one of the following files. - freetype-doc-2.5.5.tar.bz2 - freetype-doc-2.5.5.tar.gz - ftdoc255.zip + freetype-doc-2.6.5.tar.bz2 + freetype-doc-2.6.5.tar.gz + ftdoc265.zip To view the documentation online, go to @@ -42,6 +42,7 @@ general use and discussion: freetype@nongnu.org engine internals, porting, etc.: freetype-devel@nongnu.org announcements: freetype-announce@nongnu.org + git repository tracker: freetype-commit@nongnu.org The lists are moderated; see @@ -70,7 +71,7 @@ ---------------------------------------------------------------------- -Copyright 2006-2014 by +Copyright 2006-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/README.git b/README.git index 021c121..34ee82d 100644 --- a/README.git +++ b/README.git @@ -37,7 +37,7 @@ repository. ---------------------------------------------------------------------- -Copyright 2005-2010, 2013 by +Copyright 2005-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/autogen.sh b/autogen.sh index cc0e661..78053cc 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2005-2010, 2013 by +# Copyright 2005-2016 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.h` +eval `sed -nf version.sed include/freetype/freetype.h` # We set freetype-patch to an empty value if it is zero. if test "$freetype_patch" = ".0"; then @@ -156,7 +156,6 @@ run aclocal -I . --force run $LIBTOOLIZE --force --copy --install run autoconf --force -chmod +x mkinstalldirs chmod +x install-sh cd ../.. diff --git a/builds/amiga/README b/builds/amiga/README index 85fcc43..eae9e33 100644 --- a/builds/amiga/README +++ b/builds/amiga/README @@ -1,7 +1,7 @@ README for the builds/amiga subdirectory. -Copyright 2005, 2013 by +Copyright 2005-2016 by Werner Lemberg and Detlef Würkner. This file is part of the FreeType project, and may only be used, modified, @@ -51,8 +51,8 @@ directory. The results are: - ftdebug.o, an object module containing the standard version of the debugging code which uses vprintf() and exit() (not pure). - Debugging can be turned on in FT:include/config/ftoption.h and with - FT_SetTraceLevel(). + Debugging can be turned on in FT:include/freetype/config/ftoption.h + and with FT_SetTraceLevel(). - ftdebugpure.o, an object module containing the pure version of the debugging code which uses KVPrintf() from lib:debug.lib and no @@ -64,14 +64,15 @@ directory. The results are: ftsystem.o would force ALL FreeType2 modules to be linked to your program, I decided to use a different scheme: You must #include FT:src/base/ftinit.c in your sourcecode and specify with #define - statements which modules you need. See include/config/ftmodule.h. + statements which modules you need. See + include/freetype/config/ftmodule.h. To use in your own programs: - Insert the #define and #include statements from top of - include/config/ftmodule.h in your source code and uncomment the - #define statements for the FreeType2 modules you need. + include/freetype/config/ftmodule.h in your source code and + uncomment the #define statements for the FreeType2 modules you need. - You can use either PARAMETERS=REGISTER or PARAMETERS=STACK for calling the FreeType2 functions, because the link library and the @@ -100,8 +101,8 @@ To adapt to other compilers: useful for the src directory). - An example of how to replace/workaround a problematic include file - is include/config/ftconfig.h; it changes a #define that would - prevent SAS/C from generating XDEF's where it should do that and + is include/freetype/config/ftconfig.h; it changes a #define that + would prevent SAS/C from generating XDEF's where it should do that and then includes the standard FreeType2 include file. Local Variables: diff --git a/builds/amiga/include/config/ftconfig.h b/builds/amiga/include/config/ftconfig.h index a73ace6..0cb65b6 100644 --- a/builds/amiga/include/config/ftconfig.h +++ b/builds/amiga/include/config/ftconfig.h @@ -4,7 +4,7 @@ /* */ /* Amiga-specific configuration file (specification only). */ /* */ -/* Copyright 2005-2007, 2013 by */ +/* Copyright 2005-2016 by */ /* Werner Lemberg and Detlef Würkner. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -34,9 +34,9 @@ /* Now include the original file */ #ifndef __MORPHOS__ #ifdef __SASC -#include "FT:include/config/ftconfig.h" +#include "FT:include/freetype/config/ftconfig.h" #else -#include "/FT/include/config/ftconfig.h" +#include "/FT/include/freetype/config/ftconfig.h" #endif #else /* We must define that, it seems that @@ -45,7 +45,7 @@ * binaries from http://www.morphos.de) */ #define _LIBC_LIMITS_H_ -#include "/FT/include/config/ftconfig.h" +#include "/FT/include/freetype/config/ftconfig.h" #endif /* diff --git a/builds/amiga/include/config/ftmodule.h b/builds/amiga/include/config/ftmodule.h index 5873bab..bbff9c5 100644 --- a/builds/amiga/include/config/ftmodule.h +++ b/builds/amiga/include/config/ftmodule.h @@ -4,7 +4,7 @@ /* */ /* Amiga-specific FreeType module selection. */ /* */ -/* Copyright 2005 by */ +/* Copyright 2005-2016 by */ /* Werner Lemberg and Detlef Würkner. */ /* */ /* This file is part of the FreeType project, and may only be used, */ diff --git a/builds/amiga/makefile b/builds/amiga/makefile index 8a1e4c6..34ba77d 100644 --- a/builds/amiga/makefile +++ b/builds/amiga/makefile @@ -5,7 +5,7 @@ # -# Copyright 2005-2007, 2009, 2013 by +# Copyright 2005-2016 by # Werner Lemberg and Detlef Würkner. # # This file is part of the FreeType project, and may only be used, modified, @@ -43,7 +43,7 @@ # # link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o # (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or -# FT_DEBUG_LEVEL_TRACE in include/config/ftoption.h). +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). all: libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o @@ -96,6 +96,9 @@ ftbitmap.ppc.o: $(FTSRC)/base/ftbitmap.c ftcid.ppc.o: $(FTSRC)/base/ftcid.c $(CC) -c $(CFLAGS) -o $@ $< +ftfntfmt.ppc.o: $(FTSRC)/base/ftfntfmt.c + $(CC) -c $(CFLAGS) -o $@ $< + ftfstype.ppc.o: $(FTSRC)/base/ftfstype.c $(CC) -c $(CFLAGS) -o $@ $< @@ -135,9 +138,6 @@ fttype1.ppc.o: $(FTSRC)/base/fttype1.c ftwinfnt.ppc.o: $(FTSRC)/base/ftwinfnt.c $(CC) -c $(CFLAGS) -o $@ $< -ftxf86.ppc.o: $(FTSRC)/base/ftxf86.c - $(CC) -c $(CFLAGS) -o $@ $< - # # FreeType2 library autofitting module # @@ -269,11 +269,11 @@ gxvalid.ppc.o: $(FTSRC)/gxvalid/gxvalid.c otvalid.ppc.o: $(FTSRC)/otvalid/otvalid.c $(CC) -c $(CFLAGS) -o $@ $< -BASEPPC = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ - ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o ftgxval.ppc.o \ - ftlcdfil.ppc.o ftmm.ppc.o ftotval.ppc.o ftpatent.ppc.o ftpfr.ppc.o \ - ftstroke.ppc.o ftsynth.ppc.o fttype1.ppc.o ftwinfnt.ppc.o \ - ftxf86.ppc.o +BASEPPC = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ + ftfntfmt.ppc.oftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o \ + ftgxval.ppc.o ftlcdfil.ppc.o ftmm.ppc.o ftotval.ppc.o \ + ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o \ + fttype1.ppc.o ftwinfnt.ppc.o DEBUGPPC = ftdebug.ppc.o ftdebugpure.ppc.o diff --git a/builds/amiga/makefile.os4 b/builds/amiga/makefile.os4 index a2e6ffc..a25dd3e 100644 --- a/builds/amiga/makefile.os4 +++ b/builds/amiga/makefile.os4 @@ -4,7 +4,7 @@ # -# Copyright 2005-2007, 2009, 2013 by +# Copyright 2005-2016 by # Werner Lemberg and Detlef Würkner. # # This file is part of the FreeType project, and may only be used, modified, @@ -40,7 +40,7 @@ # # link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o # (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or -# FT_DEBUG_LEVEL_TRACE in include/config/ftoption.h). +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). all: assign libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o @@ -99,6 +99,9 @@ ftdebug.ppc.o: FT:src/base/ftdebug.c ftdebugpure.ppc.o: src/base/ftdebug.c $(CC) -c $(CFLAGS) -o $@ src/base/ftdebug.c +ftfntfmt.ppc.o: FT:src/base/ftfntfmt.c + $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfntfmt.c + ftfstype.ppc.o: FT:src/base/ftfstype.c $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfstype.c @@ -138,9 +141,6 @@ fttype1.ppc.o: FT:src/base/fttype1.c ftwinfnt.ppc.o: FT:src/base/ftwinfnt.c $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftwinfnt.c -ftxf86.ppc.o: FT:src/base/ftxf86.c - $(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftxf86.c - # # FreeType2 library autofitting module # @@ -273,11 +273,11 @@ gxvalid.ppc.o: FT:src/gxvalid/gxvalid.c otvalid.ppc.o: FT:src/otvalid/otvalid.c $(CC) -c $(CFLAGS) -o $@ /FT/src/otvalid/otvalid.c -BASE = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ - ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o ftgxval.ppc.o \ - ftlcdfil.ppc.o ftmm.ppc.o ftotval.ppc.o ftpatent.ppc.o ftpfr.ppc.o \ - ftstroke.ppc.o ftsynth.ppc.o fttype1.ppc.o ftwinfnt.ppc.o \ - ftxf86.ppc.o +BASE = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ + ftfntfmt.ppc.o ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o \ + ftgxval.ppc.o ftlcdfil.ppc.o ftmm.ppc.o ftotval.ppc.o \ + ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o \ + fttype1.ppc.o ftwinfnt.ppc.o DEBUG = ftdebug.ppc.o ftdebugpure.ppc.o diff --git a/builds/amiga/smakefile b/builds/amiga/smakefile index aee7fb9..723a890 100644 --- a/builds/amiga/smakefile +++ b/builds/amiga/smakefile @@ -3,7 +3,7 @@ # -# Copyright 2005-2007, 2009, 2013 by +# Copyright 2005-2016 by # Werner Lemberg and Detlef Würkner. # # This file is part of the FreeType project, and may only be used, modified, @@ -40,11 +40,11 @@ # # link your programs with ft2_680x0.lib and either ftsystem.o or ftsystempure.o # (and either ftdebug.o or ftdebugpure.o if you enabled FT_DEBUG_LEVEL_ERROR or -# FT_DEBUG_LEVEL_TRACE in include/config/ftoption.h). +# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). -OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfstype.o ftgasp.o \ - ftglyph.o ftgxval.o ftlcdfil.o ftmm.o ftotval.o ftpatent.o ftpfr.o \ - ftstroke.o ftsynth.o fttype1.o ftwinfnt.o ftxf86.o +OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfntfmt.o ftfstype.o \ + ftgasp.o ftglyph.o ftgxval.o ftlcdfil.o ftmm.o ftotval.o \ + ftpatent.o ftpfr.o ftstroke.o ftsynth.o fttype1.o ftwinfnt.o OBJSYSTEM = ftsystem.o ftsystempure.o @@ -133,6 +133,8 @@ ftbitmap.o: $(CORE)base/ftbitmap.c sc $(SCFLAGS) objname=$@ $< ftcid.o: $(CORE)base/ftcid.c sc $(SCFLAGS) objname=$@ $< +ftfntfmt.o: $(CORE)base/ftfntfmt.c + sc $(SCFLAGS) objname=$@ $< ftfstype.o: $(CORE)base/ftfstype.c sc $(SCFLAGS) objname=$@ $< ftgasp.o: $(CORE)base/ftgasp.c @@ -159,8 +161,6 @@ fttype1.o: $(CORE)base/fttype1.c sc $(SCFLAGS) objname=$@ $< ftwinfnt.o: $(CORE)base/ftwinfnt.c sc $(SCFLAGS) objname=$@ $< -ftxf86.o: $(CORE)base/ftxf86.c - sc $(SCFLAGS) objname=$@ $< # # freetype library autofitter module diff --git a/builds/amiga/src/base/ftdebug.c b/builds/amiga/src/base/ftdebug.c index 39688af..4ac6eef 100644 --- a/builds/amiga/src/base/ftdebug.c +++ b/builds/amiga/src/base/ftdebug.c @@ -4,7 +4,7 @@ /* */ /* Debugging and logging component for amiga (body). */ /* */ -/* Copyright 1996-2002, 2004, 2005, 2013 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -176,7 +176,7 @@ /* the memory and stream components which are set to 7 and 5, */ /* respectively. */ /* */ - /* See the file for details of the */ + /* See the file `include/freetype/internal/fttrace.h' for details of the */ /* available toggle names. */ /* */ /* The level must be between 0 and 7; 0 means quiet (except for serious */ diff --git a/builds/amiga/src/base/ftsystem.c b/builds/amiga/src/base/ftsystem.c index 42a552d..080eaef 100644 --- a/builds/amiga/src/base/ftsystem.c +++ b/builds/amiga/src/base/ftsystem.c @@ -4,7 +4,7 @@ /* */ /* Amiga-specific FreeType low-level system interface (body). */ /* */ -/* Copyright 1996-2002, 2005-2007, 2010, 2013 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */ /* */ /* This file is part of the FreeType project, and may only be used, */ diff --git a/builds/ansi/ansi-def.mk b/builds/ansi/ansi-def.mk index 2c58572..933232d 100644 --- a/builds/ansi/ansi-def.mk +++ b/builds/ansi/ansi-def.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/ansi/ansi.mk b/builds/ansi/ansi.mk index 32b3bac..19a3e1f 100644 --- a/builds/ansi/ansi.mk +++ b/builds/ansi/ansi.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/atari/ATARI.H b/builds/atari/ATARI.H index 9f78c92..4ddd2eb 100644 --- a/builds/atari/ATARI.H +++ b/builds/atari/ATARI.H @@ -1,4 +1,4 @@ -#if defined( __GXVALID_H__ ) +#if defined( GXVALID_H_ ) #pragma warn -aus /* too many unevaluated variables in gxvalid */ #endif diff --git a/builds/atari/README.TXT b/builds/atari/README.TXT index 04eec63..ffe6545 100644 --- a/builds/atari/README.TXT +++ b/builds/atari/README.TXT @@ -18,8 +18,8 @@ To compile FreeType 2 as a library the following changes must be applied: - The file `freetype2/include/Ft2build.h' must be patched as follows to include ATARI.H: - #ifndef __FT2_BUILD_GENERIC_H__ - #define __FT2_BUILD_GENERIC_H__ + #ifndef FT2_BUILD_GENERIC_H_ + #define FT2_BUILD_GENERIC_H_ #include "ATARI.H" @@ -43,8 +43,8 @@ ge - In der Datei freetype2/include/Ft2build.h muss zu Beginn ein #include "ATARI.H" wie folgt eingefgt werden: - #ifndef __FT2_BUILD_GENERIC_H__ - #define __FT2_BUILD_GENERIC_H__ + #ifndef FT2_BUILD_GENERIC_H_ + #define FT2_BUILD_GENERIC_H_ #include "ATARI.H" diff --git a/builds/beos/beos-def.mk b/builds/beos/beos-def.mk index 4371a30..edd356e 100644 --- a/builds/beos/beos-def.mk +++ b/builds/beos/beos-def.mk @@ -5,7 +5,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/beos/beos.mk b/builds/beos/beos.mk index b5c8bda..4b9e097 100644 --- a/builds/beos/beos.mk +++ b/builds/beos/beos.mk @@ -2,7 +2,7 @@ # FreeType 2 configuration rules for a BeOS system # -# Copyright 1996-2000, 2002, 2005 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/beos/detect.mk b/builds/beos/detect.mk index 24a0878..e85bc41 100644 --- a/builds/beos/detect.mk +++ b/builds/beos/detect.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/cmake/FindHarfBuzz.cmake b/builds/cmake/FindHarfBuzz.cmake new file mode 100644 index 0000000..f394b82 --- /dev/null +++ b/builds/cmake/FindHarfBuzz.cmake @@ -0,0 +1,72 @@ +# Copyright (c) 2012, Intel Corporation +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Intel Corporation nor the names of its contributors may +# be used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# Try to find Harfbuzz include and library directories. +# +# After successful discovery, this will set for inclusion where needed: +# HARFBUZZ_INCLUDE_DIRS - containg the HarfBuzz headers +# HARFBUZZ_LIBRARIES - containg the HarfBuzz library + +include(FindPkgConfig) + +pkg_check_modules(PC_HARFBUZZ harfbuzz>=0.9.7) + +find_path(HARFBUZZ_INCLUDE_DIRS NAMES hb.h + HINTS ${PC_HARFBUZZ_INCLUDE_DIRS} ${PC_HARFBUZZ_INCLUDEDIR} +) + +find_library(HARFBUZZ_LIBRARIES NAMES harfbuzz + HINTS ${PC_HARFBUZZ_LIBRARY_DIRS} ${PC_HARFBUZZ_LIBDIR} +) + +# HarfBuzz 0.9.18 split ICU support into a separate harfbuzz-icu library. +if ("${PC_HARFBUZZ_VERSION}" VERSION_GREATER "0.9.17") + if (HarfBuzz_FIND_REQUIRED) + set(_HARFBUZZ_REQUIRED REQUIRED) + else () + set(_HARFBUZZ_REQUIRED "") + endif () + pkg_check_modules(PC_HARFBUZZ_ICU harfbuzz-icu>=0.9.18 ${_HARFBUZZ_REQUIRED}) + find_library(HARFBUZZ_ICU_LIBRARIES NAMES harfbuzz-icu + HINTS ${PC_HARFBUZZ_ICU_LIBRARY_DIRS} ${PC_HARFBUZZ_ICU_LIBDIR} + ) + if (HARFBUZZ_ICU_LIBRARIES) + list(APPEND HARFBUZZ_LIBRARIES "${HARFBUZZ_ICU_LIBRARIES}") + endif () + set(_HARFBUZZ_EXTRA_REQUIRED_VAR "HARFBUZZ_ICU_LIBRARIES") +else () + set(_HARFBUZZ_EXTRA_REQUIRED_VAR "") +endif () + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(HarfBuzz DEFAULT_MSG HARFBUZZ_INCLUDE_DIRS + HARFBUZZ_LIBRARIES ${_HARFBUZZ_EXTRA_REQUIRED_VAR}) + +mark_as_advanced( + HARFBUZZ_ICU_LIBRARIES + HARFBUZZ_INCLUDE_DIRS + HARFBUZZ_LIBRARIES +) diff --git a/builds/cmake/iOS.cmake b/builds/cmake/iOS.cmake index a41a7ac..378dbd8 100644 --- a/builds/cmake/iOS.cmake +++ b/builds/cmake/iOS.cmake @@ -1,6 +1,6 @@ # iOS.cmake # -# Copyright 2014 by +# Copyright 2014-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # Written by David Wimsey @@ -85,11 +85,6 @@ if (CMAKE_UNAME) DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}") endif (CMAKE_UNAME) -# force the compilers to gcc for iOS -include(CMakeForceCompiler) -CMAKE_FORCE_C_COMPILER(gcc gcc) -CMAKE_FORCE_CXX_COMPILER(g++ g++) - # skip the platform compiler checks for cross compiling set(CMAKE_CXX_COMPILER_WORKS TRUE) set(CMAKE_C_COMPILER_WORKS TRUE) diff --git a/builds/cmake/testbuild.sh b/builds/cmake/testbuild.sh new file mode 100755 index 0000000..e05dd29 --- /dev/null +++ b/builds/cmake/testbuild.sh @@ -0,0 +1,157 @@ +#!/bin/sh -e + +# Copyright 2015-2016 by +# David Turner, Robert Wilhelm, and Werner Lemberg. +# +# This file is part of the FreeType project, and may only be used, modified, +# and distributed under the terms of the FreeType project license, +# LICENSE.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 script tests the CMake build. Simply run +# +# builds/cmake/testbuild.sh +# +# or +# +# BUILD_SHARED_LIBS=1 builds/cmake/testbuild.sh +# +# The script: +# +# - builds the main CMakeLists.txt +# - builds and runs a small test app in a separate build tree so +# the config-module is tested, too +# +# Options (environment variables): +# +# - The variable BUILD_SHARED_LIBS will be forwarded to the CMake project +# that builds the library. +# + + +# prepare temporary dir + +cd `dirname $0`/../.. +ftdir=`pwd` +tmpdir=/tmp/freetype-cmake-testbuild +rm -rf $tmpdir +mkdir -p $tmpdir + + +# build and install freetype + +if test -n "$BUILD_SHARED_LIBS"; then + bsl=-DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS +else + bsl=-UBUILD_SHARED_LIBS +fi + +build_opts="-DWITH_ZLIB=0 \ + -DWITH_BZip2=0 \ + -DWITH_PNG=0 \ + -DWITH_HarfBuzz=0 \ + $bsl \ + -DCMAKE_INSTALL_PREFIX=$tmpdir/out" + +(set -x; cmake -H$ftdir \ + -B$tmpdir/ftb \ + -DCMAKE_BUILD_TYPE=Debug \ + $build_opts) +(set -x; cmake --build $tmpdir/ftb \ + --config Debug \ + --target install) + +(set -x; cmake $tmpdir/ftb \ + -DCMAKE_BUILD_TYPE=Release) +(set -x; cmake --build $tmpdir/ftb \ + --config Release \ + --target install \ + --clean-first) + + +# create test project CMakeLists.txt + +cat >$tmpdir/CMakeLists.txt << END +cmake_minimum_required(VERSION 2.6) +project(freetype-cmake-testbuild) + +find_package(Freetype REQUIRED CONFIG) + +add_executable(freetype-cmake-test main.c) +target_link_libraries(freetype-cmake-test freetype) + +enable_testing() +add_test(freetype-cmake-test freetype-cmake-test) +END + + +# create test project main.c + +cat >$tmpdir/main.c << END +#include +#include + +#include +#include FT_FREETYPE_H + + +FT_Library library; + + +int main(int argc, + char*argv[]) +{ + FT_Error error; + FT_Int major = 0; + FT_Int minor = 0; + FT_Int patch = 0; + + error = FT_Init_FreeType(&library); + if (error) + return EXIT_FAILURE; + + FT_Library_Version(library, &major, &minor, &patch); + if (major != FREETYPE_MAJOR + || minor != FREETYPE_MINOR + || patch != FREETYPE_PATCH) + return EXIT_FAILURE; + + printf("FT_Library_Version: %d.%d.%d\n", major, minor, patch); + + error = FT_Done_FreeType(library); + if (error) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} +END + + +# build and test + +mkdir -p $tmpdir/tb +cd $tmpdir/tb + +LD_LIBRARY_PATH=$tmpdir/out/lib:$LD_LIBRARY_PATH +DYLD_LIBRARY_PATH=$tmpdir/out/lib:$DYLD_LIBRARY_PATH +export LD_LIBRARY_PATH +export DYLD_LIBRARY_PATH + +(set -x; cmake $tmpdir \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_PREFIX_PATH=$tmpdir/out) +(set -x; cmake --build . \ + --config Debug) +(set -x; ctest -V -C Debug) + +(set -x; cmake . \ + -DCMAKE_BUILD_TYPE=Release) +(set -x; cmake --build . \ + --config Release \ + --clean-first) +(set -x; ctest -V -C Release) + +rm -rf $tmpdir + +# EOF diff --git a/builds/compiler/ansi-cc.mk b/builds/compiler/ansi-cc.mk index 3b668e2..688b0c7 100644 --- a/builds/compiler/ansi-cc.mk +++ b/builds/compiler/ansi-cc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/bcc-dev.mk b/builds/compiler/bcc-dev.mk index 42a99b0..a53fcef 100644 --- a/builds/compiler/bcc-dev.mk +++ b/builds/compiler/bcc-dev.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/bcc.mk b/builds/compiler/bcc.mk index 855edad..398b853 100644 --- a/builds/compiler/bcc.mk +++ b/builds/compiler/bcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/emx.mk b/builds/compiler/emx.mk index c237005..2ce52be 100644 --- a/builds/compiler/emx.mk +++ b/builds/compiler/emx.mk @@ -3,7 +3,7 @@ # -# Copyright 2003, 2006 by +# Copyright 2003-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/gcc-dev.mk b/builds/compiler/gcc-dev.mk index c63e126..f87f94d 100644 --- a/builds/compiler/gcc-dev.mk +++ b/builds/compiler/gcc-dev.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2004, 2005, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/gcc.mk b/builds/compiler/gcc.mk index f6b7101..e102c6d 100644 --- a/builds/compiler/gcc.mk +++ b/builds/compiler/gcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2006, 2009 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/intelc.mk b/builds/compiler/intelc.mk index 413ce5b..b2e7047 100644 --- a/builds/compiler/intelc.mk +++ b/builds/compiler/intelc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/unix-lcc.mk b/builds/compiler/unix-lcc.mk index d79f508..20011f8 100644 --- a/builds/compiler/unix-lcc.mk +++ b/builds/compiler/unix-lcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/visualage.mk b/builds/compiler/visualage.mk index c109659..14e6229 100644 --- a/builds/compiler/visualage.mk +++ b/builds/compiler/visualage.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/visualc.mk b/builds/compiler/visualc.mk index 2e19ef8..62dc9d2 100644 --- a/builds/compiler/visualc.mk +++ b/builds/compiler/visualc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2006, 2008 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/watcom.mk b/builds/compiler/watcom.mk index 4db1e7f..da3d19d 100644 --- a/builds/compiler/watcom.mk +++ b/builds/compiler/watcom.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/compiler/win-lcc.mk b/builds/compiler/win-lcc.mk index 5d02d82..bd0d4be 100644 --- a/builds/compiler/win-lcc.mk +++ b/builds/compiler/win-lcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/detect.mk b/builds/detect.mk index ff4045d..cea55a5 100644 --- a/builds/detect.mk +++ b/builds/detect.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2003, 2006, 2008, 2013, 2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/dos/detect.mk b/builds/dos/detect.mk index 3e5e967..b610e46 100644 --- a/builds/dos/detect.mk +++ b/builds/dos/detect.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2004, 2006, 2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/dos/dos-def.mk b/builds/dos/dos-def.mk index 950f581..9aa0ee6 100644 --- a/builds/dos/dos-def.mk +++ b/builds/dos/dos-def.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/dos/dos-emx.mk b/builds/dos/dos-emx.mk index 6ea8f6d..3933aba 100644 --- a/builds/dos/dos-emx.mk +++ b/builds/dos/dos-emx.mk @@ -3,7 +3,7 @@ # -# Copyright 2003 by +# Copyright 2003-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/dos/dos-gcc.mk b/builds/dos/dos-gcc.mk index e14255c..e191a81 100644 --- a/builds/dos/dos-gcc.mk +++ b/builds/dos/dos-gcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/dos/dos-wat.mk b/builds/dos/dos-wat.mk index c763b16..a0fe4c9 100644 --- a/builds/dos/dos-wat.mk +++ b/builds/dos/dos-wat.mk @@ -3,7 +3,7 @@ # -# Copyright 2003 by +# Copyright 2003-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/exports.mk b/builds/exports.mk index 96b10db..d5a5085 100644 --- a/builds/exports.mk +++ b/builds/exports.mk @@ -3,7 +3,7 @@ # -# Copyright 2005, 2006 by +# Copyright 2005-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -40,7 +40,11 @@ ifneq ($(EXPORTS_LIST),) endif # The list of public headers we're going to parse. - PUBLIC_HEADERS := $(wildcard $(PUBLIC_DIR)/*.h) + PUBLIC_HEADERS := $(filter-out $(PUBLIC_DIR)/ftmac.h, \ + $(wildcard $(PUBLIC_DIR)/*.h)) + ifneq ($(ftmac_c),) + PUBLIC_HEADERS += $(PUBLIC_DIR)/ftmac.h + endif # The `apinames' source and executable. We use $E_BUILD as the host # executable suffix, which *includes* the final dot. diff --git a/builds/freetype.mk b/builds/freetype.mk index 8b2e2ea..43766be 100644 --- a/builds/freetype.mk +++ b/builds/freetype.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2006, 2008, 2013, 2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -97,7 +97,7 @@ BASE_DIR := $(SRC_DIR)/base # Other derived directories. # -PUBLIC_DIR := $(TOP_DIR)/include +PUBLIC_DIR := $(TOP_DIR)/include/freetype INTERNAL_DIR := $(PUBLIC_DIR)/internal SERVICES_DIR := $(INTERNAL_DIR)/services CONFIG_DIR := $(PUBLIC_DIR)/config @@ -155,15 +155,13 @@ ifneq ($(wildcard $(OBJ_DIR)/ftoption.h),) FTOPTION_FLAG := $DFT_CONFIG_OPTIONS_H="" endif -# Note that a build with the `configure' script uses $(CFLAGS) only. +# `CPPFLAGS' might be specified by the user in the environment. # FT_CFLAGS = $(CPPFLAGS) \ - $(INCLUDE_FLAGS) \ $(CFLAGS) \ $DFT2_BUILD_LIBRARY \ $DFT_CONFIG_MODULES_H="" \ $(FTOPTION_FLAG) -FT_COMPILE = $(CC) $(ANSIFLAGS) $(FT_CFLAGS) # Include the `exports' rules file. @@ -195,6 +193,8 @@ DEVEL_H := $(wildcard $(TOP_DIR)/devel/*.h) FREETYPE_H := $(PUBLIC_H) $(INTERNAL_H) $(CONFIG_H) $(DEVEL_H) +FT_COMPILE := $(CC) $(ANSIFLAGS) $(INCLUDE_FLAGS) $(FT_CFLAGS) + # ftsystem component # FTSYS_SRC ?= $(BASE_DIR)/ftsystem.c @@ -270,32 +270,6 @@ objects: $(OBJECTS_LIST) library: $(PROJECT_LIBRARY) -.c.$O: - $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -ifneq ($(findstring refdoc,$(MAKECMDGOALS)),) - # poor man's `sed' emulation with make's built-in string functions - work := $(strip $(shell $(CAT) $(PUBLIC_DIR)/freetype.h)) - work := $(subst |,x,$(work)) - work := $(subst $(space),|,$(work)) - work := $(subst \#define|FREETYPE_MAJOR|,$(space),$(work)) - work := $(word 2,$(work)) - major := $(subst |,$(space),$(work)) - major := $(firstword $(major)) - - work := $(subst \#define|FREETYPE_MINOR|,$(space),$(work)) - work := $(word 2,$(work)) - minor := $(subst |,$(space),$(work)) - minor := $(firstword $(minor)) - - work := $(subst \#define|FREETYPE_PATCH|,$(space),$(work)) - work := $(word 2,$(work)) - patch := $(subst |,$(space),$(work)) - patch := $(firstword $(patch)) - - version := $(major).$(minor).$(patch) -endif # Option `-B' disables generation of .pyc files (available since python 2.6) # diff --git a/builds/link_dos.mk b/builds/link_dos.mk index c37ac7e..f04cc70 100644 --- a/builds/link_dos.mk +++ b/builds/link_dos.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/link_std.mk b/builds/link_std.mk index 0bd2163..a5d192e 100644 --- a/builds/link_std.mk +++ b/builds/link_std.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/mac/FreeType.m68k_cfm.make.txt b/builds/mac/FreeType.m68k_cfm.make.txt index 425f9f9..c0a55f5 100644 --- a/builds/mac/FreeType.m68k_cfm.make.txt +++ b/builds/mac/FreeType.m68k_cfm.make.txt @@ -38,6 +38,7 @@ SrcFiles = \xB6 :src:base:ftbdf.c \xB6 :src:base:ftbitmap.c \xB6 :src:base:ftdebug.c \xB6 + :src:base:ftfntfmt.c \xB6 :src:base:ftfstype.c \xB6 :src:base:ftglyph.c \xB6 :src:base:ftgxval.c \xB6 @@ -50,7 +51,6 @@ SrcFiles = \xB6 :src:base:ftsystem.c \xB6 :src:base:fttype1.c \xB6 :src:base:ftwinfnt.c \xB6 - :src:base:ftxf86.c \xB6 :src:cache:ftcache.c \xB6 :src:bdf:bdf.c \xB6 :src:cff:cff.c \xB6 @@ -83,6 +83,7 @@ ObjFiles-68K = \xB6 "{ObjDir}ftbdf.c.o" \xB6 "{ObjDir}ftbitmap.c.o" \xB6 "{ObjDir}ftdebug.c.o" \xB6 + "{ObjDir}ftfntfmt.c.o" \xB6 "{ObjDir}ftfstype.c.o" \xB6 "{ObjDir}ftglyph.c.o" \xB6 "{ObjDir}ftgxval.c.o" \xB6 @@ -95,7 +96,6 @@ ObjFiles-68K = \xB6 "{ObjDir}ftsystem.c.o" \xB6 "{ObjDir}fttype1.c.o" \xB6 "{ObjDir}ftwinfnt.c.o" \xB6 - "{ObjDir}ftxf86.c.o" \xB6 "{ObjDir}ftcache.c.o" \xB6 "{ObjDir}bdf.c.o" \xB6 "{ObjDir}cff.c.o" \xB6 @@ -161,6 +161,7 @@ FreeType.m68k_cfm.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5 "{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c "{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c "{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfntfmt.c.o" \xC4 :src:base:ftfntfmt.c "{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c "{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c "{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c @@ -173,7 +174,6 @@ FreeType.m68k_cfm.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5 "{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c "{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c "{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c -"{ObjDir}ftxf86.c.o" \xC4 :src:base:ftxf86.c "{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c "{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c "{ObjDir}cff.c.o" \xC4 :src:cff:cff.c diff --git a/builds/mac/FreeType.m68k_far.make.txt b/builds/mac/FreeType.m68k_far.make.txt index ebf5a1b..e9b7f6f 100644 --- a/builds/mac/FreeType.m68k_far.make.txt +++ b/builds/mac/FreeType.m68k_far.make.txt @@ -37,6 +37,7 @@ SrcFiles = \xB6 :src:base:ftbdf.c \xB6 :src:base:ftbitmap.c \xB6 :src:base:ftdebug.c \xB6 + :src:base:ftfntfmt.c \xB6 :src:base:ftfstype.c \xB6 :src:base:ftglyph.c \xB6 :src:base:ftgxval.c \xB6 @@ -49,7 +50,6 @@ SrcFiles = \xB6 :src:base:ftsystem.c \xB6 :src:base:fttype1.c \xB6 :src:base:ftwinfnt.c \xB6 - :src:base:ftxf86.c \xB6 :src:cache:ftcache.c \xB6 :src:bdf:bdf.c \xB6 :src:cff:cff.c \xB6 @@ -82,6 +82,7 @@ ObjFiles-68K = \xB6 "{ObjDir}ftbdf.c.o" \xB6 "{ObjDir}ftbitmap.c.o" \xB6 "{ObjDir}ftdebug.c.o" \xB6 + "{ObjDir}ftfntfmt.c.o" \xB6 "{ObjDir}ftfstype.c.o" \xB6 "{ObjDir}ftglyph.c.o" \xB6 "{ObjDir}ftgxval.c.o" \xB6 @@ -94,7 +95,6 @@ ObjFiles-68K = \xB6 "{ObjDir}ftsystem.c.o" \xB6 "{ObjDir}fttype1.c.o" \xB6 "{ObjDir}ftwinfnt.c.o" \xB6 - "{ObjDir}ftxf86.c.o" \xB6 "{ObjDir}ftcache.c.o" \xB6 "{ObjDir}bdf.c.o" \xB6 "{ObjDir}cff.c.o" \xB6 @@ -160,6 +160,7 @@ FreeType.m68k_far.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5 "{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c "{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c "{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfntfmt.c.o" \xC4 :src:base:ftfntfmt.c "{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c "{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c "{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c @@ -172,7 +173,6 @@ FreeType.m68k_far.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5 "{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c "{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c "{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c -"{ObjDir}ftxf86.c.o" \xC4 :src:base:ftxf86.c "{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c "{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c "{ObjDir}cff.c.o" \xC4 :src:cff:cff.c diff --git a/builds/mac/FreeType.ppc_carbon.make.txt b/builds/mac/FreeType.ppc_carbon.make.txt index 2926413..9eb1dac 100644 --- a/builds/mac/FreeType.ppc_carbon.make.txt +++ b/builds/mac/FreeType.ppc_carbon.make.txt @@ -38,6 +38,7 @@ SrcFiles = \xB6 :src:base:ftbdf.c \xB6 :src:base:ftbitmap.c \xB6 :src:base:ftdebug.c \xB6 + :src:base:ftfntfmt.c \xB6 :src:base:ftfstype.c \xB6 :src:base:ftglyph.c \xB6 :src:base:ftgxval.c \xB6 @@ -50,7 +51,6 @@ SrcFiles = \xB6 :src:base:ftsystem.c \xB6 :src:base:fttype1.c \xB6 :src:base:ftwinfnt.c \xB6 - :src:base:ftxf86.c \xB6 :src:cache:ftcache.c \xB6 :src:bdf:bdf.c \xB6 :src:cff:cff.c \xB6 @@ -83,6 +83,7 @@ ObjFiles-PPC = \xB6 "{ObjDir}ftbdf.c.x" \xB6 "{ObjDir}ftbitmap.c.x" \xB6 "{ObjDir}ftdebug.c.x" \xB6 + "{ObjDir}ftfntfmt.c.x" \xB6 "{ObjDir}ftfstype.c.x" \xB6 "{ObjDir}ftglyph.c.x" \xB6 "{ObjDir}ftgxval.c.x" \xB6 @@ -95,7 +96,6 @@ ObjFiles-PPC = \xB6 "{ObjDir}ftsystem.c.x" \xB6 "{ObjDir}fttype1.c.x" \xB6 "{ObjDir}ftwinfnt.c.x" \xB6 - "{ObjDir}ftxf86.c.x" \xB6 "{ObjDir}ftcache.c.x" \xB6 "{ObjDir}bdf.c.x" \xB6 "{ObjDir}cff.c.x" \xB6 @@ -164,6 +164,7 @@ FreeType.ppc_carbon.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\x "{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c "{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c "{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfntfmt.c.x" \xC4 :src:base:ftfntfmt.c "{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c "{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c "{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c @@ -176,7 +177,6 @@ FreeType.ppc_carbon.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\x "{ObjDir}ftsystem.c.x" \xC4 :src:base:ftsystem.c "{ObjDir}fttype1.c.x" \xC4 :src:base:fttype1.c "{ObjDir}ftwinfnt.c.x" \xC4 :src:base:ftwinfnt.c -"{ObjDir}ftxf86.c.x" \xC4 :src:base:ftxf86.c "{ObjDir}ftcache.c.x" \xC4 :src:cache:ftcache.c "{ObjDir}bdf.c.x" \xC4 :src:bdf:bdf.c "{ObjDir}cff.c.x" \xC4 :src:cff:cff.c diff --git a/builds/mac/FreeType.ppc_classic.make.txt b/builds/mac/FreeType.ppc_classic.make.txt index 377de9a..0627eea 100644 --- a/builds/mac/FreeType.ppc_classic.make.txt +++ b/builds/mac/FreeType.ppc_classic.make.txt @@ -38,6 +38,7 @@ SrcFiles = \xB6 :src:base:ftbdf.c \xB6 :src:base:ftbitmap.c \xB6 :src:base:ftdebug.c \xB6 + :src:base:ftfntfmt.c \xB6 :src:base:ftfstype.c \xB6 :src:base:ftglyph.c \xB6 :src:base:ftgxval.c \xB6 @@ -50,7 +51,6 @@ SrcFiles = \xB6 :src:base:ftsystem.c \xB6 :src:base:fttype1.c \xB6 :src:base:ftwinfnt.c \xB6 - :src:base:ftxf86.c \xB6 :src:cache:ftcache.c \xB6 :src:bdf:bdf.c \xB6 :src:cff:cff.c \xB6 @@ -83,6 +83,7 @@ ObjFiles-PPC = \xB6 "{ObjDir}ftbdf.c.x" \xB6 "{ObjDir}ftbitmap.c.x" \xB6 "{ObjDir}ftdebug.c.x" \xB6 + "{ObjDir}ftfntfmt.c.x" \xB6 "{ObjDir}ftfstype.c.x" \xB6 "{ObjDir}ftglyph.c.x" \xB6 "{ObjDir}ftgxval.c.x" \xB6 @@ -95,7 +96,6 @@ ObjFiles-PPC = \xB6 "{ObjDir}ftsystem.c.x" \xB6 "{ObjDir}fttype1.c.x" \xB6 "{ObjDir}ftwinfnt.c.x" \xB6 - "{ObjDir}ftxf86.c.x" \xB6 "{ObjDir}ftcache.c.x" \xB6 "{ObjDir}bdf.c.x" \xB6 "{ObjDir}cff.c.x" \xB6 @@ -164,6 +164,7 @@ FreeType.ppc_classic.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\ "{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c "{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c "{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c +"{ObjDir}ftfntfmt.c.x" \xC4 :src:base:ftfntfmt.c "{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c "{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c "{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c @@ -176,7 +177,6 @@ FreeType.ppc_classic.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\ "{ObjDir}ftsystem.c.x" \xC4 :src:base:ftsystem.c "{ObjDir}fttype1.c.x" \xC4 :src:base:fttype1.c "{ObjDir}ftwinfnt.c.x" \xC4 :src:base:ftwinfnt.c -"{ObjDir}ftxf86.c.x" \xC4 :src:base:ftxf86.c "{ObjDir}ftcache.c.x" \xC4 :src:cache:ftcache.c "{ObjDir}bdf.c.x" \xC4 :src:bdf:bdf.c "{ObjDir}cff.c.x" \xC4 :src:cff:cff.c diff --git a/builds/mac/ftmac.c b/builds/mac/ftmac.c index 27b5511..4691ded 100644 --- a/builds/mac/ftmac.c +++ b/builds/mac/ftmac.c @@ -5,7 +5,7 @@ /* Mac FOND support. Written by just@letterror.com. */ /* Heavily Fixed by mpsuzuki, George Williams and Sean McBride */ /* */ -/* Copyright 1996-2008, 2013, 2014 by */ +/* Copyright 1996-2016 by */ /* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ diff --git a/builds/modules.mk b/builds/modules.mk index 3c1b083..787f864 100644 --- a/builds/modules.mk +++ b/builds/modules.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006, 2008, 2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/os2/detect.mk b/builds/os2/detect.mk index 47a40a2..df05792 100644 --- a/builds/os2/detect.mk +++ b/builds/os2/detect.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/os2/os2-def.mk b/builds/os2/os2-def.mk index 01cda92..b8d4d7b 100644 --- a/builds/os2/os2-def.mk +++ b/builds/os2/os2-def.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/os2/os2-dev.mk b/builds/os2/os2-dev.mk index 83da8de..629d766 100644 --- a/builds/os2/os2-dev.mk +++ b/builds/os2/os2-dev.mk @@ -5,7 +5,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/os2/os2-gcc.mk b/builds/os2/os2-gcc.mk index 446073e..b3e590b 100644 --- a/builds/os2/os2-gcc.mk +++ b/builds/os2/os2-gcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/symbian/bld.inf b/builds/symbian/bld.inf index bc8c160..cbbdc3a 100644 --- a/builds/symbian/bld.inf +++ b/builds/symbian/bld.inf @@ -2,7 +2,7 @@ // FreeType 2 project for the symbian platform // -// Copyright 2008, 2009, 2013 by +// Copyright 2008-2016 by // David Turner, Robert Wilhelm, and Werner Lemberg. // // This file is part of the FreeType project, and may only be used, modified, @@ -18,49 +18,49 @@ PRJ_MMPFILES freetype.mmp PRJ_EXPORTS -../../include/ft2build.h -../../include/config/ftconfig.h config/ftconfig.h -../../include/config/ftheader.h config/ftheader.h -../../include/config/ftmodule.h config/ftmodule.h -../../include/config/ftoption.h config/ftoption.h -../../include/config/ftstdlib.h config/ftstdlib.h -../../include/freetype.h freetype.h -../../include/ftbbox.h ftbbox.h -../../include/ftbdf.h ftbdf.h -../../include/ftbitmap.h ftbitmap.h -../../include/ftcache.h ftcache.h -../../include/ftcid.h ftcid.h -../../include/fterrdef.h fterrdef.h -../../include/fterrors.h fterrors.h -../../include/ftgasp.h ftgasp.h -../../include/ftglyph.h ftglyph.h -../../include/ftgxval.h ftgxval.h -../../include/ftgzip.h ftgzip.h -../../include/ftbzip2.h ftbzip2.h -../../include/ftimage.h ftimage.h -../../include/ftincrem.h ftincrem.h -../../include/ftlcdfil.h ftlcdfil.h -../../include/ftlist.h ftlist.h -../../include/ftlzw.h ftlzw.h -../../include/ftmac.h ftmac.h -../../include/ftmm.h ftmm.h -../../include/ftmodapi.h ftmodapi.h -../../include/ftmoderr.h ftmoderr.h -../../include/ftotval.h ftotval.h -../../include/ftoutln.h ftoutln.h -../../include/ftpfr.h ftpfr.h -../../include/ftrender.h ftrender.h -../../include/ftsizes.h ftsizes.h -../../include/ftsnames.h ftsnames.h -../../include/ftstroke.h ftstroke.h -../../include/ftsynth.h ftsynth.h -../../include/ftsystem.h ftsystem.h -../../include/fttrigon.h fttrigon.h -../../include/fttypes.h fttypes.h -../../include/ftwinfnt.h ftwinfnt.h -../../include/ftxf86.h ftxf86.h -../../include/t1tables.h t1tables.h -../../include/ttnameid.h ttnameid.h -../../include/tttables.h tttables.h -../../include/tttags.h tttags.h -../../include/ttunpat.h ttunpat.h +../../include/freetype/ft2build.h +../../include/freetype/config/ftconfig.h config/ftconfig.h +../../include/freetype/config/ftheader.h config/ftheader.h +../../include/freetype/config/ftmodule.h config/ftmodule.h +../../include/freetype/config/ftoption.h config/ftoption.h +../../include/freetype/config/ftstdlib.h config/ftstdlib.h +../../include/freetype/freetype.h freetype.h +../../include/freetype/ftbbox.h ftbbox.h +../../include/freetype/ftbdf.h ftbdf.h +../../include/freetype/ftbitmap.h ftbitmap.h +../../include/freetype/ftcache.h ftcache.h +../../include/freetype/ftcid.h ftcid.h +../../include/freetype/fterrdef.h fterrdef.h +../../include/freetype/fterrors.h fterrors.h +../../include/freetype/ftfntfmt.h ftfntfmt.h +../../include/freetype/ftgasp.h ftgasp.h +../../include/freetype/ftglyph.h ftglyph.h +../../include/freetype/ftgxval.h ftgxval.h +../../include/freetype/ftgzip.h ftgzip.h +../../include/freetype/ftbzip2.h ftbzip2.h +../../include/freetype/ftimage.h ftimage.h +../../include/freetype/ftincrem.h ftincrem.h +../../include/freetype/ftlcdfil.h ftlcdfil.h +../../include/freetype/ftlist.h ftlist.h +../../include/freetype/ftlzw.h ftlzw.h +../../include/freetype/ftmac.h ftmac.h +../../include/freetype/ftmm.h ftmm.h +../../include/freetype/ftmodapi.h ftmodapi.h +../../include/freetype/ftmoderr.h ftmoderr.h +../../include/freetype/ftotval.h ftotval.h +../../include/freetype/ftoutln.h ftoutln.h +../../include/freetype/ftpfr.h ftpfr.h +../../include/freetype/ftrender.h ftrender.h +../../include/freetype/ftsizes.h ftsizes.h +../../include/freetype/ftsnames.h ftsnames.h +../../include/freetype/ftstroke.h ftstroke.h +../../include/freetype/ftsynth.h ftsynth.h +../../include/freetype/ftsystem.h ftsystem.h +../../include/freetype/fttrigon.h fttrigon.h +../../include/freetype/fttypes.h fttypes.h +../../include/freetype/ftwinfnt.h ftwinfnt.h +../../include/freetype/t1tables.h t1tables.h +../../include/freetype/ttnameid.h ttnameid.h +../../include/freetype/tttables.h tttables.h +../../include/freetype/tttags.h tttags.h +../../include/freetype/ttunpat.h ttunpat.h diff --git a/builds/symbian/freetype.mmp b/builds/symbian/freetype.mmp index cb0008c..1944054 100644 --- a/builds/symbian/freetype.mmp +++ b/builds/symbian/freetype.mmp @@ -2,7 +2,7 @@ // FreeType 2 makefile for the symbian platform // -// Copyright 2008, 2009 by +// Copyright 2008-2016 by // David Turner, Robert Wilhelm, and Werner Lemberg. // // This file is part of the FreeType project, and may only be used, modified, @@ -28,6 +28,7 @@ source ftbbox.c source ftbdf.c source ftbitmap.c source ftcid.c +source ftfntfmt.c source ftfstype.c source ftgasp.c source ftglyph.c diff --git a/builds/toplevel.mk b/builds/toplevel.mk index 16d4be8..7cea85d 100644 --- a/builds/toplevel.mk +++ b/builds/toplevel.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2001, 2003, 2006, 2008-2010, 2012-2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -169,23 +169,41 @@ modules: include $(TOP_DIR)/builds/modules.mk +# get FreeType version string, using a +# poor man's `sed' emulation with make's built-in string functions +# +work := $(strip $(shell $(CAT) $(TOP_DIR)/include/freetype/freetype.h)) +work := $(subst |,x,$(work)) +work := $(subst $(space),|,$(work)) +work := $(subst \#define|FREETYPE_MAJOR|,$(space),$(work)) +work := $(word 2,$(work)) +major := $(subst |,$(space),$(work)) +major := $(firstword $(major)) + +work := $(subst \#define|FREETYPE_MINOR|,$(space),$(work)) +work := $(word 2,$(work)) +minor := $(subst |,$(space),$(work)) +minor := $(firstword $(minor)) + +work := $(subst \#define|FREETYPE_PATCH|,$(space),$(work)) +work := $(word 2,$(work)) +patch := $(subst |,$(space),$(work)) +patch := $(firstword $(patch)) + +ifneq ($(findstring x0x,x$(patch)x),) + version := $(major).$(minor) + winversion := $(major)$(minor) +else + version := $(major).$(minor).$(patch) + winversion := $(major)$(minor)$(patch) +endif + + # This target builds the tarballs. # # Not to be run by a normal user -- there are no attempts to make it # generic. -# we check for `dist', not `distclean' -ifneq ($(findstring distx,$(MAKECMDGOALS)x),) - FT_H := include/freetype.h - - major := $(shell sed -n 's/.*FREETYPE_MAJOR[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H)) - minor := $(shell sed -n 's/.*FREETYPE_MINOR[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H)) - patch := $(shell sed -n 's/.*FREETYPE_PATCH[^0-9]*\([0-9]\+\)/\1/p' < $(FT_H)) - - version := $(major).$(minor).$(patch) - winversion := $(major)$(minor)$(patch) -endif - dist: -rm -rf tmp rm -f freetype-$(version).tar.gz diff --git a/builds/unix/aclocal.m4 b/builds/unix/aclocal.m4 index 2c03164..0a8c94d 100644 --- a/builds/unix/aclocal.m4 +++ b/builds/unix/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.14 -*- Autoconf -*- +# generated automatically by aclocal 1.15 -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,7 +14,7 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996-2001, 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -73,7 +73,7 @@ esac # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl @@ -117,19 +117,36 @@ dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + # _LT_CC_BASENAME(CC) # ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result ]) @@ -183,6 +200,7 @@ m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our @@ -727,6 +745,9 @@ _LT_CONFIG_SAVE_COMMANDS([ _LT_COPYING _LT_LIBTOOL_TAGS +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS @@ -734,6 +755,17 @@ _LT_LIBTOOL_TAG_VARS _LT_EOF + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" @@ -1048,7 +1080,7 @@ _LT_EOF case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) + 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; @@ -1845,7 +1877,7 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); @@ -2207,6 +2239,47 @@ _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics @@ -2217,6 +2290,7 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ @@ -2311,6 +2385,9 @@ hardcode_into_libs=no # flags to be left without arguments need_version=unknown +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor @@ -2347,20 +2424,70 @@ aix[[4-9]]*) fi ;; esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test yes = "$aix_use_runtimelinking"; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - else + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' - fi + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -2548,7 +2675,8 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; @@ -2608,10 +2736,11 @@ hpux9* | hpux10* | hpux11*) soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -2744,7 +2873,12 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) # before this can be enabled. hardcode_into_libs=yes - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" @@ -2813,11 +2947,32 @@ openbsd* | bitrig*) os2*) libname_spec='$name' + version_type=windows shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname$shared_ext $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) @@ -2893,7 +3048,7 @@ sysv4*MP*) ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' @@ -2947,10 +3102,20 @@ fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi + if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) @@ -2983,8 +3148,10 @@ _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER @@ -3222,6 +3389,43 @@ _LT_TAGDECL([], [reload_cmds], [2])dnl ])# _LT_CMD_RELOAD +# _LT_PATH_DD +# ----------- +# find a working dd +m4_defun([_LT_PATH_DD], +[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies @@ -3420,6 +3624,9 @@ sysv4 | sysv4.3*) tpf*) lt_cv_deplibs_check_method=pass_all ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; esac ]) @@ -3477,8 +3684,13 @@ else # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; @@ -4023,6 +4235,11 @@ m4_if([$1], [CXX], [ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; darwin* | rhapsody*) # PIC is the default on this platform @@ -4342,6 +4559,11 @@ m4_if([$1], [CXX], [ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; darwin* | rhapsody*) @@ -4439,6 +4661,11 @@ m4_if([$1], [CXX], [ # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; hpux9* | hpux10* | hpux11*) @@ -4688,13 +4915,17 @@ m4_if([$1], [CXX], [ case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) @@ -4905,6 +5136,34 @@ _LT_EOF _LT_TAGVAR(link_all_deplibs, $1)=yes ;; + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -4978,6 +5237,9 @@ _LT_EOF fi case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' @@ -5107,19 +5369,35 @@ _LT_EOF no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then @@ -5127,6 +5405,13 @@ _LT_EOF break fi done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -5146,6 +5431,14 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) @@ -5173,6 +5466,11 @@ _LT_EOF if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then @@ -5185,6 +5483,8 @@ _LT_EOF else shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi @@ -5192,7 +5492,7 @@ _LT_EOF # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test yes = "$aix_use_runtimelinking"; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' @@ -5223,8 +5523,20 @@ _LT_EOF _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -5478,6 +5790,16 @@ _LT_EOF _LT_TAGVAR(link_all_deplibs, $1)=yes ;; + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -5523,8 +5845,28 @@ _LT_EOF _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) @@ -5915,8 +6257,12 @@ if test -n "$compiler"; then ;; aix[[4-9]]*) - if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then - test yes = "$enable_shared" && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -6104,7 +6450,19 @@ if test yes != "$_lt_caught_CXX_error"; then # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in @@ -6114,6 +6472,13 @@ if test yes != "$_lt_caught_CXX_error"; then ;; esac done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -6133,6 +6498,14 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) @@ -6159,6 +6532,11 @@ if test yes != "$_lt_caught_CXX_error"; then if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then @@ -6171,6 +6549,8 @@ if test yes != "$_lt_caught_CXX_error"; then else shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi @@ -6179,10 +6559,11 @@ if test yes != "$_lt_caught_CXX_error"; then # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test yes = "$aix_use_runtimelinking"; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) @@ -6211,9 +6592,21 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -6313,6 +6706,34 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_DARWIN_LINKER_FEATURES($1) ;; + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + dgux*) case $cc_basename in ec++*) @@ -7026,6 +7447,7 @@ func_stripname_cnf () } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF + # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose @@ -7204,51 +7626,6 @@ interix[[3-9]]*) _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test yes != "$solaris_use_stlport4"; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test yes != "$solaris_use_stlport4"; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; esac ]) @@ -7366,8 +7743,12 @@ if test yes != "$_lt_disable_F77"; then fi ;; aix[[4-9]]*) - if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then - test yes = "$enable_shared" && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -7500,8 +7881,12 @@ if test yes != "$_lt_disable_FC"; then fi ;; aix[[4-9]]*) - if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then - test yes = "$enable_shared" && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -7977,7 +8362,7 @@ _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004-2005, 2007-2009, 2011-2014 Free Software +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # @@ -8059,6 +8444,8 @@ m4_if([$1],[LT_INIT],[ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS @@ -8293,6 +8680,59 @@ dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' @@ -8354,7 +8794,7 @@ LT_OPTION_DEFINE([LTDL_INIT], [convenience], # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007-2008, 2011-2014 Free Software +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # @@ -8479,7 +8919,7 @@ m4_define([lt_dict_filter], # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004, 2011-2014 Free Software Foundation, Inc. +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -8488,22 +8928,22 @@ m4_define([lt_dict_filter], # @configure_input@ -# serial 4092 ltversion.m4 +# serial 4179 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.2.444.28-053d]) -m4_define([LT_PACKAGE_REVISION], [2.4.2.444.28]) +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2.444.28-053d' -macro_revision='2.4.2.444.28' +[macro_version='2.4.6' +macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007, 2009, 2011-2014 Free Software +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # diff --git a/builds/unix/config.guess b/builds/unix/config.guess index 6c32c86..c4bd827 100755 --- a/builds/unix/config.guess +++ b/builds/unix/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2014-11-04' +timestamp='2016-05-15' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ timestamp='2014-11-04' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -168,19 +168,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -197,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +256,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -359,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -393,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -618,13 +642,13 @@ EOF sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -663,11 +687,11 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -680,12 +704,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -790,14 +814,14 @@ EOF echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -879,7 +903,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -902,7 +926,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -933,6 +957,9 @@ EOF crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -945,6 +972,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1021,7 +1051,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1100,7 +1130,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1249,6 +1279,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1262,9 +1295,9 @@ EOF UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1286,7 +1319,7 @@ EOF exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1317,7 +1350,7 @@ EOF # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1359,7 +1392,7 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1370,23 +1403,25 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp diff --git a/builds/unix/config.sub b/builds/unix/config.sub index 7ffe373..9feb73b 100755 --- a/builds/unix/config.sub +++ b/builds/unix/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2014 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2014-12-03' +timestamp='2016-06-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ timestamp='2014-12-03' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ timestamp='2014-12-03' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2014 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -117,7 +116,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os @@ -255,12 +254,13 @@ case $basic_machine in | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ + | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ @@ -305,7 +305,7 @@ case $basic_machine in | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -376,12 +376,13 @@ case $basic_machine in | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ @@ -428,12 +429,13 @@ case $basic_machine in | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -518,6 +520,9 @@ case $basic_machine in basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux @@ -638,6 +643,14 @@ case $basic_machine in basic_machine=m68k-bull os=-sysv3 ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; ebmon29k) basic_machine=a29k-amd os=-ebmon @@ -1373,18 +1386,18 @@ case $os in | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ @@ -1393,7 +1406,8 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1525,6 +1539,8 @@ case $os in ;; -nacl*) ;; + -ios) + ;; -none) ;; *) diff --git a/builds/unix/configure b/builds/unix/configure index 08357a9..e515312 100755 --- a/builds/unix/configure +++ b/builds/unix/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for FreeType 2.5.5. +# Generated by GNU Autoconf 2.69 for FreeType 2.6.5. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='FreeType' PACKAGE_TARNAME='freetype' -PACKAGE_VERSION='2.5.5' -PACKAGE_STRING='FreeType 2.5.5' +PACKAGE_VERSION='2.6.5' +PACKAGE_STRING='FreeType 2.6.5' PACKAGE_BUGREPORT='freetype@nongnu.org' PACKAGE_URL='' @@ -653,12 +653,13 @@ ZLIB_CFLAGS XX_ANSIFLAGS XX_CFLAGS FTSYS_SRC +MKDIR_P INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM -RMDIR EXEEXT_BUILD CC_BUILD +LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO @@ -749,6 +750,7 @@ enable_shared enable_static with_pic enable_fast_install +with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock @@ -777,6 +779,7 @@ CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR +LT_SYS_LIBRARY_PATH ZLIB_CFLAGS ZLIB_LIBS BZIP2_CFLAGS @@ -1325,7 +1328,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures FreeType 2.5.5 to adapt to many kinds of systems. +\`configure' configures FreeType 2.6.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1390,7 +1393,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of FreeType 2.5.5:";; + short | recursive ) echo "Configuration of FreeType 2.6.5:";; esac cat <<\_ACEOF @@ -1412,6 +1415,9 @@ Optional Packages: --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). @@ -1452,6 +1458,8 @@ Some influential environment variables: directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config ZLIB_LIBS linker flags for ZLIB, overriding pkg-config BZIP2_CFLAGS @@ -1531,7 +1539,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -FreeType configure 2.5.5 +FreeType configure 2.6.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2129,7 +2137,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by FreeType $as_me 2.5.5, which was +It was created by FreeType $as_me 2.6.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2483,9 +2491,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -# Don't forget to update docs/VERSION.DLL! +# Don't forget to update `docs/VERSIONS.TXT'! -version_info='17:4:11' +version_info='18:5:12' ft_version=`echo $version_info | tr : .` @@ -3654,8 +3662,8 @@ esac -macro_version='2.4.2.444.28-053d' -macro_revision='2.4.2.444.28' +macro_version='2.4.6' +macro_revision='2.4.6' @@ -4174,8 +4182,13 @@ else # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; @@ -4948,6 +4961,9 @@ sysv4 | sysv4.3*) tpf*) lt_cv_deplibs_check_method=pass_all ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; esac fi @@ -5970,6 +5986,86 @@ $as_echo "${lt_sysroot:-no}" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; @@ -6954,7 +7050,7 @@ $as_echo "$lt_cv_ld_force_load" >&6; } case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) + 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; @@ -6977,6 +7073,41 @@ $as_echo "$lt_cv_ld_force_load" >&6; } ;; esac +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } @@ -7554,6 +7685,58 @@ fi + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + @@ -7673,15 +7856,8 @@ test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +func_cc_basename $compiler +cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it @@ -7988,6 +8164,11 @@ lt_prog_compiler_static= # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac ;; darwin* | rhapsody*) @@ -8084,6 +8265,11 @@ lt_prog_compiler_static= # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac ;; hpux9* | hpux10* | hpux11*) @@ -8724,6 +8910,34 @@ _LT_EOF link_all_deplibs=yes ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no @@ -8797,6 +9011,9 @@ _LT_EOF fi case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' @@ -8926,19 +9143,35 @@ _LT_EOF no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then @@ -8946,6 +9179,13 @@ _LT_EOF break fi done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -8965,6 +9205,14 @@ _LT_EOF hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) @@ -8992,6 +9240,11 @@ _LT_EOF if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then @@ -9004,6 +9257,8 @@ _LT_EOF else shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi @@ -9011,7 +9266,7 @@ _LT_EOF # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes - if test yes = "$aix_use_runtimelinking"; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' @@ -9126,8 +9381,20 @@ fi whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $wl-bnoentry $compiler_flags $wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -9446,6 +9713,16 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } link_all_deplibs=yes ;; + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -9491,8 +9768,28 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes ;; osf3*) @@ -10015,6 +10312,8 @@ hardcode_into_libs=no # flags to be left without arguments need_version=unknown + + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor @@ -10051,20 +10350,70 @@ aix[4-9]*) fi ;; esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test yes = "$aix_use_runtimelinking"; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - else + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' - fi + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -10252,7 +10601,8 @@ freebsd* | dragonfly*) version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; @@ -10312,10 +10662,11 @@ hpux9* | hpux10* | hpux11*) soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -10467,7 +10818,12 @@ fi # before this can be enabled. hardcode_into_libs=yes - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" @@ -10536,11 +10892,32 @@ openbsd* | bitrig*) os2*) libname_spec='$name' + version_type=windows shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname$shared_ext $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) @@ -10616,7 +10993,7 @@ sysv4*MP*) ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' @@ -10671,10 +11048,25 @@ fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi + if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + @@ -11145,7 +11537,7 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); @@ -11251,7 +11643,7 @@ else # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); @@ -11400,8 +11792,12 @@ $as_echo_n "checking whether to build shared libraries... " >&6; } ;; aix[4-9]*) - if test ia64 != "$host_cpu" && test no = "$aix_use_runtimelinking"; then - test yes = "$enable_shared" && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -11609,50 +12005,10 @@ fi -# auxiliary programs - -# Extract the first word of "rmdir", so it can be a program name with args. -set dummy rmdir; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RMDIR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RMDIR"; then - ac_cv_prog_RMDIR="$RMDIR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RMDIR="rmdir" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RMDIR=$ac_cv_prog_RMDIR -if test -n "$RMDIR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5 -$as_echo "$RMDIR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - -# Since this file will be finally moved to another directory we make -# the path of the install script absolute. This small code snippet has -# been taken from automake's `ylwrap' script. +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -11748,13 +12104,63 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' case "$INSTALL" in -/*) +[\\/]* | ?:[\\/]*) ;; -*/*) +*[\\/]*) INSTALL="`pwd`/$INSTALL" ;; esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +case "$MKDIR_P" in +[\\/]* | ?:[\\/]*) + ;; +*[\\/]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + # checks for header files @@ -12419,6 +12825,9 @@ if test "x$GCC" = xyes; then *-*-mingw*) XX_ANSIFLAGS="-pedantic" ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; *) GCC_VERSION=`$CC -dumpversion` GCC_MAJOR=`echo "$GCC_VERSION" | sed 's/\([^.][^.]*\).*/\1/'` @@ -12499,10 +12908,10 @@ fi # or a config script is called (libpng). # # The `xxx_reqpriv' variables are for the `Requires.private' field in -# `freetype2.pc'. The `xxx_libpriv' variables are for the `Libs.private' +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' # field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. # -# The `xxx_libstaticconf' variables are for the `freetype-config' script. +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. # # Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the # output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set @@ -12611,15 +13020,15 @@ fi if test $have_zlib_pkg = yes; then # we have zlib.pc zlib_reqpriv="$zlib_pkg" - zlib_libpriv= - zlib_libstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` else zlib_reqpriv= if test "$have_zlib" != no; then # ZLIB_CFLAGS and ZLIB_LIBS are set by the user - zlib_libpriv="$ZLIB_LIBS" - zlib_libstaticconf="$ZLIB_LIBS" + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" else # fall back to standard autoconf test @@ -12663,9 +13072,9 @@ if test "x$ac_cv_lib_z_gzsetparams" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes; then : have_zlib="yes (autoconf test)" - zlib_libpriv="-lz" - zlib_libstaticconf="$zlib_libpriv" - ZLIB_LIBS="$zlib_libpriv" + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv" fi @@ -12781,15 +13190,15 @@ fi if test $have_bzip2_pkg = yes; then # we have bzip2.pc bzip2_reqpriv="$bzip2_pkg" - bzip2_libpriv= - bzip2_libstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` else bzip2_reqpriv= if test "$have_bzip2" != no; then # BZIP2_CFLAGS and BZIP2_LIBS are set by the user - bzip2_libpriv="$BZIP2_LIBS" - bzip2_libstaticconf="$BZIP2_LIBS" + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" else # fall back to standard autoconf test @@ -12833,9 +13242,9 @@ if test "x$ac_cv_lib_bz2_BZ2_bzDecompress" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "bzlib.h" "ac_cv_header_bzlib_h" "$ac_includes_default" if test "x$ac_cv_header_bzlib_h" = xyes; then : have_bzip2="yes (autoconf test)" - bzip2_libpriv="-lbz2" - bzip2_libstaticconf="$bzip2_libpriv" - BZIP2_LIBS="$bzip2_libpriv" + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv" fi @@ -12951,15 +13360,15 @@ fi if test $have_libpng_pkg = yes; then # we have libpng.pc libpng_reqpriv="$libpng_pkg" - libpng_libpriv= - libpng_libstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` else libpng_reqpriv= if test "$have_libpng" != no; then # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user - libpng_libpriv="$LIBPNG_LIBS" - libpng_libstaticconf="$LIBPNG_LIBS" + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" else # fall back to config script. @@ -12968,8 +13377,8 @@ $as_echo_n "checking for libpng-config... " >&6; } if which libpng-config > /dev/null 2>&1; then LIBPNG_CFLAGS=`libpng-config --cflags` LIBPNG_LIBS=`libpng-config --ldflags` - libpng_libpriv=`libpng-config --static --ldflags` - libpng_libstaticconf="$libpng_libpriv" + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" have_libpng="yes (libpng-config)" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -12999,7 +13408,7 @@ fi have_harfbuzz=no if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then - harfbuzz_pkg="harfbuzz >= 0.9.19" + harfbuzz_pkg="harfbuzz >= 0.9.21" have_harfbuzz_pkg=no if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then @@ -13087,15 +13496,15 @@ fi if test $have_harfbuzz_pkg = yes; then # we have harfbuzz.pc harfbuzz_reqpriv="$harfbuzz_pkg" - harfbuzz_libpriv= - harfbuzz_libstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` else harfbuzz_reqpriv= if test "$have_harfbuzz" != no; then # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user - harfbuzz_libpriv="$HARFBUZZ_LIBS" - harfbuzz_libstaticconf="$HARFBUZZ_LIBS" + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" else # since HarfBuzz is quite a new library we don't fall back to a @@ -13703,10 +14112,10 @@ REQUIRES_PRIVATE=`echo "$REQUIRES_PRIVATE" \ -e 's/,*$//' \ -e 's/,/, /g'` -LIBS_PRIVATE="$zlib_libpriv \ - $bzip2_libpriv \ - $libpng_libpriv \ - $harfbuzz_libpriv \ +LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ $ft2_extra_libs" # beautify LIBS_PRIVATE=`echo "$LIBS_PRIVATE" \ @@ -13714,11 +14123,11 @@ LIBS_PRIVATE=`echo "$LIBS_PRIVATE" \ -e 's/ *$//' \ -e 's/ */ /g'` -LIBSSTATIC_CONFIG="-lfreetype \ - $zlib_libstaticconf \ - $bzip2_libstaticconf \ - $libpng_libstaticconf \ - $harfbuzz_libstaticconf \ +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ $ft2_extra_libs" # remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later # on if necessary; also beautify @@ -14288,7 +14697,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by FreeType $as_me 2.5.5, which was +This file was extended by FreeType $as_me 2.6.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -14354,7 +14763,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -FreeType config.status 2.5.5 +FreeType config.status 2.6.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -14365,6 +14774,7 @@ gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF @@ -14490,6 +14900,7 @@ enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' @@ -14543,6 +14954,7 @@ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_ lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' @@ -14607,7 +15019,8 @@ finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' @@ -14664,6 +15077,7 @@ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ +lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ @@ -14725,7 +15139,8 @@ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec; do +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes @@ -15213,6 +15628,11 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -15267,6 +15687,7 @@ s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ @@ -15367,6 +15788,9 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} # The names of the tagged configurations supported by this script. available_tags='' +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? @@ -15394,6 +15818,9 @@ pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + # Shell to use when invoking shell scripts. SHELL=$lt_SHELL @@ -15523,6 +15950,9 @@ nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + # The name of the directory that contains temporary libtool files. objdir=$objdir @@ -15613,8 +16043,11 @@ hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen @@ -15765,6 +16198,65 @@ hardcode_action=$hardcode_action _LT_EOF + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" diff --git a/builds/unix/configure.ac b/builds/unix/configure.ac index f6f7546..7613732 100644 --- a/builds/unix/configure.ac +++ b/builds/unix/configure.ac @@ -2,7 +2,7 @@ # # Process this file with autoconf to produce a configure script. # -# Copyright 2001-2014 by +# Copyright 2001-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -11,13 +11,13 @@ # indicate that you have read the license and understand and accept it # fully. -AC_INIT([FreeType], [2.5.5], [freetype@nongnu.org], [freetype]) +AC_INIT([FreeType], [2.6.5], [freetype@nongnu.org], [freetype]) AC_CONFIG_SRCDIR([ftconfig.in]) -# Don't forget to update docs/VERSION.DLL! +# Don't forget to update `docs/VERSIONS.TXT'! -version_info='17:4:11' +version_info='18:5:12' AC_SUBST([version_info]) ft_version=`echo $version_info | tr : .` AC_SUBST([ft_version]) @@ -70,24 +70,29 @@ AC_SUBST(CC_BUILD) AC_SUBST(EXEEXT_BUILD) -# auxiliary programs - -AC_CHECK_PROG([RMDIR], [rmdir], [rmdir]) - - -# Since this file will be finally moved to another directory we make -# the path of the install script absolute. This small code snippet has -# been taken from automake's `ylwrap' script. +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. AC_PROG_INSTALL case "$INSTALL" in -/*) +[[\\/]]* | ?:[[\\/]]*) ;; -*/*) +*[[\\/]]*) INSTALL="`pwd`/$INSTALL" ;; esac +AC_PROG_MKDIR_P +case "$MKDIR_P" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + # checks for header files @@ -230,6 +235,9 @@ if test "x$GCC" = xyes; then *-*-mingw*) XX_ANSIFLAGS="-pedantic" ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; *) GCC_VERSION=`$CC -dumpversion` GCC_MAJOR=`echo "$GCC_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'` @@ -294,10 +302,10 @@ AC_SUBST([XX_ANSIFLAGS]) # or a config script is called (libpng). # # The `xxx_reqpriv' variables are for the `Requires.private' field in -# `freetype2.pc'. The `xxx_libpriv' variables are for the `Libs.private' +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' # field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. # -# The `xxx_libstaticconf' variables are for the `freetype-config' script. +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. # # Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the # output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set @@ -326,15 +334,15 @@ if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then if test $have_zlib_pkg = yes; then # we have zlib.pc zlib_reqpriv="$zlib_pkg" - zlib_libpriv= - zlib_libstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` else zlib_reqpriv= if test "$have_zlib" != no; then # ZLIB_CFLAGS and ZLIB_LIBS are set by the user - zlib_libpriv="$ZLIB_LIBS" - zlib_libstaticconf="$ZLIB_LIBS" + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" else # fall back to standard autoconf test @@ -342,9 +350,9 @@ if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then [gzsetparams], [AC_CHECK_HEADER([zlib.h], [have_zlib="yes (autoconf test)" - zlib_libpriv="-lz" - zlib_libstaticconf="$zlib_libpriv" - ZLIB_LIBS="$zlib_libpriv"])]) + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv"])]) fi fi fi @@ -375,15 +383,15 @@ if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then if test $have_bzip2_pkg = yes; then # we have bzip2.pc bzip2_reqpriv="$bzip2_pkg" - bzip2_libpriv= - bzip2_libstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` else bzip2_reqpriv= if test "$have_bzip2" != no; then # BZIP2_CFLAGS and BZIP2_LIBS are set by the user - bzip2_libpriv="$BZIP2_LIBS" - bzip2_libstaticconf="$BZIP2_LIBS" + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" else # fall back to standard autoconf test @@ -391,9 +399,9 @@ if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then [BZ2_bzDecompress], [AC_CHECK_HEADER([bzlib.h], [have_bzip2="yes (autoconf test)" - bzip2_libpriv="-lbz2" - bzip2_libstaticconf="$bzip2_libpriv" - BZIP2_LIBS="$bzip2_libpriv"])]) + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv"])]) fi fi fi @@ -424,15 +432,15 @@ if test x"$with_png" = xyes -o x"$with_png" = xauto; then if test $have_libpng_pkg = yes; then # we have libpng.pc libpng_reqpriv="$libpng_pkg" - libpng_libpriv= - libpng_libstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` else libpng_reqpriv= if test "$have_libpng" != no; then # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user - libpng_libpriv="$LIBPNG_LIBS" - libpng_libstaticconf="$LIBPNG_LIBS" + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" else # fall back to config script. @@ -440,8 +448,8 @@ if test x"$with_png" = xyes -o x"$with_png" = xauto; then if which libpng-config > /dev/null 2>&1; then LIBPNG_CFLAGS=`libpng-config --cflags` LIBPNG_LIBS=`libpng-config --ldflags` - libpng_libpriv=`libpng-config --static --ldflags` - libpng_libstaticconf="$libpng_libpriv" + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" have_libpng="yes (libpng-config)" AC_MSG_RESULT([yes]) else @@ -465,7 +473,7 @@ AC_ARG_WITH([harfbuzz], have_harfbuzz=no if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then - harfbuzz_pkg="harfbuzz >= 0.9.19" + harfbuzz_pkg="harfbuzz >= 0.9.21" have_harfbuzz_pkg=no if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then @@ -477,15 +485,15 @@ if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then if test $have_harfbuzz_pkg = yes; then # we have harfbuzz.pc harfbuzz_reqpriv="$harfbuzz_pkg" - harfbuzz_libpriv= - harfbuzz_libstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` else harfbuzz_reqpriv= if test "$have_harfbuzz" != no; then # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user - harfbuzz_libpriv="$HARFBUZZ_LIBS" - harfbuzz_libstaticconf="$HARFBUZZ_LIBS" + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" else # since HarfBuzz is quite a new library we don't fall back to a @@ -926,10 +934,10 @@ REQUIRES_PRIVATE=`echo "$REQUIRES_PRIVATE" \ -e 's/,*$//' \ -e 's/,/, /g'` -LIBS_PRIVATE="$zlib_libpriv \ - $bzip2_libpriv \ - $libpng_libpriv \ - $harfbuzz_libpriv \ +LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ $ft2_extra_libs" # beautify LIBS_PRIVATE=`echo "$LIBS_PRIVATE" \ @@ -937,11 +945,11 @@ LIBS_PRIVATE=`echo "$LIBS_PRIVATE" \ -e 's/ *$//' \ -e 's/ */ /g'` -LIBSSTATIC_CONFIG="-lfreetype \ - $zlib_libstaticconf \ - $bzip2_libstaticconf \ - $libpng_libstaticconf \ - $harfbuzz_libstaticconf \ +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ $ft2_extra_libs" # remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later # on if necessary; also beautify diff --git a/builds/unix/configure.raw b/builds/unix/configure.raw index 72543cf..dc38ba4 100644 --- a/builds/unix/configure.raw +++ b/builds/unix/configure.raw @@ -2,7 +2,7 @@ # # Process this file with autoconf to produce a configure script. # -# Copyright 2001-2014 by +# Copyright 2001-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -15,9 +15,9 @@ AC_INIT([FreeType], [@VERSION@], [freetype@nongnu.org], [freetype]) AC_CONFIG_SRCDIR([ftconfig.in]) -# Don't forget to update docs/VERSION.DLL! +# Don't forget to update `docs/VERSIONS.TXT'! -version_info='17:4:11' +version_info='18:5:12' AC_SUBST([version_info]) ft_version=`echo $version_info | tr : .` AC_SUBST([ft_version]) @@ -70,24 +70,29 @@ AC_SUBST(CC_BUILD) AC_SUBST(EXEEXT_BUILD) -# auxiliary programs - -AC_CHECK_PROG([RMDIR], [rmdir], [rmdir]) - - -# Since this file will be finally moved to another directory we make -# the path of the install script absolute. This small code snippet has -# been taken from automake's `ylwrap' script. +# Since these files will be eventually called from another directory (namely +# from the top level) we make the path of the scripts absolute. +# +# This small code snippet has been taken from automake's `ylwrap' script. AC_PROG_INSTALL case "$INSTALL" in -/*) +[[\\/]]* | ?:[[\\/]]*) ;; -*/*) +*[[\\/]]*) INSTALL="`pwd`/$INSTALL" ;; esac +AC_PROG_MKDIR_P +case "$MKDIR_P" in +[[\\/]]* | ?:[[\\/]]*) + ;; +*[[\\/]]*) + MKDIR_P="`pwd`/$MKDIR_P" + ;; +esac + # checks for header files @@ -230,6 +235,9 @@ if test "x$GCC" = xyes; then *-*-mingw*) XX_ANSIFLAGS="-pedantic" ;; + *-*-aix*) + XX_ANSIFLAGS="-pedantic" + ;; *) GCC_VERSION=`$CC -dumpversion` GCC_MAJOR=`echo "$GCC_VERSION" | sed 's/\([[^.]][[^.]]*\).*/\1/'` @@ -294,10 +302,10 @@ AC_SUBST([XX_ANSIFLAGS]) # or a config script is called (libpng). # # The `xxx_reqpriv' variables are for the `Requires.private' field in -# `freetype2.pc'. The `xxx_libpriv' variables are for the `Libs.private' +# `freetype2.pc'. The `xxx_libspriv' variables are for the `Libs.private' # field in `freetype2.pc' if pkg-config doesn't find a proper .pc file. # -# The `xxx_libstaticconf' variables are for the `freetype-config' script. +# The `xxx_libsstaticconf' variables are for the `freetype-config' script. # # Note that a call to PKG_CHECK_MODULES(XXX, ...) sets and creates the # output variables `XXX_CFLAGS' and `XXX_LIBS'. In case one or both are set @@ -326,15 +334,15 @@ if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then if test $have_zlib_pkg = yes; then # we have zlib.pc zlib_reqpriv="$zlib_pkg" - zlib_libpriv= - zlib_libstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` + zlib_libspriv= + zlib_libsstaticconf=`$PKG_CONFIG --static --libs "$zlib_pkg"` else zlib_reqpriv= if test "$have_zlib" != no; then # ZLIB_CFLAGS and ZLIB_LIBS are set by the user - zlib_libpriv="$ZLIB_LIBS" - zlib_libstaticconf="$ZLIB_LIBS" + zlib_libspriv="$ZLIB_LIBS" + zlib_libsstaticconf="$ZLIB_LIBS" have_zlib="yes (ZLIB_CFLAGS and ZLIB_LIBS)" else # fall back to standard autoconf test @@ -342,9 +350,9 @@ if test x"$with_zlib" = xyes -o x"$with_zlib" = xauto; then [gzsetparams], [AC_CHECK_HEADER([zlib.h], [have_zlib="yes (autoconf test)" - zlib_libpriv="-lz" - zlib_libstaticconf="$zlib_libpriv" - ZLIB_LIBS="$zlib_libpriv"])]) + zlib_libspriv="-lz" + zlib_libsstaticconf="$zlib_libspriv" + ZLIB_LIBS="$zlib_libspriv"])]) fi fi fi @@ -375,15 +383,15 @@ if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then if test $have_bzip2_pkg = yes; then # we have bzip2.pc bzip2_reqpriv="$bzip2_pkg" - bzip2_libpriv= - bzip2_libstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` + bzip2_libspriv= + bzip2_libsstaticconf=`$PKG_CONFIG --static --libs "$bzip2_pkg"` else bzip2_reqpriv= if test "$have_bzip2" != no; then # BZIP2_CFLAGS and BZIP2_LIBS are set by the user - bzip2_libpriv="$BZIP2_LIBS" - bzip2_libstaticconf="$BZIP2_LIBS" + bzip2_libspriv="$BZIP2_LIBS" + bzip2_libsstaticconf="$BZIP2_LIBS" have_bzip2="yes (BZIP2_CFLAGS and BZIP2_LIBS)" else # fall back to standard autoconf test @@ -391,9 +399,9 @@ if test x"$with_bzip2" = xyes -o x"$with_bzip2" = xauto; then [BZ2_bzDecompress], [AC_CHECK_HEADER([bzlib.h], [have_bzip2="yes (autoconf test)" - bzip2_libpriv="-lbz2" - bzip2_libstaticconf="$bzip2_libpriv" - BZIP2_LIBS="$bzip2_libpriv"])]) + bzip2_libspriv="-lbz2" + bzip2_libsstaticconf="$bzip2_libspriv" + BZIP2_LIBS="$bzip2_libspriv"])]) fi fi fi @@ -424,15 +432,15 @@ if test x"$with_png" = xyes -o x"$with_png" = xauto; then if test $have_libpng_pkg = yes; then # we have libpng.pc libpng_reqpriv="$libpng_pkg" - libpng_libpriv= - libpng_libstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` + libpng_libspriv= + libpng_libsstaticconf=`$PKG_CONFIG --static --libs "$libpng_pkg"` else libpng_reqpriv= if test "$have_libpng" != no; then # LIBPNG_CFLAGS and LIBPNG_LIBS are set by the user - libpng_libpriv="$LIBPNG_LIBS" - libpng_libstaticconf="$LIBPNG_LIBS" + libpng_libspriv="$LIBPNG_LIBS" + libpng_libsstaticconf="$LIBPNG_LIBS" have_libpng="yes (LIBPNG_CFLAGS and LIBPNG_LIBS)" else # fall back to config script. @@ -440,8 +448,8 @@ if test x"$with_png" = xyes -o x"$with_png" = xauto; then if which libpng-config > /dev/null 2>&1; then LIBPNG_CFLAGS=`libpng-config --cflags` LIBPNG_LIBS=`libpng-config --ldflags` - libpng_libpriv=`libpng-config --static --ldflags` - libpng_libstaticconf="$libpng_libpriv" + libpng_libspriv=`libpng-config --static --ldflags` + libpng_libsstaticconf="$libpng_libspriv" have_libpng="yes (libpng-config)" AC_MSG_RESULT([yes]) else @@ -465,7 +473,7 @@ AC_ARG_WITH([harfbuzz], have_harfbuzz=no if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then - harfbuzz_pkg="harfbuzz >= 0.9.19" + harfbuzz_pkg="harfbuzz >= 0.9.21" have_harfbuzz_pkg=no if test x"$HARFBUZZ_CFLAGS" = x -a x"$HARFBUZZ_LIBS" = x; then @@ -477,15 +485,15 @@ if test x"$with_harfbuzz" = xyes -o x"$with_harfbuzz" = xauto; then if test $have_harfbuzz_pkg = yes; then # we have harfbuzz.pc harfbuzz_reqpriv="$harfbuzz_pkg" - harfbuzz_libpriv= - harfbuzz_libstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` + harfbuzz_libspriv= + harfbuzz_libsstaticconf=`$PKG_CONFIG --static --libs "$harfbuzz_pkg"` else harfbuzz_reqpriv= if test "$have_harfbuzz" != no; then # HARFBUZZ_CFLAGS and HARFBUZZ_LIBS are set by the user - harfbuzz_libpriv="$HARFBUZZ_LIBS" - harfbuzz_libstaticconf="$HARFBUZZ_LIBS" + harfbuzz_libspriv="$HARFBUZZ_LIBS" + harfbuzz_libsstaticconf="$HARFBUZZ_LIBS" have_harfbuzz="yes (HARFBUZZ_CFLAGS and HARFBUZZ_LIBS)" else # since HarfBuzz is quite a new library we don't fall back to a @@ -926,10 +934,10 @@ REQUIRES_PRIVATE=`echo "$REQUIRES_PRIVATE" \ -e 's/,*$//' \ -e 's/,/, /g'` -LIBS_PRIVATE="$zlib_libpriv \ - $bzip2_libpriv \ - $libpng_libpriv \ - $harfbuzz_libpriv \ +LIBS_PRIVATE="$zlib_libspriv \ + $bzip2_libspriv \ + $libpng_libspriv \ + $harfbuzz_libspriv \ $ft2_extra_libs" # beautify LIBS_PRIVATE=`echo "$LIBS_PRIVATE" \ @@ -937,11 +945,11 @@ LIBS_PRIVATE=`echo "$LIBS_PRIVATE" \ -e 's/ *$//' \ -e 's/ */ /g'` -LIBSSTATIC_CONFIG="-lfreetype \ - $zlib_libstaticconf \ - $bzip2_libstaticconf \ - $libpng_libstaticconf \ - $harfbuzz_libstaticconf \ +LIBSSTATIC_CONFIG="-lfreetype \ + $zlib_libsstaticconf \ + $bzip2_libsstaticconf \ + $libpng_libsstaticconf \ + $harfbuzz_libsstaticconf \ $ft2_extra_libs" # remove -L/usr/lib and -L/usr/lib64 since `freetype-config' adds them later # on if necessary; also beautify diff --git a/builds/unix/detect.mk b/builds/unix/detect.mk index 0506e7d..557dc92 100644 --- a/builds/unix/detect.mk +++ b/builds/unix/detect.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2002-2004, 2006, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -76,14 +76,14 @@ ifeq ($(PLATFORM),unix) have_Makefile := $(wildcard $(OBJ_DIR)/Makefile) - CONFIG_SHELL ?= /bin/sh setup: std_setup ifdef must_configure ifneq ($(have_Makefile),) # we are building FT2 not in the src tree - $(CONFIG_SHELL) $(TOP_DIR)/builds/unix/configure $(value CFG) + $(TOP_DIR)/builds/unix/configure $(value CFG) else - cd builds/unix; $(CONFIG_SHELL) ./configure $(value CFG) + cd builds/unix; \ + ./configure $(value CFG) endif endif diff --git a/builds/unix/freetype-config.in b/builds/unix/freetype-config.in index ebc311f..f74707d 100644 --- a/builds/unix/freetype-config.in +++ b/builds/unix/freetype-config.in @@ -1,6 +1,6 @@ #! /bin/sh # -# Copyright 2000-2005, 2008, 2009, 2013, 2014 by +# Copyright 2000-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -17,7 +17,6 @@ exec_prefix="%exec_prefix%" exec_prefix_set="no" includedir="%includedir%" libdir="%libdir%" -enable_shared="%build_libtool_libs%" usage() { @@ -124,21 +123,20 @@ else fi if test "$echo_ft_version" = "yes" ; then - major=`grep define ${SYSROOT}$includedir/freetype2/freetype.h \ + major=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ | grep FREETYPE_MAJOR \ | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - minor=`grep define ${SYSROOT}$includedir/freetype2/freetype.h \ + minor=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ | grep FREETYPE_MINOR \ | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` - patch=`grep define ${SYSROOT}$includedir/freetype2/freetype.h \ + patch=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ | grep FREETYPE_PATCH \ | sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` echo $major.$minor.$patch fi if test "$echo_cflags" = "yes" ; then - cflags="-I${SYSROOT}$includedir/freetype2" - echo $cflags + echo -I${SYSROOT}$includedir/freetype2 fi if test "$echo_libs" = "yes" ; then diff --git a/builds/unix/freetype2.in b/builds/unix/freetype2.in index a488d96..c4dfda4 100644 --- a/builds/unix/freetype2.in +++ b/builds/unix/freetype2.in @@ -1,7 +1,7 @@ prefix=%prefix% exec_prefix=%exec_prefix% libdir=%libdir% -includedir=%includedir%/freetype2 +includedir=%includedir% Name: FreeType 2 URL: http://freetype.org @@ -11,4 +11,4 @@ Requires: Requires.private: %REQUIRES_PRIVATE% Libs: -L${libdir} -lfreetype Libs.private: %LIBS_PRIVATE% -Cflags: -I${includedir} +Cflags: -I${includedir}/freetype2 diff --git a/builds/unix/freetype2.m4 b/builds/unix/freetype2.m4 index 3a806d9..1462fc7 100644 --- a/builds/unix/freetype2.m4 +++ b/builds/unix/freetype2.m4 @@ -1,7 +1,7 @@ # Configure paths for FreeType2 # Marcelo Magallon 2001-10-26, based on gtk.m4 by Owen Taylor # -# Copyright 2001, 2003, 2007, 2009, 2014 by +# Copyright 2001-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/unix/ft-munmap.m4 b/builds/unix/ft-munmap.m4 index 68b3361..db798d8 100644 --- a/builds/unix/ft-munmap.m4 +++ b/builds/unix/ft-munmap.m4 @@ -1,6 +1,6 @@ ## FreeType specific autoconf tests # -# Copyright 2002, 2003, 2004 by +# Copyright 2002-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/unix/ftconfig.in b/builds/unix/ftconfig.in index e66f3ea..fbb1c14 100644 --- a/builds/unix/ftconfig.in +++ b/builds/unix/ftconfig.in @@ -4,7 +4,7 @@ /* */ /* UNIX-specific configuration file (specification only). */ /* */ -/* Copyright 1996-2004, 2006-2009, 2011, 2013, 2014 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -34,8 +34,8 @@ /*************************************************************************/ -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ +#ifndef FTCONFIG_H_ +#define FTCONFIG_H_ #include #include FT_CONFIG_OPTIONS_H @@ -86,10 +86,10 @@ FT_BEGIN_HEADER #else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ /* Following cpp computation of the bit length of int and long */ - /* is copied from default include/config/ftconfig.h. */ + /* is copied from default include/freetype/config/ftconfig.h. */ /* If any improvement is required for this file, it should be */ /* applied to the original header file for the builders that */ - /* does not use configure script. */ + /* do not use configure script. */ /* The size of an `int' type. */ #if FT_UINT_MAX == 0xFFFFUL @@ -305,7 +305,13 @@ FT_BEGIN_HEADER /* */ #elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) -#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ +#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L + +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ /* this compiler provides the __int64 type */ #define FT_LONG64 @@ -339,7 +345,7 @@ FT_BEGIN_HEADER #define FT_INT64 long long int #define FT_UINT64 unsigned long long int -#endif /* _MSC_VER */ +#endif /* __STDC_VERSION__ >= 199901L */ #endif /* FT_SIZEOF_LONG == 8 */ @@ -349,11 +355,28 @@ FT_BEGIN_HEADER #endif + /*************************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /*************************************************************************/ + + #define FT_BEGIN_STMNT do { #define FT_END_STMNT } while ( 0 ) #define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + /* typeof condition taken from gnulib's `intprops.h' header file */ +#if ( __GNUC__ >= 2 || \ + defined( __IBM__TYPEOF__ ) || \ + ( __SUNPRO_C >= 0x5110 && !__STDC__ ) ) +#define FT_TYPEOF( type ) (__typeof__ (type)) +#else +#define FT_TYPEOF( type ) /* empty */ +#endif + + #ifdef FT_MAKE_OPTION_SINGLE_OBJECT #define FT_LOCAL( x ) static x @@ -474,7 +497,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FTCONFIG_H__ */ +#endif /* FTCONFIG_H_ */ /* END */ diff --git a/builds/unix/ftsystem.c b/builds/unix/ftsystem.c index 7f7b3ac..a5e4459 100644 --- a/builds/unix/ftsystem.c +++ b/builds/unix/ftsystem.c @@ -4,7 +4,7 @@ /* */ /* Unix-specific FreeType low-level system interface (body). */ /* */ -/* Copyright 1996-2002, 2004-2008, 2013 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ diff --git a/builds/unix/install-sh b/builds/unix/install-sh index 0436737..0b0fdcb 100755 --- a/builds/unix/install-sh +++ b/builds/unix/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2013-10-30.23; # UTC +scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -82,7 +82,7 @@ dir_arg= dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -139,14 +139,16 @@ while test $# -ne 0; do -s) stripcmd=$stripprog;; - -t) dst_arg=$2 + -t) + is_target_a_directory=always + dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; @@ -161,6 +163,16 @@ while test $# -ne 0; do shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -192,6 +204,15 @@ if test $# -eq 0; then fi if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 @@ -253,7 +274,7 @@ do # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test -n "$no_target_directory"; then + if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi diff --git a/builds/unix/install.mk b/builds/unix/install.mk index 83525ee..f944c5c 100644 --- a/builds/unix/install.mk +++ b/builds/unix/install.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2002, 2003, 2006, 2013, 2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -24,35 +24,37 @@ # Unix installation and deinstallation targets. # -# Note that we remove any data in the `freetype' subdirectory found in -# `$(includedir)/freetype2', which was the previous location of the header -# files up to version 2.5.0. +# Note that we remove any data found in `$(includedir)/freetype2' before +# installing new files to avoid interferences with files installed by +# previous FreeType versions (which use slightly different locations). +# +# We also remove `$(includedir)/ft2build.h' for the same reason. # install: $(PROJECT_LIBRARY) - $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \ - $(DESTDIR)$(libdir)/pkgconfig \ - $(DESTDIR)$(includedir)/freetype2/config \ - $(DESTDIR)$(bindir) \ - $(DESTDIR)$(datadir)/aclocal \ + -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 + -$(DELETE) $(DESTDIR)$(includedir)/ft2build.h + $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \ + $(DESTDIR)$(libdir)/pkgconfig \ + $(DESTDIR)$(includedir)/freetype2/freetype/config \ + $(DESTDIR)$(bindir) \ + $(DESTDIR)$(datadir)/aclocal \ $(DESTDIR)$(mandir)/man1 $(LIBTOOL) --mode=install $(INSTALL) \ $(PROJECT_LIBRARY) $(DESTDIR)$(libdir) - -for P in $(PUBLIC_H) ; do \ - $(INSTALL_DATA) \ - $$P $(DESTDIR)$(includedir)/freetype2 ; \ + -for P in $(PUBLIC_H) ; do \ + $(INSTALL_DATA) \ + $$P $(DESTDIR)$(includedir)/freetype2/freetype ; \ done - -for P in $(CONFIG_H) ; do \ - $(INSTALL_DATA) \ - $$P $(DESTDIR)$(includedir)/freetype2/config ; \ + -for P in $(CONFIG_H) ; do \ + $(INSTALL_DATA) \ + $$P $(DESTDIR)$(includedir)/freetype2/freetype/config ; \ done - -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/config/* - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype/config - -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/* - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype - $(INSTALL_DATA) $(OBJ_BUILD)/ftconfig.h \ - $(DESTDIR)$(includedir)/freetype2/config/ftconfig.h - $(INSTALL_DATA) $(OBJ_DIR)/ftmodule.h \ - $(DESTDIR)$(includedir)/freetype2/config/ftmodule.h + $(INSTALL_DATA) $(TOP_DIR)/include/ft2build.h \ + $(DESTDIR)$(includedir)/freetype2/ft2build.h + $(INSTALL_DATA) $(OBJ_BUILD)/ftconfig.h \ + $(DESTDIR)$(includedir)/freetype2/freetype/config/ftconfig.h + $(INSTALL_DATA) $(OBJ_DIR)/ftmodule.h \ + $(DESTDIR)$(includedir)/freetype2/freetype/config/ftmodule.h $(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \ $(DESTDIR)$(bindir)/freetype-config $(INSTALL_SCRIPT) -m 644 $(BUILD_DIR)/freetype2.m4 \ @@ -65,9 +67,6 @@ install: $(PROJECT_LIBRARY) uninstall: -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIBRARY).$A - -$(DELETE) $(DESTDIR)$(includedir)/freetype2/config/* - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/config - -$(DELETE) $(DESTDIR)$(includedir)/freetype2/* -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 -$(DELETE) $(DESTDIR)$(bindir)/freetype-config -$(DELETE) $(DESTDIR)$(datadir)/aclocal/freetype2.m4 @@ -90,7 +89,6 @@ clean_project_unix: distclean_project_unix: clean_project_unix -$(DELETE) $(PROJECT_LIBRARY) - -$(DELETE) $(OBJ_DIR)/.libs/* -$(DELDIR) $(OBJ_DIR)/.libs -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) diff --git a/builds/unix/ltmain.sh b/builds/unix/ltmain.sh index 08f3a26..0f0a2da 100644 --- a/builds/unix/ltmain.sh +++ b/builds/unix/ltmain.sh @@ -2,11 +2,11 @@ ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 -# libtool (GNU libtool) 2.4.2.444.28-053d +# libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -31,8 +31,8 @@ PROGRAM=libtool PACKAGE=libtool -VERSION=2.4.2.444.28-053d -package_revision=2.4.2.444.28 +VERSION=2.4.6 +package_revision=2.4.6 ## ------ ## @@ -64,12 +64,12 @@ package_revision=2.4.2.444.28 # libraries, which are installed to $pkgauxdir. # Set a version string for this script. -scriptversion=2014-02-10.13; # UTC +scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -192,7 +192,7 @@ func_path_progs () _G_path_prog_max=0 _G_path_prog_found=false - _G_save_IFS=$IFS; IFS=$PATH_SEPARATOR + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. @@ -1333,7 +1333,7 @@ func_warning () # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4-p12a < 1.4-p3a +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably @@ -1375,7 +1375,7 @@ scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 -# Copyright (C) 2010-2014 Free Software Foundation, Inc. +# Copyright (C) 2010-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -1977,7 +1977,7 @@ func_version () # End: # Set a version string. -scriptversion='(GNU libtool) 2.4.2.444.28-053d' +scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... @@ -2039,7 +2039,12 @@ usage_message="Options: " # Additional text appended to 'usage_message' in response to '--help'. -long_help_message=$long_help_message" +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message MODE must be one of the following: @@ -2063,13 +2068,15 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.2.444.28-053d + version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . -GNU libtool home page: . +GNU libtool home page: . General help using GNU software: ." + exit 0 +} # func_lo2o OBJECT-NAME @@ -2411,7 +2418,7 @@ libtool_validate_options () case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2*) + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; @@ -2482,6 +2489,14 @@ $1 _LTECHO_EOF' } +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out @@ -2489,8 +2504,7 @@ _LTECHO_EOF' func_lalib_p () { test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file @@ -2522,7 +2536,8 @@ func_lalib_unsafe_p () # determined imposters. func_ltwrapper_script_p () { - func_lalib_p "$1" + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file @@ -3722,7 +3737,8 @@ The following components of LINK-COMMAND are treated specially: -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information @@ -4304,6 +4320,13 @@ func_mode_install () ;; esac ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' @@ -5145,7 +5168,7 @@ func_extract_archives () $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do @@ -5418,7 +5441,7 @@ func_exec_program () if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else - $ECHO \"\$relink_command_output\" >&2 + \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi @@ -5650,7 +5673,12 @@ void lt_dump_script (FILE *f); EOF cat <&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= @@ -8694,13 +8805,13 @@ func_mode_link () # case $version_type in # correct linux to gnu/linux during the next big refactor - darwin|linux|osf|windows|none) + darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; - freebsd-aout|freebsd-elf|qnx|sunos) + freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 @@ -8786,8 +8897,9 @@ func_mode_link () ;; freebsd-elf) - major=.$current - versuffix=.$current + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision ;; irix | nonstopux) @@ -8850,6 +8962,11 @@ func_mode_link () versuffix=.$current ;; + sco) + major=.$current + versuffix=.$current + ;; + sunos) major=.$current versuffix=.$current.$revision diff --git a/builds/unix/mkinstalldirs b/builds/unix/mkinstalldirs deleted file mode 100755 index ef7e16f..0000000 --- a/builds/unix/mkinstalldirs +++ /dev/null @@ -1,161 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2006-05-11.19 - -# Original author: Noah Friedman -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' -IFS=" "" $nl" -errstatus=0 -dirmode= - -usage="\ -Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... - -Create each directory DIR (with mode MODE, if specified), including all -leading file name components. - -Report bugs to ." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" - exit $? - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --version) - echo "$0 $scriptversion" - exit $? - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -# mkdir -p a/c at the same time, both will detect that a is missing, -# one will create a, then the other will try to create a and die with -# a "File exists" error. This is a problem when calling mkinstalldirs -# from a parallel make. We use --version in the probe to restrict -# ourselves to GNU mkdir, which is thread-safe. -case $dirmode in - '') - if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - test -d ./-p && rmdir ./-p - test -d ./--version && rmdir ./--version - fi - ;; - *) - if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && - test ! -d ./--version; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - else - # Clean up after NextStep and OpenStep mkdir. - for d in ./-m ./-p ./--version "./$dirmode"; - do - test -d $d && rmdir $d - done - fi - ;; -esac - -for file -do - case $file in - /*) pathcomp=/ ;; - *) pathcomp= ;; - esac - oIFS=$IFS - IFS=/ - set fnord $file - shift - IFS=$oIFS - - for d - do - test "x$d" = x && continue - - pathcomp=$pathcomp$d - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr= - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp=$pathcomp/ - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/builds/unix/unix-cc.in b/builds/unix/unix-cc.in index b84bc5d..df09e7e 100644 --- a/builds/unix/unix-cc.in +++ b/builds/unix/unix-cc.in @@ -2,7 +2,7 @@ # FreeType 2 template for Unix-specific compiler definitions # -# Copyright 1996-2000, 2002, 2003, 2005, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -109,6 +109,6 @@ CCexe := $(CCraw_build) # used to compile `apinames' only LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \ -rpath $(libdir) -version-info $(version_info) \ $(LDFLAGS) -no-undefined \ - # -export-symbols $(EXPORTS_LIST) + -export-symbols $(EXPORTS_LIST) # EOF diff --git a/builds/unix/unix-def.in b/builds/unix/unix-def.in index 4c06a05..f7b557f 100644 --- a/builds/unix/unix-def.in +++ b/builds/unix/unix-def.in @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2002, 2004, 2006, 2008, 2013, 2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, @@ -17,7 +17,7 @@ SHELL := @SHELL@ TOP_DIR := $(shell cd $(TOP_DIR); pwd) DELETE := rm -f -DELDIR := @RMDIR@ +DELDIR := rm -rf CAT := cat SEP := / @@ -32,7 +32,7 @@ INSTALL := @INSTALL@ INSTALL_DATA := @INSTALL_DATA@ INSTALL_PROGRAM := @INSTALL_PROGRAM@ INSTALL_SCRIPT := @INSTALL_SCRIPT@ -MKINSTALLDIRS := $(BUILD_DIR)/mkinstalldirs +MKINSTALLDIRS := @MKDIR_P@ CLEAN += $(OBJ_BUILD)/freetype-config \ $(OBJ_BUILD)/freetype2.pc @@ -142,7 +142,7 @@ $(OBJ_BUILD)/freetype2.pc: $(TOP_DIR)/builds/unix/freetype2.in chmod a-w $@.tmp mv $@.tmp $@ -all: $(OBJ_BUILD)/freetype-config \ +all install: $(OBJ_BUILD)/freetype-config \ $(OBJ_BUILD)/freetype2.pc # EOF diff --git a/builds/unix/unix-dev.mk b/builds/unix/unix-dev.mk index 76bae38..3c72e57 100644 --- a/builds/unix/unix-dev.mk +++ b/builds/unix/unix-dev.mk @@ -6,7 +6,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/unix/unix-lcc.mk b/builds/unix/unix-lcc.mk index 6038e52..1c254d1 100644 --- a/builds/unix/unix-lcc.mk +++ b/builds/unix/unix-lcc.mk @@ -6,7 +6,7 @@ # -# Copyright 1996-2000 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/unix/unix.mk b/builds/unix/unix.mk index 7f9d9a3..fba1e1d 100644 --- a/builds/unix/unix.mk +++ b/builds/unix/unix.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2002, 2004, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/unix/unixddef.mk b/builds/unix/unixddef.mk index 130d6b0..adba517 100644 --- a/builds/unix/unixddef.mk +++ b/builds/unix/unixddef.mk @@ -4,7 +4,7 @@ # -# Copyright 1996-2000, 2003, 2006 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/vms/ftconfig.h b/builds/vms/ftconfig.h index b309651..fb75e40 100644 --- a/builds/vms/ftconfig.h +++ b/builds/vms/ftconfig.h @@ -4,7 +4,7 @@ /* */ /* VMS-specific configuration file (specification only). */ /* */ -/* Copyright 1996-2004, 2006-2008, 2011, 2013, 2014 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -33,8 +33,8 @@ /* */ /*************************************************************************/ -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ +#ifndef FTCONFIG_H_ +#define FTCONFIG_H_ #include #include FT_CONFIG_OPTIONS_H @@ -248,7 +248,13 @@ FT_BEGIN_HEADER /* */ #elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 ) -#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ +#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L + +#define FT_LONG64 +#define FT_INT64 long long int +#define FT_UINT64 unsigned long long int + +#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ /* this compiler provides the __int64 type */ #define FT_LONG64 @@ -282,7 +288,7 @@ FT_BEGIN_HEADER #define FT_INT64 long long int #define FT_UINT64 unsigned long long int -#endif /* _MSC_VER */ +#endif /* __STDC_VERSION__ >= 199901L */ #endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ @@ -292,11 +298,28 @@ FT_BEGIN_HEADER #endif + /*************************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /*************************************************************************/ + + #define FT_BEGIN_STMNT do { #define FT_END_STMNT } while ( 0 ) #define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT + /* typeof condition taken from gnulib's `intprops.h' header file */ +#if ( __GNUC__ >= 2 || \ + defined( __IBM__TYPEOF__ ) || \ + ( __SUNPRO_C >= 0x5110 && !__STDC__ ) ) +#define FT_TYPEOF( type ) (__typeof__ (type)) +#else +#define FT_TYPEOF( type ) /* empty */ +#endif + + #ifdef FT_MAKE_OPTION_SINGLE_OBJECT #define FT_LOCAL( x ) static x @@ -417,7 +440,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FTCONFIG_H__ */ +#endif /* FTCONFIG_H_ */ /* END */ diff --git a/builds/vms/ftsystem.c b/builds/vms/ftsystem.c index 5c2819e..a13cb22 100644 --- a/builds/vms/ftsystem.c +++ b/builds/vms/ftsystem.c @@ -4,7 +4,7 @@ /* */ /* VMS-specific FreeType low-level system interface (body). */ /* */ -/* Copyright 1996-2002, 2005, 2010, 2013 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ diff --git a/builds/wince/ftdebug.c b/builds/wince/ftdebug.c index 24f9658..6e35e17 100644 --- a/builds/wince/ftdebug.c +++ b/builds/wince/ftdebug.c @@ -4,7 +4,7 @@ /* */ /* Debugging and logging component for WinCE (body). */ /* */ -/* Copyright 1996-2002, 2005, 2008, 2009, 2013 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -148,8 +148,8 @@ /* for the memory and stream components which are set to 6 and 5, */ /* respectively. */ /* */ - /* See the file for details of the available toggle */ - /* names. */ + /* See the file `include/freetype/internal/fttrace.h' for details of the */ + /* available toggle names. */ /* */ /* The level must be between 0 and 6; 0 means quiet (except for serious */ /* runtime errors), and 6 means _very_ verbose. */ diff --git a/builds/wince/vc2005-ce/freetype.sln b/builds/wince/vc2005-ce/freetype.sln index 76e52d8..ff45463 100644 --- a/builds/wince/vc2005-ce/freetype.sln +++ b/builds/wince/vc2005-ce/freetype.sln @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" diff --git a/builds/wince/vc2005-ce/freetype.vcproj b/builds/wince/vc2005-ce/freetype.vcproj index 5614235..c7aa514 100644 --- a/builds/wince/vc2005-ce/freetype.vcproj +++ b/builds/wince/vc2005-ce/freetype.vcproj @@ -21,7 +21,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -61,7 +61,7 @@ - + @@ -81,7 +81,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -121,7 +121,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -161,7 +161,7 @@ - + @@ -181,7 +181,7 @@ - + @@ -201,7 +201,7 @@ - + @@ -221,7 +221,7 @@ - + @@ -241,7 +241,7 @@ - + @@ -261,7 +261,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -301,7 +301,7 @@ - + @@ -321,7 +321,7 @@ - + @@ -341,7 +341,7 @@ - + @@ -361,7 +361,7 @@ - + @@ -381,7 +381,7 @@ - + @@ -401,7 +401,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -441,7 +441,7 @@ - + @@ -461,7 +461,7 @@ - + @@ -481,7 +481,7 @@ - + @@ -501,7 +501,7 @@ - + @@ -521,7 +521,7 @@ - + @@ -541,7 +541,7 @@ - + @@ -561,7 +561,7 @@ - + @@ -581,7 +581,7 @@ - + @@ -601,7 +601,7 @@ - + @@ -621,7 +621,7 @@ - + @@ -641,7 +641,7 @@ - + @@ -661,7 +661,7 @@ - + @@ -681,7 +681,7 @@ - + @@ -701,7 +701,7 @@ - + @@ -721,7 +721,7 @@ - + @@ -741,7 +741,7 @@ - + @@ -758,7 +758,7 @@ - + @@ -2135,6 +2135,8 @@ + + @@ -2279,8 +2281,6 @@ - - @@ -3822,15 +3822,15 @@ - + - + - + - + - + diff --git a/builds/wince/vc2005-ce/index.html b/builds/wince/vc2005-ce/index.html index e2160f6..4afa23d 100644 --- a/builds/wince/vc2005-ce/index.html +++ b/builds/wince/vc2005-ce/index.html @@ -21,22 +21,22 @@ the following targets:
  • PPC/SP WM6 (Windows Mobile 6)
  • -It compiles the following libraries from the FreeType 2.5.5 sources:

    +It compiles the following libraries from the FreeType 2.6.5 sources:

      -    freetype255.lib     - release build; single threaded
      -    freetype255_D.lib   - debug build;   single threaded
      -    freetype255MT.lib   - release build; multi-threaded
      -    freetype255MT_D.lib - debug build;   multi-threaded
      + freetype265.lib - release build; single threaded + freetype265_D.lib - debug build; single threaded + freetype265MT.lib - release build; multi-threaded + freetype265MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP archives are already stored this way, so no further action is required. If you use some .tar.*z archives, be sure to configure your extracting tool to convert the line endings. For example, with WinZip, you should activate the TAR -file smart CR/LF Conversion option. Alternatively, you may consider +href="http://www.winzip.com">WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider using the unix2dos or u2d utilities that are floating around, which specifically deal with this particular problem. diff --git a/builds/wince/vc2008-ce/freetype.sln b/builds/wince/vc2008-ce/freetype.sln index d8efd96..2391432 100644 --- a/builds/wince/vc2008-ce/freetype.sln +++ b/builds/wince/vc2008-ce/freetype.sln @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" diff --git a/builds/wince/vc2008-ce/freetype.vcproj b/builds/wince/vc2008-ce/freetype.vcproj index e36ccb0..c62fda2 100644 --- a/builds/wince/vc2008-ce/freetype.vcproj +++ b/builds/wince/vc2008-ce/freetype.vcproj @@ -88,7 +88,7 @@ /> + + @@ -8331,10 +8335,6 @@ > - - diff --git a/builds/wince/vc2008-ce/index.html b/builds/wince/vc2008-ce/index.html index 469baef..8c436cb 100644 --- a/builds/wince/vc2008-ce/index.html +++ b/builds/wince/vc2008-ce/index.html @@ -21,22 +21,22 @@ the following targets:

  • PPC/SP WM6 (Windows Mobile 6)
  • -It compiles the following libraries from the FreeType 2.5.5 sources:

    +It compiles the following libraries from the FreeType 2.6.5 sources:

      -    freetype255.lib     - release build; single threaded
      -    freetype255_D.lib   - debug build;   single threaded
      -    freetype255MT.lib   - release build; multi-threaded
      -    freetype255MT_D.lib - debug build;   multi-threaded
      + freetype265.lib - release build; single threaded + freetype265_D.lib - debug build; single threaded + freetype265MT.lib - release build; multi-threaded + freetype265MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP archives are already stored this way, so no further action is required. If you use some .tar.*z archives, be sure to configure your extracting tool to convert the line endings. For example, with WinZip, you should activate the TAR -file smart CR/LF Conversion option. Alternatively, you may consider +href="http://www.winzip.com">WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider using the unix2dos or u2d utilities that are floating around, which specifically deal with this particular problem. diff --git a/builds/windows/detect.mk b/builds/windows/detect.mk index 9dca261..0872303 100644 --- a/builds/windows/detect.mk +++ b/builds/windows/detect.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2004, 2006, 2007, 2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/ftdebug.c b/builds/windows/ftdebug.c index dd2c2ad..f29cca0 100644 --- a/builds/windows/ftdebug.c +++ b/builds/windows/ftdebug.c @@ -4,7 +4,7 @@ /* */ /* Debugging and logging component for Win32 (body). */ /* */ -/* Copyright 1996-2002, 2005, 2008, 2009, 2013 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -137,8 +137,8 @@ /* for the memory and stream components which are set to 6 and 5, */ /* respectively. */ /* */ - /* See the file for details of the available toggle */ - /* names. */ + /* See the file `include/freetype/internal/fttrace.h' for details of the */ + /* available toggle names. */ /* */ /* The level must be between 0 and 6; 0 means quiet (except for serious */ /* runtime errors), and 6 means _very_ verbose. */ diff --git a/builds/windows/vc2005/freetype.vcproj b/builds/windows/vc2005/freetype.vcproj index 5880b7d..f938b53 100644 --- a/builds/windows/vc2005/freetype.vcproj +++ b/builds/windows/vc2005/freetype.vcproj @@ -16,7 +16,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -50,7 +50,7 @@ - + @@ -67,7 +67,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -101,7 +101,7 @@ - + @@ -346,6 +346,8 @@ + + @@ -374,8 +376,6 @@ - - @@ -629,15 +629,15 @@ - + - + - + - + - + diff --git a/builds/windows/vc2005/index.html b/builds/windows/vc2005/index.html index 4929dcd..f6eb4fd 100644 --- a/builds/windows/vc2005/index.html +++ b/builds/windows/vc2005/index.html @@ -11,22 +11,22 @@

    This directory contains project files for Visual C++, named freetype.vcproj, and Visual Studio, called freetype.sln. It -compiles the following libraries from the FreeType 2.5.5 sources:

    +compiles the following libraries from the FreeType 2.6.5 sources:

      -    freetype255.lib     - release build; single threaded
      -    freetype255_D.lib   - debug build;   single threaded
      -    freetype255MT.lib   - release build; multi-threaded
      -    freetype255MT_D.lib - debug build;   multi-threaded
      + freetype265.lib - release build; single threaded + freetype265_D.lib - debug build; single threaded + freetype265MT.lib - release build; multi-threaded + freetype265MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP archives are already stored this way, so no further action is required. If you use some .tar.*z archives, be sure to configure your extracting tool to convert the line endings. For example, with WinZip, you should activate the TAR -file smart CR/LF Conversion option. Alternatively, you may consider +href="http://www.winzip.com">WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider using the unix2dos or u2d utilities that are floating around, which specifically deal with this particular problem. diff --git a/builds/windows/vc2008/freetype.vcproj b/builds/windows/vc2008/freetype.vcproj index 95d722b..b83b5b1 100644 --- a/builds/windows/vc2008/freetype.vcproj +++ b/builds/windows/vc2008/freetype.vcproj @@ -70,7 +70,7 @@ /> + + - - @@ -2154,23 +2154,23 @@ > diff --git a/builds/windows/vc2008/index.html b/builds/windows/vc2008/index.html index 7e0d154..bf522e9 100644 --- a/builds/windows/vc2008/index.html +++ b/builds/windows/vc2008/index.html @@ -11,22 +11,22 @@

    This directory contains project files for Visual C++, named freetype.vcproj, and Visual Studio, called freetype.sln. It -compiles the following libraries from the FreeType 2.5.5 sources:

    +compiles the following libraries from the FreeType 2.6.5 sources:

      -    freetype255.lib     - release build; single threaded
      -    freetype255_D.lib   - debug build;   single threaded
      -    freetype255MT.lib   - release build; multi-threaded
      -    freetype255MT_D.lib - debug build;   multi-threaded
      + freetype265.lib - release build; single threaded + freetype265_D.lib - debug build; single threaded + freetype265MT.lib - release build; multi-threaded + freetype265MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP archives are already stored this way, so no further action is required. If you use some .tar.*z archives, be sure to configure your extracting tool to convert the line endings. For example, with WinZip, you should activate the TAR -file smart CR/LF Conversion option. Alternatively, you may consider +href="http://www.winzip.com">WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider using the unix2dos or u2d utilities that are floating around, which specifically deal with this particular problem. diff --git a/builds/windows/vc2010/freetype.sln b/builds/windows/vc2010/freetype.sln index 3bd176a..b209edd 100644 --- a/builds/windows/vc2010/freetype.sln +++ b/builds/windows/vc2010/freetype.sln @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio Express 2012 for Windows Desktop Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" diff --git a/builds/windows/vc2010/freetype.vcxproj b/builds/windows/vc2010/freetype.vcxproj index 7cafe45..f164b31 100644 --- a/builds/windows/vc2010/freetype.vcxproj +++ b/builds/windows/vc2010/freetype.vcxproj @@ -1,4 +1,4 @@ - + @@ -191,18 +191,18 @@ - freetype255d - freetype255d - freetype255MTd - freetype255MTd - freetype255STd - freetype255STd - freetype255 - freetype255 - freetype255MT - freetype255MT - freetype255ST - freetype255ST + freetype265d + freetype265d + freetype265MTd + freetype265MTd + freetype265STd + freetype265STd + freetype265 + freetype265 + freetype265MT + freetype265MT + freetype265ST + freetype265ST @@ -1122,6 +1122,7 @@ %(PreprocessorDefinitions) + Disabled Disabled @@ -1170,7 +1171,6 @@ - @@ -1706,11 +1706,11 @@ - - - - - + + + + + diff --git a/builds/windows/vc2010/freetype.vcxproj.filters b/builds/windows/vc2010/freetype.vcxproj.filters index 99fc43f..0e947f4 100644 --- a/builds/windows/vc2010/freetype.vcxproj.filters +++ b/builds/windows/vc2010/freetype.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -65,6 +65,9 @@ Source Files\FT_MODULES + + Source Files\FT_MODULES + Source Files\FT_MODULES @@ -80,9 +83,6 @@ Source Files\FT_MODULES - - Source Files\FT_MODULES - Source Files\FT_MODULES @@ -136,19 +136,19 @@ Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files diff --git a/builds/windows/vc2010/index.html b/builds/windows/vc2010/index.html index cb205aa..2e27e85 100644 --- a/builds/windows/vc2010/index.html +++ b/builds/windows/vc2010/index.html @@ -12,16 +12,16 @@

    This directory contains a project file for Visual C++ (VS.NET 2010 or newer), named freetype.vcxproj, and Visual Studio, called freetype.sln. It compiles the following libraries from the -FreeType 2.5.5 sources:

    +FreeType 2.6.5 sources:

      -freetype255.lib     - release build
      -freetype255d.lib    - debug build
      -freetype255ST.lib   - release build; single threaded
      -freetype255STd.lib  - debug build;   single threaded
      -freetype255MT.lib   - release build; multi-threaded
      -freetype255MTd.lib  - debug build;   multi-threaded
      + freetype265.lib - release build + freetype265d.lib - debug build + freetype265ST.lib - release build; single threaded + freetype265STd.lib - debug build; single threaded + freetype265MT.lib - release build; multi-threaded + freetype265MTd.lib - debug build; multi-threaded

    Both Win32 and x64 builds are supported.

    diff --git a/builds/windows/visualc/freetype.dsp b/builds/windows/visualc/freetype.dsp index cf76f7c..1028ad1 100644 --- a/builds/windows/visualc/freetype.dsp +++ b/builds/windows/visualc/freetype.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug" @@ -78,7 +78,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" @@ -102,8 +102,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype255_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255MT_D.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype265_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265MT_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" @@ -126,8 +126,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype255.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255MT.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype265.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265MT.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" @@ -151,8 +151,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype255.lib" -# ADD LIB32 /out:"..\..\..\objs\freetype255ST.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype265.lib" +# ADD LIB32 /out:"..\..\..\objs\freetype265ST.lib" # SUBTRACT LIB32 /nologo !ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" @@ -177,8 +177,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype255_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255ST_D.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype265_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265ST_D.lib" !ENDIF @@ -226,6 +226,10 @@ SOURCE=..\..\..\src\base\ftbitmap.c # End Source File # Begin Source File +SOURCE=..\..\..\src\base\ftfntfmt.c +# End Source File +# Begin Source File + SOURCE=..\..\..\src\base\ftfstype.c # End Source File # Begin Source File @@ -301,10 +305,6 @@ SOURCE=..\..\..\src\base\ftwinfnt.c # End Source File # Begin Source File -SOURCE=..\..\..\src\base\ftxf86.c -# End Source File -# Begin Source File - SOURCE=..\..\..\src\pcf\pcf.c # SUBTRACT CPP /Fr # End Source File @@ -377,23 +377,23 @@ SOURCE=..\..\..\include\ft2build.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftconfig.h +SOURCE=..\..\..\include\freetype\config\ftconfig.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftheader.h +SOURCE=..\..\..\include\freetype\config\ftheader.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftmodule.h +SOURCE=..\..\..\include\freetype\config\ftmodule.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftoption.h +SOURCE=..\..\..\include\freetype\config\ftoption.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftstdlib.h +SOURCE=..\..\..\include\freetype\config\ftstdlib.h # End Source File # End Group # End Target diff --git a/builds/windows/visualc/freetype.vcproj b/builds/windows/visualc/freetype.vcproj index a71a0e9..b8d68bf 100644 --- a/builds/windows/visualc/freetype.vcproj +++ b/builds/windows/visualc/freetype.vcproj @@ -69,7 +69,7 @@ />
    + + - - @@ -2153,23 +2153,23 @@ > diff --git a/builds/windows/visualc/index.html b/builds/windows/visualc/index.html index 751d7ad..003d2f3 100644 --- a/builds/windows/visualc/index.html +++ b/builds/windows/visualc/index.html @@ -11,22 +11,22 @@

    This directory contains project files for Visual C++, named freetype.dsp, and Visual Studio, called freetype.sln. It -compiles the following libraries from the FreeType 2.5.5 sources:

    +compiles the following libraries from the FreeType 2.6.5 sources:

      -    freetype255.lib     - release build; single threaded
      -    freetype255_D.lib   - debug build;   single threaded
      -    freetype255MT.lib   - release build; multi-threaded
      -    freetype255MT_D.lib - debug build;   multi-threaded
      + freetype265.lib - release build; single threaded + freetype265_D.lib - debug build; single threaded + freetype265MT.lib - release build; multi-threaded + freetype265MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP archives are already stored this way, so no further action is required. If you use some .tar.*z archives, be sure to configure your extracting tool to convert the line endings. For example, with WinZip, you should activate the TAR -file smart CR/LF Conversion option. Alternatively, you may consider +href="http://www.winzip.com">WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider using the unix2dos or u2d utilities that are floating around, which specifically deal with this particular problem. diff --git a/builds/windows/visualce/freetype.dsp b/builds/windows/visualce/freetype.dsp index cf76f7c..1028ad1 100644 --- a/builds/windows/visualce/freetype.dsp +++ b/builds/windows/visualce/freetype.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug" @@ -78,7 +78,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" @@ -102,8 +102,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype255_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255MT_D.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype265_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265MT_D.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" @@ -126,8 +126,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype255.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255MT.lib" +# ADD BASE LIB32 /nologo /out:"lib\freetype265.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265MT.lib" !ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" @@ -151,8 +151,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype255.lib" -# ADD LIB32 /out:"..\..\..\objs\freetype255ST.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype265.lib" +# ADD LIB32 /out:"..\..\..\objs\freetype265ST.lib" # SUBTRACT LIB32 /nologo !ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" @@ -177,8 +177,8 @@ BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype255_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype255ST_D.lib" +# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype265_D.lib" +# ADD LIB32 /nologo /out:"..\..\..\objs\freetype265ST_D.lib" !ENDIF @@ -226,6 +226,10 @@ SOURCE=..\..\..\src\base\ftbitmap.c # End Source File # Begin Source File +SOURCE=..\..\..\src\base\ftfntfmt.c +# End Source File +# Begin Source File + SOURCE=..\..\..\src\base\ftfstype.c # End Source File # Begin Source File @@ -301,10 +305,6 @@ SOURCE=..\..\..\src\base\ftwinfnt.c # End Source File # Begin Source File -SOURCE=..\..\..\src\base\ftxf86.c -# End Source File -# Begin Source File - SOURCE=..\..\..\src\pcf\pcf.c # SUBTRACT CPP /Fr # End Source File @@ -377,23 +377,23 @@ SOURCE=..\..\..\include\ft2build.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftconfig.h +SOURCE=..\..\..\include\freetype\config\ftconfig.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftheader.h +SOURCE=..\..\..\include\freetype\config\ftheader.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftmodule.h +SOURCE=..\..\..\include\freetype\config\ftmodule.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftoption.h +SOURCE=..\..\..\include\freetype\config\ftoption.h # End Source File # Begin Source File -SOURCE=..\..\..\include\config\ftstdlib.h +SOURCE=..\..\..\include\freetype\config\ftstdlib.h # End Source File # End Group # End Target diff --git a/builds/windows/visualce/freetype.vcproj b/builds/windows/visualce/freetype.vcproj index e4cddfb..ff680da 100644 --- a/builds/windows/visualce/freetype.vcproj +++ b/builds/windows/visualce/freetype.vcproj @@ -87,7 +87,7 @@ /> + + - - @@ -13859,23 +13859,23 @@ > diff --git a/builds/windows/visualce/index.html b/builds/windows/visualce/index.html index 68d15fd..e207bc1 100644 --- a/builds/windows/visualce/index.html +++ b/builds/windows/visualce/index.html @@ -21,22 +21,22 @@ the following targets:

  • PPC/SP WM6 (Windows Mobile 6)
  • -It compiles the following libraries from the FreeType 2.5.5 sources:

    +It compiles the following libraries from the FreeType 2.6.5 sources:

      -    freetype255.lib     - release build; single threaded
      -    freetype255_D.lib   - debug build;   single threaded
      -    freetype255MT.lib   - release build; multi-threaded
      -    freetype255MT_D.lib - debug build;   multi-threaded
      + freetype265.lib - release build; single threaded + freetype265_D.lib - debug build; single threaded + freetype265MT.lib - release build; multi-threaded + freetype265MT_D.lib - debug build; multi-threaded

    Be sure to extract the files with the Windows (CR+LF) line endings. ZIP archives are already stored this way, so no further action is required. If you use some .tar.*z archives, be sure to configure your extracting tool to convert the line endings. For example, with WinZip, you should activate the TAR -file smart CR/LF Conversion option. Alternatively, you may consider +href="http://www.winzip.com">WinZip, you should activate the TAR +file smart CR/LF Conversion option. Alternatively, you may consider using the unix2dos or u2d utilities that are floating around, which specifically deal with this particular problem. diff --git a/builds/windows/w32-bcc.mk b/builds/windows/w32-bcc.mk index 87d8ea3..2692622 100644 --- a/builds/windows/w32-bcc.mk +++ b/builds/windows/w32-bcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-bccd.mk b/builds/windows/w32-bccd.mk index dd21edd..2e52672 100644 --- a/builds/windows/w32-bccd.mk +++ b/builds/windows/w32-bccd.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2006, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-dev.mk b/builds/windows/w32-dev.mk index 3561229..8ddbfb0 100644 --- a/builds/windows/w32-dev.mk +++ b/builds/windows/w32-dev.mk @@ -5,7 +5,7 @@ # -# Copyright 1996-2000, 2003, 2006, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-gcc.mk b/builds/windows/w32-gcc.mk index 3bbdd3c..04097d2 100644 --- a/builds/windows/w32-gcc.mk +++ b/builds/windows/w32-gcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-icc.mk b/builds/windows/w32-icc.mk index 44d26bd..66a4dcb 100644 --- a/builds/windows/w32-icc.mk +++ b/builds/windows/w32-icc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2005, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-intl.mk b/builds/windows/w32-intl.mk index 0f3e22b..14ee7ed 100644 --- a/builds/windows/w32-intl.mk +++ b/builds/windows/w32-intl.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-lcc.mk b/builds/windows/w32-lcc.mk index 8bd5b56..687c87f 100644 --- a/builds/windows/w32-lcc.mk +++ b/builds/windows/w32-lcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-mingw32.mk b/builds/windows/w32-mingw32.mk index b35dbb0..03963b3 100644 --- a/builds/windows/w32-mingw32.mk +++ b/builds/windows/w32-mingw32.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-vcc.mk b/builds/windows/w32-vcc.mk index 95f7685..68370e6 100644 --- a/builds/windows/w32-vcc.mk +++ b/builds/windows/w32-vcc.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/w32-wat.mk b/builds/windows/w32-wat.mk index e1ddf66..01d6a9b 100644 --- a/builds/windows/w32-wat.mk +++ b/builds/windows/w32-wat.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2013 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/builds/windows/win32-def.mk b/builds/windows/win32-def.mk index 61af5df..6fd972f 100644 --- a/builds/windows/win32-def.mk +++ b/builds/windows/win32-def.mk @@ -3,7 +3,7 @@ # -# Copyright 1996-2000, 2003, 2005, 2006, 2013, 2014 by +# Copyright 1996-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/configure b/configure index 4d8a945..9a09a42 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright 2002-2006, 2008-2010, 2013 by +# Copyright 2002-2016 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, diff --git a/devel/ft2build.h b/devel/ft2build.h index 6cc34b7..d055f51 100644 --- a/devel/ft2build.h +++ b/devel/ft2build.h @@ -4,7 +4,7 @@ /* */ /* FreeType 2 build and setup macros (development version). */ /* */ -/* Copyright 1996-2001, 2003, 2006, 2013 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,14 +27,14 @@ * */ -#ifndef __FT2BUILD_H__ -#define __FT2BUILD_H__ +#ifndef FT2BUILD_H_ +#define FT2BUILD_H_ #define FT_CONFIG_OPTIONS_H -#include +#include -#endif /* __FT2BUILD_H__ */ +#endif /* FT2BUILD_H_ */ /* END */ diff --git a/devel/ftoption.h b/devel/ftoption.h index 10027bb..d20df81 100644 --- a/devel/ftoption.h +++ b/devel/ftoption.h @@ -4,7 +4,7 @@ /* */ /* User-selectable configuration macros (specification only). */ /* */ -/* Copyright 1996-2014 by */ +/* Copyright 1996-2016 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -16,8 +16,8 @@ /***************************************************************************/ -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ +#ifndef FTOPTION_H_ +#define FTOPTION_H_ #include @@ -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/config/ftoption.h', where `$BUILD' is the */ - /* name of a directory that is included _before_ the FreeType include */ - /* path during compilation. */ + /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ + /* is the name of a directory that is included _before_ the FreeType */ + /* include path during compilation. */ /* */ /* The default FreeType Makefiles and Jamfiles use the build */ /* directory `builds/' 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 */ - /* #include */ + /* #include */ /* */ /* 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 . */ + /* default, this file is . */ /* */ /* We highly recommend using the third method whenever possible. */ /* */ @@ -205,6 +205,17 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ + /* Define to disable the use of file stream functions and types, FILE, */ + /* fopen() etc. Enables the use of smaller system libraries on embedded */ + /* systems that have multiple system libraries, some with or without */ + /* file stream support, in the cases where file stream support is not */ + /* necessary such as memory loading of font files. */ + /* */ +/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */ + + + /*************************************************************************/ + /* */ /* PNG bitmap support. */ /* */ /* FreeType now handles loading color bitmap glyphs in the PNG format. */ @@ -232,17 +243,6 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ - /* 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 */ @@ -378,10 +378,6 @@ FT_BEGIN_HEADER /* 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 @@ -435,6 +431,8 @@ FT_BEGIN_HEADER /* af_glyph_hints_dump_points */ /* af_glyph_hints_dump_segments */ /* af_glyph_hints_dump_edges */ + /* af_glyph_hints_get_num_segments */ + /* af_glyph_hints_get_segment_offset */ /* */ /* As an argument, they use another global variable: */ /* */ @@ -588,86 +586,53 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* 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. */ + /* subpixel hinting support into the TrueType driver. This modifies the */ + /* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is */ + /* requested. */ /* */ - /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ - /* defined. */ + /* In particular, it modifies the bytecode interpreter to interpret (or */ + /* not) instructions in a certain way so that all TrueType fonts look */ + /* like they do in a Windows ClearType (DirectWrite) environment. See */ + /* [1] for a technical overview on what this means. See `ttinterp.h' */ + /* for more details on the LEAN option. */ /* */ -#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. */ + /* There are three options. */ /* */ - /* - 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'). */ + /* 1. This option is associated with the `Infinality' moniker. */ + /* Contributed by an individual nicknamed Infinality with the goal of */ + /* making TrueType fonts render better than on Windows. A high */ + /* amount of configurability and flexibility, down to rules for */ + /* single glyphs in fonts, but also very slow. Its experimental and */ + /* slow nature and the original developer losing interest meant that */ + /* this option was never enabled in default builds. */ /* */ - /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ + /* 2. The new default mode for the TrueType driver. The Infinality code */ + /* base was stripped to the bare minimum and all configurability */ + /* removed in the name of speed and simplicity. The configurability */ + /* was mainly aimed at legacy fonts like Arial, Times New Roman, or */ + /* Courier. Legacy fonts are fonts that modify vertical stems to */ + /* achieve clean black-and-white bitmaps. The new mode focuses on */ + /* applying a minimal set of rules to all fonts indiscriminately so */ + /* that modern and web fonts render well while legacy fonts render */ + /* okay. */ /* */ - /* { */ - /* FT_Parameter parameter; */ - /* FT_Open_Args open_args; */ + /* 3. Compile both. */ /* */ + /* By undefining these, you get rendering behavior like on Windows */ + /* without ClearType, i.e., Windows XP without ClearType enabled and */ + /* Win9x (interpreter version v35). Or not, depending on how much */ + /* hinting blood and testing tears the font designer put into a given */ + /* font. If you define one or both subpixel hinting options, you can */ + /* switch between between v35 and the ones you define. */ /* */ - /* 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 = ¶meter; */ - /* */ - /* 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. */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ + /* [1] http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ /* */ -#define TT_CONFIG_OPTION_INTERPRETER_SWITCH +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2 */ +#define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) /*************************************************************************/ @@ -684,7 +649,7 @@ FT_BEGIN_HEADER /* fonts will not have them. */ /* */ /* http://www.microsoft.com/typography/otspec/glyf.htm */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ + /* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */ /* */ #undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED @@ -708,6 +673,24 @@ FT_BEGIN_HEADER /*************************************************************************/ + /* */ + /* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum */ + /* number of bytecode instructions executed for a single run of the */ + /* bytecode interpreter, needed to prevent infinite loops. You don't */ + /* want to change this except for very special situations (e.g., making */ + /* a library fuzzer spend less time to handle broken fonts). */ + /* */ + /* It is not expected that this value is ever modified by a configuring */ + /* script; instead, it gets surrounded with #ifndef ... #endif so that */ + /* the value can be set as a preprocessor option on the compiler's */ + /* command line. */ + /* */ +#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES +#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L +#endif + + + /*************************************************************************/ /*************************************************************************/ /**** ****/ /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ @@ -835,8 +818,10 @@ FT_BEGIN_HEADER /* 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. */ + /* This experimental option is active only if the rendering mode is */ + /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the */ + /* `warping' property of the auto-hinter (see file `ftautoh.h' for more */ + /* information; by default it is switched off). */ /* */ #define AF_CONFIG_OPTION_USE_WARPER @@ -851,14 +836,19 @@ FT_BEGIN_HEADER /* - * This macro is defined if either unpatented or native TrueType - * hinting is requested by the definitions above. + * This macro is defined if 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 + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1 +#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY +#endif + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2 +#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL +#endif #endif @@ -893,7 +883,7 @@ FT_BEGIN_HEADER FT_END_HEADER -#endif /* __FTOPTION_H__ */ +#endif /* FTOPTION_H_ */ /* END */ diff --git a/docs/CHANGES b/docs/CHANGES index bbc3110..c1db81b 100644 --- a/docs/CHANGES +++ b/docs/CHANGES @@ -1,4 +1,386 @@ +CHANGES BETWEEN 2.6.4 and 2.6.5 + + I. IMPORTANT BUG FIXES + + - Compilation works again on Mac OS X (bug introduced in version + 2.6.4). + + + I. IMPORTANT CHANGES + + - The new subpixel hinting mode is now disabled by default; it + will be enabled by default in the forthcoming 2.7.x series. + Main reason for reverting this feature is the principle of least + surprise: a sudden change in appearance of all fonts (even if + the rendering improves for almost all recent fonts) should not + be expected in a new micro version of a series. + + +====================================================================== + +CHANGES BETWEEN 2.6.3 and 2.6.4 + + I. IMPORTANT CHANGES + + - A new subpixel hinting mode has been contributed by Nikolaus + Waxweiler, which is now the default rendering mode for TrueType + fonts. It implements (almost everything of) version 40 of the + bytecode engine. + + The existing code base in FreeType (the `Infinality code') was + stripped to the bare minimum and all configurability removed in + the name of speed and simplicity. The configurability was + mainly aimed at legacy fonts like Arial, Times New Roman, or + Courier. [Legacy fonts are fonts that modify vertical stems to + achieve clean black-and-white bitmaps.] The new mode focuses on + applying a minimal set of rules to all fonts indiscriminately so + that modern and web fonts render well while legacy fonts render + okay. + + Activation of the subpixel hinting support can be controlled + with the `TT_CONFIG_OPTION_SUBPIXEL_HINTING' configuration + option at compile time: If set to value 1, you get the old + Infinality mode (which was never the default due to its + slowness). Value 2 activates the new subpixel hinting mode, and + value 3 activates both. The default is value 2. + + At run time, you can select the subpixel hinting mode with the + `interpreter-version' property (provided you have compiled in + the corresponding hinting mode); see `ftttdrv.h' for more. + + - Support for the following scripts has been added to the + auto-hinter. + + Armenian, Cherokee, Ethiopic, Georgian, Gujarati, Gurmukhi, + Malayalam, Sinhala, Tamil + + + II. MISCELLANEOUS + + - Type 42 fonts as created by LilyPond are now supported. + + - Minor rendering improvments in the auto-hinter. + + - For experimental reasons, the old CFF engine now supports all + CFF operators except `random', including the deprecated Multiple + Masters instructions. This allows the display of fonts like + `ITCGaramondMM-It.otf' (without font variations, though). + + - Another round of fixes to improve handling of invalid fonts. + + - The `ftgrid' demo program now displays the rendered pixels also; + this can be switched off with the `b' key. Selection of various + LCD filtering modes can be done with the `L' key. + + - The demo programs have been extended to allow selection of all + available TrueType bytecode engines. + + - A very early beta version of a new, Qt based demo program called + `ftinspect' is part of the source code bundle; it will + eventually supersede the other demo programs. Currently, you + have to compile it manually with `qmake; make'; note that many + features are still missing. + + +====================================================================== + +CHANGES BETWEEN 2.6.2 and 2.6.3 + + I. IMPORTANT CHANGES + + - Khmer, Myanmar, Bengali, and Kannada script support has been + added to the auto-hinter. + + + II. MISCELLANEOUS + + - Better support of Indic scripts like Devanagari by using a + top-to-bottom hinting flow. + + - All FreeType macros starting with two underscores have been + renamed to avoid a violation of both the C and C++ standards. + Example: Header macros of the form `__FOO_H__' are now called + `FOO_H_'. In most cases, this should be completely transparent + to the user. The exception to this is `__FTERRORS_H__', which + must be sometimes undefined by the user to get FreeType error + strings: Both this form and the new `FTERRORS_H_' macro are + accepted for backwards compatibility. + + - Minor improvements mainly to the Type 1 driver. + + - The new CFF engine now supports all Type 2 operators except + `random'. + + - The macro `_STANDALONE_', used for compiling the B/W and smooth + rasterizers as stand-alone modules, has been renamed to + `STANDALONE_', since macro names starting with an underscore and + followed by an uppercase letter are reserved in both C and C++. + + - Function `FT_Library_SetLcdFilterWeights' now also activates + custom LCD filter weights (instead of just adjusting them). + + - Support for `unpatented hinting' has been completely removed: + Consequently, the two functions `FT_Face_CheckTrueTypePatents' + and `FT_Face_SetUnpatentedHinting' now return always false, + doing nothing. + + - The `ftgamma' demo program has been modernized; the gamma grid + display has been moved from `ftview' to this program. + + - In `ftview', it is now possible to cycle through the available + LCD filtering modes. + + +====================================================================== + +CHANGES BETWEEN 2.6.1 and 2.6.2 + + I. IMPORTANT CHANGES + + - The auto-hinter now supports stem darkening, to be controlled by + the new `no-stem-darkening' and `darkening-parameters' + properties. This is an experimental feature contributed by + Nikolaus Waxweiler, and the interface might change in a future + release. + + - By default, stem darkening is now switched off (for both the CFF + engine and the auto-hinter). The main reason is that you need + linear alpha blending and gamma correction to get correct + rendering results, and the latter is not yet available in most + freely available rendering stacks like X11. Applying stem + darkening without proper gamma correction leads to far too dark + rendering results. + + - The meaning of `FT_RENDER_MODE_LIGHT' has been slightly + modified. It now essentially means `no hinting along the + horizontal axis'; in particular, no change of glyph advance + widths. Consequently, the auto-hinter is used for all scalable + font formats except for CFF. It is planned that other + font-specific rendering engines (TrueType, Type 1) will follow. + + + II. MISCELLANEOUS + + - The default LCD filter has been changed to be normalized and + color-balanced. + + - For better compatibility with FontConfig, function + `FT_Library_SetLcdFilter' accepts a new enumeration value + `FT_LCD_FILTER_LEGACY1' (which has the same meaning as + `FT_LCD_FILTER_LEGACY'). + + - A large number of bugs have been detected by using the libFuzzer + framework, which should further improve handling of invalid + fonts. Thanks again to Kostya Serebryany and Bungeman! + + - `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES', a new configuration + option, controls the maximum number of executed opcodes within a + bytecode program. You don't want to change this except for very + special situations (e.g., making a library fuzzer spend less + time to handle broken fonts). + + - The smooth renderer has been made faster. + + - The `ftstring' demo program now supports sub-pixel rendering; + use key `l' to cycle through the LCD modes. + + - The `ftstring' demo program now supports colour rendering; use + the `space' key to cycle through various colour combinations. + + - The graphical demo programs now use a default gamma value of 1.8 + (instead of 1.2). + + +====================================================================== + +CHANGES BETWEEN 2.6 and 2.6.1 + + I. IMPORTANT BUG FIXES + + - It turned out that for CFFs only the advance widths should be + taken from the `htmx' table, not the side bearings. This bug, + introduced in version 2.6.0, makes it necessary to upgrade if + you are using CFFs; otherwise, you get cropped glyphs with GUI + interfaces like GTK or Qt. + + - Accessing Type 42 fonts returned incorrect results if the glyph + order of the embedded TrueType font differs from the glyph order + of the Type 42 charstrings table. + + + II. IMPORTANT CHANGES + + - The header file layout has been changed (again), moving all + header files except `ft2build.h' into a subdirectory tree. + + Doing so reduces the possibility of header file name clashes + (e.g., FTGL's `FTGlyph.h' with FreeType's `ftglyph.h') on case + insensitive file systems like Mac OS X or Windows. + + Applications that use (a) the `freetype-config' script or + FreeType's `freetype2.pc' file for pkg-config to get the include + directory for the compiler, and (b) the documented way for + header inclusion like + + #include + #include FT_FREETYPE_H + ... + + don't need any change to the source code. + + - Simple access to named instances in GX variation fonts is now + available (in addition to the previous method via FreeType's MM + interface). In the `FT_Face' structure, bits 16-30 of the + `face_index' field hold the current named instance index for the + given face index, and bits 16-30 of `style_flags' contain the + number of instances for the given face index. `FT_Open_Face' + and friends also understand the extended bits of the face index + parameter. + + You need to enable TT_CONFIG_OPTION_GX_VAR_SUPPORT for this new + feature. Otherwise, bits 16-30 of the two fields are zero (or + are ignored). + + - Lao script support has been added to the auto-hinter. + + + III. MISCELLANEOUS + + - The auto-hinter's Arabic script support has been enhanced. + + - Superscript-like and subscript-like glyphs as used by various + phonetic alphabets like the IPA are now better supported by the + auto-hinter. + + - The TrueType bytecode interpreter now runs slightly faster. + + - Improved support for builds with cmake. + + - The function `FT_CeilFix' now always rounds towards plus + infinity. + + - The function `FT_FloorFix' now always rounds towards minus + infinity. + + - A new load flag `FT_LOAD_COMPUTE_METRICS' has been added; it + makes FreeType ignore pre-computed metrics, as needed by font + validating or font editing programs. Right now, only the + TrueType module supports it to ignore data from the `hdmx' + table. + + - Another round of bug fixes to better handle broken fonts, found + by Kostya Serebryany . + + +====================================================================== + +CHANGES BETWEEN 2.5.5 and 2.6 + + I. IMPORTANT CHANGES + + - Behdad Esfahbod contributed code for improved thread-safety, + which results in the following model. + + * An `FT_Face' object can only be safely used from one thread at + a time. + + * An `FT_Library' object can now be used without modification + from multiple threads at the same time. + + * `FT_Face' creation and destruction with the same `FT_Library' + object can only be done from one thread at a time. + + One can use a single `FT_Library' object across threads as long + as a mutex lock is used around `FT_New_Face' and `FT_Done_Face'. + Any calls to `FT_Load_Glyph' and similar API are safe and do not + need the lock to be held as long as the same `FT_Face' is not + used from multiple threads at the same time. + + - Thai script support has been added to the auto-hinter. + + - Arabic script support has been added to the auto-hinter. + + - Following OpenType version 1.7, advance widths and side bearing + values in CFFs (wrapped in an SFNT structure) are now always + taken from the `hmtx' table. + + - Following OpenType version 1.7, the PostScript font name of a + CFF font (wrapped in an SFNT structure) is now always taken from + the `name' table. This is also true for OpenType Collections + (i.e., TTCs using CFFs subfonts instead of TTFs), where it may + have a significant difference. + + - Fonts natively hinted for ClearType are now supported, properly + handling selector index 3 of the INSTCTRL bytecode instruction. + + - Major improvements to the GX TrueType variation font handling. + + + II. MISCELLANEOUS + + - A new auto-hinter property `warping' can switch on and off the + warping code if this experimental feature is compiled in (by + defining the AF_CONFIG_OPTION_USE_WARPER configuration option; + by default this option is now enabled but warping is switched + off). + + The AF_CONFIG_OPTION_USE_WARPER option itself is an old feature, + available since 2006. Warping only works in `light' + auto-hinting mode. The idea of the code is to slightly scale + and shift a glyph along the non-hinted dimension (which is + usually the horizontal axis) so that as much of its segments are + aligned (more or less) to the grid. To find out a glyph's + optimal scaling and shifting value, various parameter + combinations are tried and scored. + + See file `ftautoh.h' for more; the demo programs `ftdiff', + `ftview', and `ftgrid' can toggle warping with key `w'. + + - Some fields in the `FTC_ImageTypeRec' structure have been + changed from signed to unsigned type, which better reflects the + actual usage. It is also an additional means to protect against + malformed input. + + This change doesn't break the ABI; however, it might cause + compiler warnings. + + - Function `FT_Bitmap_New' has been renamed to `FT_Bitmap_Init', + since this name better reflects its function. For backwards + compatibility, the old function name is still available. + + - Function `FT_Get_X11_Font_Format' has been renamed to + `FT_Get_Font_Format', since this name better reflects its + function. For backwards compatibility, the old function name is + still available. + + Additionally, the header file macro for this function has been + renamed to `FT_FONT_FORMATS_H' (the old name `FT_XFREE86_H' is + retained for backwards compatibility). + + - Various improvements to the `ftgrid' demo program. + + . It can now display GX and MM fonts while interactively + manipulating the axes (with keys F2, F3, and F4). + + . Anti-aliasing rendering modes can now be selected (with keys + F5 and F6). + + . The display of point numbers can be toggled with key `D'. + + - Various improvements to the `ftdump' demo program. + + . It now displays information on MM and GX variation axes. + + . New command line option `-u' makes it output data in utf-8 + encoding. + + - The `ftmulti' demo program can now handle up to six MM or GX + axes. + + +====================================================================== + CHANGES BETWEEN 2.5.4 and 2.5.5 I. IMPORTANT BUG FIXES @@ -3458,7 +3840,7 @@ BETA-8 (RELEASE CANDIDATE) CHANGES automatically when needed. - Reformatted all modules source code in order to get rid of the - basic data types redifinitions (i.e. `TT_Int' instead of `FT_Int', + basic data types redefinitions (i.e. `TT_Int' instead of `FT_Int', `T1_Fixed' instead of `FT_Fixed'). Hence the format-specific prefixes like `TT_', `T1_', `T2_' and `CID_' are only used for relevant structures. @@ -4159,7 +4541,7 @@ Extensions support: ------------------------------------------------------------------------ -Copyright 2000-2013 by +Copyright 2000-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/CUSTOMIZE b/docs/CUSTOMIZE index dfadb46..e8817b7 100644 --- a/docs/CUSTOMIZE +++ b/docs/CUSTOMIZE @@ -8,7 +8,7 @@ How to customize the compilation of the library I. Configuration macros - The file found in `include/config/ftoption.h' contains a list of + The file `include/freetype/config/ftoption.h' contains a list of commented configuration macros that can be toggled by developers to indicate which features should be active while building the library. @@ -35,9 +35,9 @@ II. Modules list can keep the source files `clean'. If you don't use GNU make you have to manually edit the file - `include/config/ftmodule.h' (which is *not* used with if compiled - with GNU make) to add or remove the drivers and components you want - to compile into the library. See `INSTALL.ANY' for more + `include/freetype/config/ftmodule.h' (which is *not* used with if + compiled with GNU make) to add or remove the drivers and components + you want to compile into the library. See `INSTALL.ANY' for more information. @@ -95,8 +95,9 @@ IV. Overriding default configuration and module headers #include FT_CONFIG_OPTIONS_H #include FT_CONFIG_MODULES_H - are compiled. Their default values being and - , you can do something like: + are compiled. Their default values being + and , you + can do something like: custom/ config/ @@ -116,15 +117,15 @@ IV. Overriding default configuration and module headers name the configuration headers. To do so, you need a custom `ft2build.h' whose content can be as simple as: - #ifndef __FT2_BUILD_MY_PLATFORM_H__ - #define __FT2_BUILD_MY_PLATFORM_H__ + #ifndef FT2_BUILD_MY_PLATFORM_H_ + #define FT2_BUILD_MY_PLATFORM_H_ #define FT_CONFIG_OPTIONS_H #define FT_CONFIG_MODULES_H - #include + #include - #endif /* __FT2_BUILD_MY_PLATFORM_H__ */ + #endif /* FT2_BUILD_MY_PLATFORM_H_ */ Place those files in a separate directory, e.g., @@ -138,7 +139,7 @@ IV. Overriding default configuration and module headers ---------------------------------------------------------------------- -Copyright 2003, 2005, 2006, 2012, 2013 by +Copyright 2003-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/DEBUG b/docs/DEBUG index d8c79d1..29e1072 100644 --- a/docs/DEBUG +++ b/docs/DEBUG @@ -191,7 +191,7 @@ behaviour of FreeType at runtime. ------------------------------------------------------------------------ -Copyright 2002-2005, 2009, 2013 by +Copyright 2002-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/FTL.TXT b/docs/FTL.TXT index bbaba33..433ab06 100644 --- a/docs/FTL.TXT +++ b/docs/FTL.TXT @@ -48,7 +48,7 @@ Introduction encourage you to use the following text: """ - Portions of this software are copyright © The FreeType + Portions of this software are copyright © The FreeType Project (www.freetype.org). All rights reserved. """ diff --git a/docs/INSTALL b/docs/INSTALL index 456b76d..5155a4b 100644 --- a/docs/INSTALL +++ b/docs/INSTALL @@ -75,8 +75,8 @@ II. Custom builds of the library ---------------------------------------------------------------------- -Copyright 2000-2008, 2010-2011, 2013 -by David Turner, Robert Wilhelm, and Werner Lemberg. +Copyright 2000-2016 by +David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, modified, and distributed under the terms of the FreeType project diff --git a/docs/INSTALL.ANY b/docs/INSTALL.ANY index 8aa394f..aae2773 100644 --- a/docs/INSTALL.ANY +++ b/docs/INSTALL.ANY @@ -16,8 +16,8 @@ I. Standard procedure which are not correctly supported by this compiler while being ISO C compliant! - * You need to add the directories `freetype2/include' to your - include path when compiling the library. + * You need to add the directory `include' to your include path when + compiling the library. * FreeType 2 is made of several components; each of them is located in a subdirectory of `freetype2/src'. For example, @@ -39,6 +39,7 @@ I. Standard procedure src/base/ftbdf.c -- optional, see src/base/ftbitmap.c -- optional, see src/base/ftcid.c -- optional, see + src/base/ftfntfmt.c -- optional, see src/base/ftfstype.c -- optional src/base/ftgasp.c -- optional, see src/base/ftgxval.c -- optional, see @@ -51,7 +52,6 @@ I. Standard procedure src/base/ftsynth.c -- optional, see src/base/fttype1.c -- optional, see src/base/ftwinfnt.c -- optional, see - src/base/ftxf86.c -- optional, see src/base/ftmac.c -- only on the Macintosh @@ -103,9 +103,9 @@ I. Standard procedure `type1cid.c' needs `psaux.c', `pshinter.c', and `psnames.c' `type42.c' needs `truetype.c' - To use `ftbzip2.c', an application must be linked with a library - which implements bzip2 support (and the bzip2 header files must - be available also during compilation). + Please consult the central `include/freetype/config/ftoption.h' + configuration file for details on additional libraries necessary + for some optional features. Read the file `CUSTOMIZE' in case you want to compile only a subset @@ -132,10 +132,10 @@ II. Support for flat-directory compilation 2. Compile sources - cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftsystem.c - cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftinit.c - cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftdebug.c - cc -c -Ifreetype2/include -DFT2_BUILD_LIBRARY ftbase.c + cc -c -Iinclude -DFT2_BUILD_LIBRARY ftsystem.c + cc -c -Iinclude -DFT2_BUILD_LIBRARY ftinit.c + cc -c -Iinclude -DFT2_BUILD_LIBRARY ftdebug.c + cc -c -Iinclude -DFT2_BUILD_LIBRARY ftbase.c etc. You don't need to define the FT_FLAT_COMPILATION macro (as this @@ -143,7 +143,7 @@ II. Support for flat-directory compilation ---------------------------------------------------------------------- -Copyright 2003, 2005, 2006, 2009, 2010, 2013 by +Copyright 2003-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/INSTALL.CROSS b/docs/INSTALL.CROSS index d372adc..4285804 100644 --- a/docs/INSTALL.CROSS +++ b/docs/INSTALL.CROSS @@ -163,8 +163,8 @@ procedure. ---------------------------------------------------------------------- -Copyright 2006, 2008, 2012, 2014 by suzuki toshiya -David Turner, Robert Wilhelm, and Werner Lemberg. +Copyright 2006-2016 by +suzuki toshiya, David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/INSTALL.GNU b/docs/INSTALL.GNU index 3b9e0a2..f1eb081 100644 --- a/docs/INSTALL.GNU +++ b/docs/INSTALL.GNU @@ -148,7 +148,7 @@ instructions in the file `INSTALL.UNIX' instead. ---------------------------------------------------------------------- -Copyright 2003-2006, 2008, 2013, 2014 by +Copyright 2003-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/INSTALL.UNIX b/docs/INSTALL.UNIX index 251c749..b043883 100644 --- a/docs/INSTALL.UNIX +++ b/docs/INSTALL.UNIX @@ -102,7 +102,7 @@ or MSys on Win32: ---------------------------------------------------------------------- -Copyright 2003-2007, 2013, 2014 by +Copyright 2003-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/INSTALL.VMS b/docs/INSTALL.VMS index 994e566..ef371d7 100644 --- a/docs/INSTALL.VMS +++ b/docs/INSTALL.VMS @@ -49,7 +49,7 @@ V7.2-1. ------------------------------------------------------------------------ -Copyright 2000, 2004 by +Copyright 2000-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/LICENSE.TXT b/docs/LICENSE.TXT index 99dc342..af5a1c5 100644 --- a/docs/LICENSE.TXT +++ b/docs/LICENSE.TXT @@ -23,9 +23,11 @@ any of your projects or products. GPL. Note that the FTL is incompatible with GPLv2 due to its advertisement clause. -The contributed BDF and PCF drivers come with a license similar to that +The contributed BDF and PCF drivers come with a license similar to that of the X Window System. It is compatible to the above two licenses (see -file src/bdf/README and src/pcf/README). +file src/bdf/README and src/pcf/README). The same holds for the files +`fthash.c' and `fthash.h'; their code was part of the BDF driver in +earlier FreeType versions. The gzip module uses the zlib license (see src/gzip/zlib.h) which too is compatible to the above two licenses. diff --git a/docs/TODO b/docs/TODO index be60d6f..4aa3f09 100644 --- a/docs/TODO +++ b/docs/TODO @@ -27,7 +27,7 @@ Other bugs have been registered at the savannah bugzilla of FreeType. ------------------------------------------------------------------------ -Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 by +Copyright 2001-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/VERSION.DLL b/docs/VERSIONS.TXT similarity index 87% rename from docs/VERSION.DLL rename to docs/VERSIONS.TXT index dd49261..c5a57e7 100644 --- a/docs/VERSION.DLL +++ b/docs/VERSIONS.TXT @@ -45,13 +45,19 @@ The release number is also available at *runtime* through the 2. History ---------- -The following table gives, for all releases since 2.3.0, the +The following table gives, for all releases since 2.4.0, the corresponding libtool number, as well as the shared object number found on _most_ systems, but not all of them: release libtool so ------------------------------- + 2.6.5 18.5.12 6.12.5 + 2.6.4 18.4.12 6.12.4 + 2.6.3 18.3.12 6.12.3 + 2.6.2 18.2.12 6.12.2 + 2.6.1 18.1.12 6.12.1 + 2.6.0 18.0.12 6.12.0 2.5.5 17.4.11 6.11.4 2.5.4 17.3.11 6.11.3 2.5.3 17.2.11 6.11.2 @@ -71,19 +77,6 @@ on _most_ systems, but not all of them: 2.4.2 12.0.6 6.6.0 2.4.1 11.1.5 6.5.1 2.4.0 11.0.5 6.5.0 - 2.3.12 10.0.4 6.4.0 - 2.3.11 9.22.3 6.3.22 - 2.3.10 9.21.3 6.3.21 - 2.3.9 9.20.3 6.3.20 - 2.3.8 9.19.3 6.3.19 - 2.3.7 9.18.3 6.3.18 - 2.3.6 9.17.3 6.3.17 - 2.3.5 9.16.3 6.3.16 - 2.3.4 9.15.3 6.3.15 - 2.3.3 9.14.3 6.3.14 - 2.3.2 9.13.3 6.3.13 - 2.3.1 9.12.3 6.3.12 - 2.3.0 9.11.3 6.3.11 3. Autoconf Code Fragment @@ -115,7 +108,7 @@ other release numbers. ------------------------------------------------------------------------ -Copyright 2002-2014 by +Copyright 2002-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, @@ -125,4 +118,4 @@ file you indicate that you have read the license and understand and accept it fully. ---- end of VERSION.DLL --- +--- end of VERSIONS.TXT --- diff --git a/docs/formats.txt b/docs/formats.txt index aed885c..4966bd7 100644 --- a/docs/formats.txt +++ b/docs/formats.txt @@ -122,8 +122,8 @@ MAC --- PS TYPE_1 --- type1 T1_SPEC.pdf probably never supported) ---- --- WINFNT --- --- winfonts MS Windows 3 Developer's Notes ---- --- WINFNT VECTOR --- --- MS Windows 3 Developer's Notes +--- --- WINFNT --- --- winfonts Windows developer's notes [5] +--- --- WINFNT VECTOR --- --- Windows developer's notes [5] [1] Support should be rather simple since this is identical to `CFF' but @@ -159,9 +159,13 @@ MAC --- PS TYPE_1 --- type1 T1_SPEC.pdf http://fontforge.sourceforge.net/pcf-format.html +[5] This is from MS Windows 3; see Microsoft's Knowledge Base article at + + http://support.microsoft.com/kb/65123 + ------------------------------------------------------------------------ -Copyright 2004, 2005, 2008, 2009, 2010 by +Copyright 2004-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/freetype-config.1 b/docs/freetype-config.1 index 7b4a118..63e5aed 100644 --- a/docs/freetype-config.1 +++ b/docs/freetype-config.1 @@ -1,4 +1,4 @@ -.TH FREETYPE-CONFIG 1 "December 2014" "FreeType 2.5.5" +.TH FREETYPE-CONFIG 1 "July 2016" "FreeType 2.6.5" . . .SH NAME diff --git a/docs/raster.txt b/docs/raster.txt index 95d9e24..5e8df51 100644 --- a/docs/raster.txt +++ b/docs/raster.txt @@ -618,7 +618,7 @@ II. Rendering Technology ------------------------------------------------------------------------ -Copyright 2003, 2007 by +Copyright 2003-2016 by David Turner, Robert Wilhelm, and Werner Lemberg. This file is part of the FreeType project, and may only be used, diff --git a/docs/reference/ft2-auto_hinter.html b/docs/reference/ft2-auto_hinter.html index 71dede4..3a78ad9 100644 --- a/docs/reference/ft2-auto_hinter.html +++ b/docs/reference/ft2-auto_hinter.html @@ -3,7 +3,7 @@ -FreeType-2.5.5 API Reference +FreeType-2.6.5 API Reference + + + +

    +

    FreeType-2.6.5 API Reference

    + +

    Error Code Values

    +

    Synopsis

    + + +
    FT_Err_XXX
    + + +

    The list below is taken verbatim from the file ‘fterrdef.h’ (loaded automatically by including ‘FT_FREETYPE_H’). The first argument of the ‘FT_ERROR_DEF_’ macro is the error label; by default, the prefix ‘FT_Err_’ gets added so that you get error names like ‘FT_Err_Cannot_Open_Resource’. The second argument is the error code, and the last argument an error string, which is not used by FreeType.

    +

    Within your application you should only use error names and never its numeric values! The latter might (and actually do) change in forthcoming FreeType versions.

    +

    Macro ‘FT_NOERRORDEF_’ defines ‘FT_Err_Ok’, which is always zero. See the ‘Error Enumerations’ subsection how to automatically generate a list of error strings.

    + +
    +

    FT_Err_XXX

    +
    +  /* generic errors */
    +
    +  FT_NOERRORDEF_( Ok,                                        0x00,
    +                  "no error" )
    +
    +  FT_ERRORDEF_( Cannot_Open_Resource,                        0x01,
    +                "cannot open resource" )
    +  FT_ERRORDEF_( Unknown_File_Format,                         0x02,
    +                "unknown file format" )
    +  FT_ERRORDEF_( Invalid_File_Format,                         0x03,
    +                "broken file" )
    +  FT_ERRORDEF_( Invalid_Version,                             0x04,
    +                "invalid FreeType version" )
    +  FT_ERRORDEF_( Lower_Module_Version,                        0x05,
    +                "module version is too low" )
    +  FT_ERRORDEF_( Invalid_Argument,                            0x06,
    +                "invalid argument" )
    +  FT_ERRORDEF_( Unimplemented_Feature,                       0x07,
    +                "unimplemented feature" )
    +  FT_ERRORDEF_( Invalid_Table,                               0x08,
    +                "broken table" )
    +  FT_ERRORDEF_( Invalid_Offset,                              0x09,
    +                "broken offset within table" )
    +  FT_ERRORDEF_( Array_Too_Large,                             0x0A,
    +                "array allocation size too large" )
    +  FT_ERRORDEF_( Missing_Module,                              0x0B,
    +                "missing module" )
    +  FT_ERRORDEF_( Missing_Property,                            0x0C,
    +                "missing property" )
    +
    +  /* glyph/character errors */
    +
    +  FT_ERRORDEF_( Invalid_Glyph_Index,                         0x10,
    +                "invalid glyph index" )
    +  FT_ERRORDEF_( Invalid_Character_Code,                      0x11,
    +                "invalid character code" )
    +  FT_ERRORDEF_( Invalid_Glyph_Format,                        0x12,
    +                "unsupported glyph image format" )
    +  FT_ERRORDEF_( Cannot_Render_Glyph,                         0x13,
    +                "cannot render this glyph format" )
    +  FT_ERRORDEF_( Invalid_Outline,                             0x14,
    +                "invalid outline" )
    +  FT_ERRORDEF_( Invalid_Composite,                           0x15,
    +                "invalid composite glyph" )
    +  FT_ERRORDEF_( Too_Many_Hints,                              0x16,
    +                "too many hints" )
    +  FT_ERRORDEF_( Invalid_Pixel_Size,                          0x17,
    +                "invalid pixel size" )
    +
    +  /* handle errors */
    +
    +  FT_ERRORDEF_( Invalid_Handle,                              0x20,
    +                "invalid object handle" )
    +  FT_ERRORDEF_( Invalid_Library_Handle,                      0x21,
    +                "invalid library handle" )
    +  FT_ERRORDEF_( Invalid_Driver_Handle,                       0x22,
    +                "invalid module handle" )
    +  FT_ERRORDEF_( Invalid_Face_Handle,                         0x23,
    +                "invalid face handle" )
    +  FT_ERRORDEF_( Invalid_Size_Handle,                         0x24,
    +                "invalid size handle" )
    +  FT_ERRORDEF_( Invalid_Slot_Handle,                         0x25,
    +                "invalid glyph slot handle" )
    +  FT_ERRORDEF_( Invalid_CharMap_Handle,                      0x26,
    +                "invalid charmap handle" )
    +  FT_ERRORDEF_( Invalid_Cache_Handle,                        0x27,
    +                "invalid cache manager handle" )
    +  FT_ERRORDEF_( Invalid_Stream_Handle,                       0x28,
    +                "invalid stream handle" )
    +
    +  /* driver errors */
    +
    +  FT_ERRORDEF_( Too_Many_Drivers,                            0x30,
    +                "too many modules" )
    +  FT_ERRORDEF_( Too_Many_Extensions,                         0x31,
    +                "too many extensions" )
    +
    +  /* memory errors */
    +
    +  FT_ERRORDEF_( Out_Of_Memory,                               0x40,
    +                "out of memory" )
    +  FT_ERRORDEF_( Unlisted_Object,                             0x41,
    +                "unlisted object" )
    +
    +  /* stream errors */
    +
    +  FT_ERRORDEF_( Cannot_Open_Stream,                          0x51,
    +                "cannot open stream" )
    +  FT_ERRORDEF_( Invalid_Stream_Seek,                         0x52,
    +                "invalid stream seek" )
    +  FT_ERRORDEF_( Invalid_Stream_Skip,                         0x53,
    +                "invalid stream skip" )
    +  FT_ERRORDEF_( Invalid_Stream_Read,                         0x54,
    +                "invalid stream read" )
    +  FT_ERRORDEF_( Invalid_Stream_Operation,                    0x55,
    +                "invalid stream operation" )
    +  FT_ERRORDEF_( Invalid_Frame_Operation,                     0x56,
    +                "invalid frame operation" )
    +  FT_ERRORDEF_( Nested_Frame_Access,                         0x57,
    +                "nested frame access" )
    +  FT_ERRORDEF_( Invalid_Frame_Read,                          0x58,
    +                "invalid frame read" )
    +
    +  /* raster errors */
    +
    +  FT_ERRORDEF_( Raster_Uninitialized,                        0x60,
    +                "raster uninitialized" )
    +  FT_ERRORDEF_( Raster_Corrupted,                            0x61,
    +                "raster corrupted" )
    +  FT_ERRORDEF_( Raster_Overflow,                             0x62,
    +                "raster overflow" )
    +  FT_ERRORDEF_( Raster_Negative_Height,                      0x63,
    +                "negative height while rastering" )
    +
    +  /* cache errors */
    +
    +  FT_ERRORDEF_( Too_Many_Caches,                             0x70,
    +                "too many registered caches" )
    +
    +  /* TrueType and SFNT errors */
    +
    +  FT_ERRORDEF_( Invalid_Opcode,                              0x80,
    +                "invalid opcode" )
    +  FT_ERRORDEF_( Too_Few_Arguments,                           0x81,
    +                "too few arguments" )
    +  FT_ERRORDEF_( Stack_Overflow,                              0x82,
    +                "stack overflow" )
    +  FT_ERRORDEF_( Code_Overflow,                               0x83,
    +                "code overflow" )
    +  FT_ERRORDEF_( Bad_Argument,                                0x84,
    +                "bad argument" )
    +  FT_ERRORDEF_( Divide_By_Zero,                              0x85,
    +                "division by zero" )
    +  FT_ERRORDEF_( Invalid_Reference,                           0x86,
    +                "invalid reference" )
    +  FT_ERRORDEF_( Debug_OpCode,                                0x87,
    +                "found debug opcode" )
    +  FT_ERRORDEF_( ENDF_In_Exec_Stream,                         0x88,
    +                "found ENDF opcode in execution stream" )
    +  FT_ERRORDEF_( Nested_DEFS,                                 0x89,
    +                "nested DEFS" )
    +  FT_ERRORDEF_( Invalid_CodeRange,                           0x8A,
    +                "invalid code range" )
    +  FT_ERRORDEF_( Execution_Too_Long,                          0x8B,
    +                "execution context too long" )
    +  FT_ERRORDEF_( Too_Many_Function_Defs,                      0x8C,
    +                "too many function definitions" )
    +  FT_ERRORDEF_( Too_Many_Instruction_Defs,                   0x8D,
    +                "too many instruction definitions" )
    +  FT_ERRORDEF_( Table_Missing,                               0x8E,
    +                "SFNT font table missing" )
    +  FT_ERRORDEF_( Horiz_Header_Missing,                        0x8F,
    +                "horizontal header (hhea) table missing" )
    +  FT_ERRORDEF_( Locations_Missing,                           0x90,
    +                "locations (loca) table missing" )
    +  FT_ERRORDEF_( Name_Table_Missing,                          0x91,
    +                "name table missing" )
    +  FT_ERRORDEF_( CMap_Table_Missing,                          0x92,
    +                "character map (cmap) table missing" )
    +  FT_ERRORDEF_( Hmtx_Table_Missing,                          0x93,
    +                "horizontal metrics (hmtx) table missing" )
    +  FT_ERRORDEF_( Post_Table_Missing,                          0x94,
    +                "PostScript (post) table missing" )
    +  FT_ERRORDEF_( Invalid_Horiz_Metrics,                       0x95,
    +                "invalid horizontal metrics" )
    +  FT_ERRORDEF_( Invalid_CharMap_Format,                      0x96,
    +                "invalid character map (cmap) format" )
    +  FT_ERRORDEF_( Invalid_PPem,                                0x97,
    +                "invalid ppem value" )
    +  FT_ERRORDEF_( Invalid_Vert_Metrics,                        0x98,
    +                "invalid vertical metrics" )
    +  FT_ERRORDEF_( Could_Not_Find_Context,                      0x99,
    +                "could not find context" )
    +  FT_ERRORDEF_( Invalid_Post_Table_Format,                   0x9A,
    +                "invalid PostScript (post) table format" )
    +  FT_ERRORDEF_( Invalid_Post_Table,                          0x9B,
    +                "invalid PostScript (post) table" )
    +
    +  /* CFF, CID, and Type 1 errors */
    +
    +  FT_ERRORDEF_( Syntax_Error,                                0xA0,
    +                "opcode syntax error" )
    +  FT_ERRORDEF_( Stack_Underflow,                             0xA1,
    +                "argument stack underflow" )
    +  FT_ERRORDEF_( Ignore,                                      0xA2,
    +                "ignore" )
    +  FT_ERRORDEF_( No_Unicode_Glyph_Name,                       0xA3,
    +                "no Unicode glyph name found" )
    +  FT_ERRORDEF_( Glyph_Too_Big,                               0xA4,
    +                "glyph too big for hinting" )
    +
    +  /* BDF errors */
    +
    +  FT_ERRORDEF_( Missing_Startfont_Field,                     0xB0,
    +                "`STARTFONT' field missing" )
    +  FT_ERRORDEF_( Missing_Font_Field,                          0xB1,
    +                "`FONT' field missing" )
    +  FT_ERRORDEF_( Missing_Size_Field,                          0xB2,
    +                "`SIZE' field missing" )
    +  FT_ERRORDEF_( Missing_Fontboundingbox_Field,               0xB3,
    +                "`FONTBOUNDINGBOX' field missing" )
    +  FT_ERRORDEF_( Missing_Chars_Field,                         0xB4,
    +                "`CHARS' field missing" )
    +  FT_ERRORDEF_( Missing_Startchar_Field,                     0xB5,
    +                "`STARTCHAR' field missing" )
    +  FT_ERRORDEF_( Missing_Encoding_Field,                      0xB6,
    +                "`ENCODING' field missing" )
    +  FT_ERRORDEF_( Missing_Bbx_Field,                           0xB7,
    +                "`BBX' field missing" )
    +  FT_ERRORDEF_( Bbx_Too_Big,                                 0xB8,
    +                "`BBX' too big" )
    +  FT_ERRORDEF_( Corrupted_Font_Header,                       0xB9,
    +                "Font header corrupted or missing fields" )
    +  FT_ERRORDEF_( Corrupted_Font_Glyphs,                       0xBA,
    +                "Font glyphs corrupted or missing fields" )
    +
    +
    +
    + + + diff --git a/docs/reference/ft2-error_enumerations.html b/docs/reference/ft2-error_enumerations.html new file mode 100644 index 0000000..c56280e --- /dev/null +++ b/docs/reference/ft2-error_enumerations.html @@ -0,0 +1,144 @@ + + + + +FreeType-2.6.5 API Reference + + + + + +

    FreeType-2.6.5 API Reference

    + +

    Error Enumerations

    + +

    The header file ‘fterrors.h’ (which is automatically included by ‘freetype.h’ defines the handling of FreeType's enumeration constants. It can also be used to generate error message strings with a small macro trick explained below.

    +

    Error Formats

    +

    The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be defined in ‘ftoption.h’ in order to make the higher byte indicate the module where the error has happened (this is not compatible with standard builds of FreeType&nbsp;2, however). See the file ‘ftmoderr.h’ for more details.

    +

    Error Message Strings

    +

    Error definitions are set up with special macros that allow client applications to build a table of error message strings. The strings are not included in a normal build of FreeType&nbsp;2 to save space (most client applications do not use them).

    +

    To do so, you have to define the following macros before including this file.

    +
    +  FT_ERROR_START_LIST
    +
    +

    This macro is called before anything else to define the start of the error list. It is followed by several FT_ERROR_DEF calls.

    +
    +  FT_ERROR_DEF( e, v, s )
    +
    +

    This macro is called to define one single error. ‘e’ is the error code identifier (e.g., ‘Invalid_Argument’), ‘v’ is the error's numerical value, and ‘s’ is the corresponding error string.

    +
    +  FT_ERROR_END_LIST
    +
    +

    This macro ends the list.

    +

    Additionally, you have to undefine ‘FTERRORS_H_’ before #including this file.

    +

    Here is a simple example.

    +
    +  #undef FTERRORS_H_
    +  #define FT_ERRORDEF( e, v, s )  { e, s },
    +  #define FT_ERROR_START_LIST     {
    +  #define FT_ERROR_END_LIST       { 0, NULL } };
    +
    +  const struct
    +  {
    +    int          err_code;
    +    const char*  err_msg;
    +  } ft_errors[] =
    +
    +  #include FT_ERRORS_H
    +
    +

    Note that ‘FT_Err_Ok’ is not defined with ‘FT_ERRORDEF’ but with ‘FT_NOERRORDEF’; it is always zero.

    + + + diff --git a/docs/reference/ft2-font_formats.html b/docs/reference/ft2-font_formats.html index 508cee2..ef7dce8 100644 --- a/docs/reference/ft2-font_formats.html +++ b/docs/reference/ft2-font_formats.html @@ -3,7 +3,7 @@ -FreeType-2.5.5 API Reference +FreeType-2.6.5 API Reference